diff --git a/.circleci/config.yml b/.circleci/config.yml index b91a021d..232e5e9f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,13 +1,20 @@ -version: 2 +version: 2.1 +parameters: + run_automatedtesting: + default: false + type: boolean + run_basedeployment: + default: true + type: boolean defaults: &defaults docker: - image: circleci/python:2.7.18-stretch-browsers install_dependency: &install_dependency name: Installation of build and deployment dependencies. command: | - sudo apt install jq - sudo pip install awscli --upgrade - sudo pip install docker-compose + sudo apt install jq python3-pip + sudo pip3 install awscli --upgrade + # sudo pip install docker-compose install_deploysuite: &install_deploysuite name: Installation of install_deploysuite. command: | @@ -39,6 +46,17 @@ builddeploy_steps: &builddeploy_steps ./buildenv.sh -e $DEPLOY_ENV -b ${LOGICAL_ENV}-${APPNAME}-deployvar source buildenvvar ./master_deploy.sh -d ECS -e $DEPLOY_ENV -t latest -s ${LOGICAL_ENV}-global-appvar,${LOGICAL_ENV}-${APPNAME}-appvar -i ${APPNAME} + #testing code changes + if [[ true ]]; then + ./buildenv.sh -e $DEPLOY_ENV -b ${LOGICAL_ENV}-qa-v1-appvar + source buildenvvar + curl --request POST \ + --url https://circleci.com/api/v2/project/github/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/pipeline \ + --header "Circle-Token: ${QA_USER_TOKEN}" \ + --header 'content-type: application/json' \ + --data '{"branch":"'"$CIRCLE_BRANCH"'","parameters":{"run_automatedtesting":true , "run_basedeployment": false}}' + fi + jobs: # Build & Deploy against development backend "build-dev": @@ -57,9 +75,45 @@ jobs: APPNAME: "taas-apis" steps: *builddeploy_steps + "Run-Newman-Test": + docker: + - image: circleci/node:12 + environment: + DEPLOY_ENV: "DEV" + LOGICAL_ENV: "dev" + APPNAME: "taas-api" + - image: tray/dynamodb-local + command: "-inMemory -port 7777" + - image: elasticsearch:6.8.13 + environment: + discovery.type: "single-node" + steps: + - checkout + - setup_remote_docker + - run: *install_dependency + - run: *install_deploysuite + - run: + name: 'newman test' + no_output_timeout: 30m + command: | + ./awsconfiguration.sh $DEPLOY_ENV + source awsenvconf + ./buildenv.sh -e $DEPLOY_ENV -b ${LOGICAL_ENV}-global-appvar,${LOGICAL_ENV}-${APPNAME}-qa-appvar + source buildenvvar + npm install --loglevel verbose + cd mock + (npm run mock-challenge-api&) + (NODE_ENV=test npm start&) + npm run test:newman:clear + npm run test:newman + npm run test:newman:clear + - store_artifacts: + path: ./newman + workflows: version: 2 build: + when: << pipeline.parameters.run_basedeployment >> jobs: # Development builds are executed on "develop" branch only. - "build-dev": @@ -67,7 +121,7 @@ workflows: filters: branches: only: - - dev + - circleci # Production builds are exectuted only on tagged commits to the # master branch. @@ -76,3 +130,18 @@ workflows: filters: branches: only: master + + testingflow: + when: << pipeline.parameters.run_automatedtesting >> + jobs: + - Hold [Performance-Testing]: + type: approval + - "Run-Newman-Test": + context : org-global + requires: + - Hold [Performance-Testing] + filters: + branches: + only: + - circleci + - dev-circleci diff --git a/.gitignore b/.gitignore index bed42869..1337a945 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,9 @@ lib-cov coverage *.lcov +# Newman tests +newman + # nyc test coverage .nyc_output diff --git a/README.md b/README.md index 8746cd7f..89fece81 100644 --- a/README.md +++ b/README.md @@ -208,6 +208,7 @@ To be able to change and test `taas-es-processor` locally you can follow the nex | `npm run build` | Build source code for production run into `dist` folder. | | `npm run start` | Start app in the production mode from prebuilt `dist` folder. | | `npm run dev` | Start app in the development mode using `nodemon`. | +| `npm run start:test` | Start app in the test mode. | | `npm run test` | Run tests. | | `npm run init-db` | Initializes Database. | | `npm run create-index` | Create Elasticsearch indexes. Use `-- --force` flag to skip confirmation | @@ -230,6 +231,9 @@ To be able to change and test `taas-es-processor` locally you can follow the nex | `npm run migrate:undo` | Revert most recent migration. | | `npm run demo-email-notifications` | Listen to the Kafka events of email notification and render all the emails into `./out` folder. See [its readme](scripts/demo-email-notifications/README.md) for details. | | `npm run emsi-mapping` | mapping EMSI tags to topcoder skills | +| `npm run mock-api` | Starts the mock api | +| `npm test:newman` | Starts E2E tests with newman | +| `npm test:newman:clear` | Clears the data produced during E2E tests | ## Import and Export data @@ -334,9 +338,73 @@ The following parameters can be set in the config file or via env variables: ## Testing +### Unit Tests + - Run `npm run test` to execute unit tests - Run `npm run cov` to execute unit tests and generate coverage report. +### E2E Postman Tests + +1. In the `taas-apis` root directory create `.env` file with the next environment variables. + + ```bash + # Auth0 config + AUTH_SECRET= + AUTH0_URL= + AUTH0_AUDIENCE= + AUTH0_AUDIENCE_UBAHN= + AUTH0_CLIENT_ID= + AUTH0_CLIENT_SECRET= + AUTH_V2_URL= + AUTH_V2_CLIENT_ID= + AUTH_V3_URL= + # Following configs are used to generate tokens. + ADMIN_CREDENTIALS_USERNAME= + ADMIN_CREDENTIALS_PASSWORD= + MANAGER_CREDENTIALS_USERNAME= + MANAGER_CREDENTIALS_PASSWORD= + COPILOT_CREDENTIALS_USERNAME= + COPILOT_CREDENTIALS_PASSWORD= + USER_CREDENTIALS_USERNAME= + USER_CREDENTIALS_PASSWORD= + # Locally deployed services + ES_HOST=http://localhost:9200 + DATABASE_URL=postgres://postgres:postgres@localhost:5432/postgres + BUSAPI_URL=http://localhost:8002/v5 + MOCK_API_PORT=4000 + API_BASE_URL=http://localhost:3000 + TC_API=http://localhost:4000/v5 + TOPCODER_USERS_API=http://localhost:4000/v3/users + TOPCODER_MEMBERS_API=http://localhost:4000/v3/members + ``` +1. Install npm dependencies + ```bash + npm install + ``` +1. Start services and mock api and make sure taas-es-processor started properly by viewing logs. + + ```bash + npm run services:up + npm run mock-api + ``` +1. Start taas-api in test mode + ```bash + npm run start:test + ``` +1. Create Database tables and Elasticsearch indexes + ```bash + npm run init-db + npm run create-index + ``` +1. Run tests + ```bash + npm run test:newman + ``` +1. Clear test data produced during tests + ```bash + npm run test:newman:clear + ``` + ## 📋 Code Guidelines ### General Requirements diff --git a/app-constants.js b/app-constants.js index cc1db71f..faf85ba0 100644 --- a/app-constants.js +++ b/app-constants.js @@ -15,6 +15,8 @@ const FullManagePermissionRoles = [ ] const Scopes = { + // all resources + ALL_RESOURCES: 'all:resources', // job READ_JOB: 'read:taas-jobs', CREATE_JOB: 'create:taas-jobs', diff --git a/config/default.js b/config/default.js index 34470f55..697533d9 100644 --- a/config/default.js +++ b/config/default.js @@ -1,5 +1,6 @@ require('dotenv').config() module.exports = { + API_VERSION: process.env.API_VERSION || 'v5', // the log level, default is 'debug' LOG_LEVEL: process.env.LOG_LEVEL || 'debug', // the server port, default is 3000 diff --git a/config/test.js b/config/test.js index 761b6ada..e5262145 100644 --- a/config/test.js +++ b/config/test.js @@ -1,8 +1,24 @@ module.exports = { LOG_LEVEL: process.env.LOG_LEVEL || 'info', - AUTH0_URL: 'http://example.com/', - AUTH0_AUDIENCE: 'http://example.com/', - AUTH0_AUDIENCE_UBAHN: 'http://example.com/', - AUTH0_CLIENT_ID: 'fake_id', - AUTH0_CLIENT_SECRET: 'fake_secret' + AUTH_V2_URL: process.env.AUTH_V2_URL, + AUTH_V2_CLIENT_ID: process.env.AUTH_V2_CLIENT_ID, + AUTH_V3_URL: process.env.AUTH_V3_URL, + MOCK_API_PORT: process.env.MOCK_API_PORT || 4000, + ADMIN_CREDENTIALS_USERNAME: process.env.ADMIN_CREDENTIALS_USERNAME, + ADMIN_CREDENTIALS_PASSWORD: process.env.ADMIN_CREDENTIALS_PASSWORD, + MANAGER_CREDENTIALS_USERNAME: process.env.MANAGER_CREDENTIALS_USERNAME, + MANAGER_CREDENTIALS_PASSWORD: process.env.MANAGER_CREDENTIALS_PASSWORD, + COPILOT_CREDENTIALS_USERNAME: process.env.COPILOT_CREDENTIALS_USERNAME, + COPILOT_CREDENTIALS_PASSWORD: process.env.COPILOT_CREDENTIALS_PASSWORD, + USER_CREDENTIALS_USERNAME: process.env.USER_CREDENTIALS_USERNAME, + USER_CREDENTIALS_PASSWORD: process.env.USER_CREDENTIALS_PASSWORD, + WAIT_TIME: 6000, + AUTOMATED_TESTING_REPORTERS_FORMAT: process.env.AUTOMATED_TESTING_REPORTERS_FORMAT + ? process.env.AUTOMATED_TESTING_REPORTERS_FORMAT.split(',') + : ['cli', 'html'], + AUTOMATED_TESTING_NAME_PREFIX: process.env.AUTOMATED_TESTING_NAME_PREFIX || 'POSTMANE2E-', + API_BASE_URL: process.env.API_BASE_URL || 'http://localhost:3000/', + TC_API: process.env.TC_API || 'http://localhost:4000/v5', + TOPCODER_USERS_API: process.env.TOPCODER_USERS_API || 'http://localhost:4000/v3/users', + TOPCODER_MEMBERS_API: process.env.TOPCODER_MEMBERS_API || 'http://localhost:4000/v3/members' } diff --git a/env.sh b/env.sh new file mode 100644 index 00000000..2c44bf2c --- /dev/null +++ b/env.sh @@ -0,0 +1,29 @@ + +export AUTH_SECRET="UgL4(SEAM*~yc7L~vWrKKN&GHrwyc9N[@nVxm,X?#b4}7:xbzM" +export AUTH0_URL=https://topcoder-dev.auth0.com/oauth/token +export AUTH0_AUDIENCE=https://m2m.topcoder-dev.com/ +export AUTH0_AUDIENCE_UBAHN=https://u-bahn.topcoder.com +# export AUTH0_CLIENT_ID=gZ6jt50HYHLBf4vhxjUhXPZOR7Q5lk4k +# export AUTH0_CLIENT_SECRET=zb-OV1Rl3QpUkt4BexJ-Rs58jYMazCre1_97aU4PJIvQdVB-DmQIs61W3gCfPyP4 +export AUTH0_CLIENT_ID=4eNsa6sy080ijgw9c0ZnkM0X918Wjn5r +export AUTH0_CLIENT_SECRET=8sE_zRyPiwlGAa8m3V6vy9o6w6AN3YMdLZGs9ESV-kLRcmVwkRUZrOJ4x1o2nJ9Z +export BUSAPI_URL=http://localhost:8002/v5 +export AUTH_V2_URL=https://topcoder-dev.auth0.com/oauth/ro +export AUTH_V2_CLIENT_ID=JFDo7HMkf0q2CkVFHojy3zHWafziprhT +export AUTH_V3_URL=https://api.topcoder-dev.com/v3/authorizations +export ADMIN_CREDENTIALS_USERNAME=mess +export ADMIN_CREDENTIALS_PASSWORD=appirio123 +export MANAGER_CREDENTIALS_USERNAME=mess +export MANAGER_CREDENTIALS_PASSWORD=appirio123 +export COPILOT_CREDENTIALS_USERNAME=TCConnCopilot +export COPILOT_CREDENTIALS_PASSWORD=Appirio123 +export USER_CREDENTIALS_USERNAME=e2e20190909 +export USER_CREDENTIALS_PASSWORD=Password@123 +export ES_HOST=http://localhost:9200 +export DATABASE_URL=postgres://postgres:postgres@localhost:5432/postgres +export MOCK_API_PORT=4000 +export API_BASE_URL=https://api.topcoder-dev.com +export BASE_PATH= +export TC_API=https://api.topcoder-dev.com/v5 +export TOPCODER_USERS_API=http://localhost:4000/v3/users +export TOPCODER_MEMBERS_API=http://localhost:4000/v3/members diff --git a/mock-api/mock-api.js b/mock-api/mock-api.js new file mode 100644 index 00000000..68fccbcd --- /dev/null +++ b/mock-api/mock-api.js @@ -0,0 +1,133 @@ +/** + * The mock APIs. + */ + +const config = require('config') +const express = require('express') +const cors = require('cors') +const logger = require('../src/common/logger') +const _ = require('lodash') + +const skills = [{ name: 'EJB', id: '23e00d92-207a-4b5b-b3c9-4c5662644941' }, + { name: 'Dropwizard', id: '7d076384-ccf6-4e43-a45d-1b24b1e624aa' }, + { name: 'NGINX', id: 'cbac57a3-7180-4316-8769-73af64893158' }, + { name: 'Machine Learning', id: 'a2b4bc11-c641-4a19-9eb7-33980378f82e' }, + { name: 'Force.com', id: '94eae221-1158-4aa9-a6a4-50ecb0bbb8b6' }, + { name: 'Database', id: '2742759c-d0f9-4456-9482-e558aa960969' }, + { name: 'Winforms', id: 'b81859b6-4c50-45d8-afcb-71b35d16ea1e' }, + { name: 'User Interface (Ui)', id: '17b61c7a-98dc-498d-ba8d-c52b6677d73c' }, + { name: 'Photoshop', id: '30d01540-ebed-46b6-88e7-4c210de63862' }, + { name: 'Docker', id: 'bd417c10-d81a-45b6-85a9-d79efe86b9bb' }, + { name: '.NET', id: '4fce6ced-3610-443c-92eb-3f6d76b34f5c' }] + +const projects = [ + + { id: 111, name: 'Project-111', invites: 1, members: [{ userId: 40158994 }, { userId: 88774634 }] }, + { id: 112, name: 'Project-112', invites: 1, members: [{ userId: 40158994 }, { userId: 88774634 }] }, + { id: 113, name: 'Project-113', invites: 1, members: [{ userId: 40158994 }, { userId: 88774634 }] }, + { id: 222, name: 'Project-222', invites: 1, members: [] } +] + +const app = express() +app.set('port', config.MOCK_API_PORT || 4000) +app.use(cors()) +app.use(express.json()) +app.use((req, res, next) => { + logger.info({ component: 'Mock Api', message: `${req.method} ${req.url}` }) + next() +}) + +app.get('/v5/projects', (req, res) => { + let results = _.cloneDeep(projects) + if (req.query.name) { + results = _.filter(results, ['name', req.query.name]) + } + res.status(200).json(results) +}) + +app.get('/v5/projects/:projectId', (req, res) => { + const project = _.find(projects, project => project.id.toString() === req.params.projectId) + if (project) { + res.json(project) + } else { + res.status(404).end() + } +}) + +app.post('/v5/projects/:projectId/members', (req, res) => { + res.status(200).json(req.body) +}) + +app.get('/v5/projects/:projectId/members', (req, res) => { + const project = _.find(projects, project => project.id.toString() === req.params.projectId) + res.status(200).json(project.members) +}) + +app.delete('/v5/projects/:projectId/members/:memberId', (req, res) => { + const project = _.find(projects, project => project.id.toString() === req.params.projectId) + const member = _.find(project.members, member => member.userId.toString() === req.params.memberId) + if (member) { + res.status(204).end() + } else { res.status(404).end() } +}) + +app.get('/v5/projects/:projectId/invites', (req, res) => { + const project = _.find(projects, project => project.id.toString() === req.params.projectId) + res.status(200).json({ invites: project.invites }) +}) + +app.get('/v5/skills/:skillId', (req, res) => { + const foundSkill = _.find(skills, ['id', req.params.skillId]) + if (foundSkill) { + res.status(200).json(foundSkill) + } else { + res.status(404).end() + } +}) + +app.get('/v5/skills', (req, res) => { + res.status(200).json(skills) +}) + +app.get('/v5/users', (req, res) => { + res.status(200).json([{ id: '00000000-0000-0000-0000-000000000000' }]) +}) + +app.get('/v5/users/:userId', (req, res) => { + if (_.includes(['99999999-9999-9999-9999-999999999999'], req.params.userId)) { + res.status(404).end() + } else { + res.status(200).json({ id: req.params.userId, userId: req.params.userId, handle: 'userHandle', firstName: 'firstName', lastName: 'lastName' }) + } +}) + +app.get('/v5/members/:userHandle', (req, res) => { + res.status(200).json({ email: 'test@gmail.com', handle: req.params.userHandle }) +}) + +app.get('/v5/members', (req, res) => { + res.status(200).json([{ handleLower: 'userhandle' }]) +}) + +app.get('/v3/users', (req, res) => { + res.status(200).json({ result: { content: [{ email: 'test@gmail.com', firstName: 'firstName', lastName: 'lastName', handle: 'userhandle', id: 1 }] } }) +}) + +app.get('/v3/members/_search', (req, res) => { + res.status(200).json({ result: { content: [{ email: 'test@gmail.com', firstName: 'firstName', lastName: 'lastName', handle: 'userhandle', userId: 1 }] } }) +}) + +app.use((req, res) => { + res.status(404).json({ error: 'route not found' }) +}) + +app.use((err, req, res, next) => { + logger.logFullError(err, { component: 'Mock Api', signature: `${req.method}_${req.url}` }) + res.status(500).json({ + error: err.message + }) +}) + +app.listen(app.get('port'), '0.0.0.0', () => { + logger.info({ component: 'Mock Api', message: `Mock Api listening on port ${app.get('port')}` }) +}) diff --git a/package-lock.json b/package-lock.json index 4e7c0f1d..1a28436b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11396 +1,54 @@ { "name": "taas-apis", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "@elastic/elasticsearch": "7.9.1", - "@joi/date": "^2.0.1", - "@topcoder-platform/topcoder-bus-api-wrapper": "github:topcoder-platform/tc-bus-api-wrapper", - "async-mutex": "^0.3.2", - "aws-sdk": "^2.787.0", - "bottleneck": "^2.19.5", - "config": "^3.3.2", - "cors": "^2.8.5", - "date-fns": "^2.16.1", - "dotenv": "^8.2.0", - "express": "^4.17.1", - "express-interceptor": "^1.2.0", - "get-parameter-names": "^0.3.0", - "http-status": "^1.4.2", - "http-status-codes": "^2.1.4", - "joi": "^17.2.1", - "jsonwebtoken": "^8.5.1", - "lodash": "^4.17.20", - "moment": "^2.29.1", - "moment-timezone": "^0.5.33", - "node-schedule": "^2.0.0", - "pg": "^8.4.0", - "pg-hstore": "^2.3.3", - "prompt-confirm": "^2.0.4", - "retry": "^0.13.1", - "rewire": "^5.0.0", - "sequelize": "^6.3.5", - "stripe": "^8.168.0", - "superagent": "^6.1.0", - "tc-core-library-js": "github:appirio-tech/tc-core-library-js#v2.6", - "urijs": "^1.19.7", - "util": "^0.12.3", - "uuid": "^8.3.1", - "winston": "^3.3.3" - }, - "devDependencies": { - "chai": "^4.2.0", - "csv-parser": "^3.0.0", - "handlebars": "^4.7.7", - "mocha": "^8.1.3", - "no-kafka": "^3.4.3", - "nodemon": "^2.0.4", - "nyc": "^15.1.0", - "sequelize-cli": "^6.2.0", - "sinon": "^9.2.0", - "standard": "^14.3.4" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz", - "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.15.8", - "@babel/generator": "^7.15.8", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.8", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.8", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/core/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.6", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "dev": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", - "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", - "dependencies": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, - "node_modules/@elastic/elasticsearch": { - "version": "7.9.1", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-7.9.1.tgz", - "integrity": "sha512-NfPADbm9tRK/4ohpm9+aBtJ8WPKQqQaReyBKT225pi2oKQO1IzRlfM+OPplAvbhoH1efrSj1NKk27L+4BCrzXQ==", - "dependencies": { - "debug": "^4.1.1", - "decompress-response": "^4.2.0", - "ms": "^2.1.1", - "pump": "^3.0.0", - "secure-json-parse": "^2.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@elastic/elasticsearch/node_modules/decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "dependencies": { - "mimic-response": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@elastic/elasticsearch/node_modules/mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@hapi/hoek": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", - "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@joi/date": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@joi/date/-/date-2.1.0.tgz", - "integrity": "sha512-2zN5m0LgxZp/cynHGbzEImVmFIa+n+IOb/Nlw5LX/PLJneeCwG1NbiGw7MvPjsAKUGQK8z31Nn6V6lEN+4fZhg==", - "dependencies": { - "moment": "2.x.x" - } - }, - "node_modules/@sideway/address": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", - "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", - "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.3.1.tgz", - "integrity": "sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.6.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - } - }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", - "dev": true - }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/@topcoder-platform/topcoder-bus-api-wrapper": { - "version": "1.2.0", - "resolved": "git+ssh://git@github.com/topcoder-platform/tc-bus-api-wrapper.git#f8cbd335a0e0b4d6edd7cae859473593271fd97f", - "integrity": "sha512-RtKZlzEgJjt2IHGHH5zjtcIOMawNaGYp7rru2nap9xG3y1p329OEyUzYE+ReeQ3iZv0+c6utlj15Ixcm4Mmsww==", - "license": "ISC", - "dependencies": { - "joi": "^13.4.0", - "lodash": "^4.17.15", - "superagent": "^3.8.3", - "tc-core-library-js": "appirio-tech/tc-core-library-js.git#v2.6.4" - } - }, - "node_modules/@topcoder-platform/topcoder-bus-api-wrapper/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@topcoder-platform/topcoder-bus-api-wrapper/node_modules/joi": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-13.7.0.tgz", - "integrity": "sha512-xuY5VkHfeOYK3Hdi91ulocfuFopwgbSORmIwzcwHKESQhC7w1kD5jaVSPnqDxS2I8t3RZ9omCKAxNwXN5zG1/Q==", - "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", - "dependencies": { - "hoek": "5.x.x", - "isemail": "3.x.x", - "topo": "3.x.x" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/@topcoder-platform/topcoder-bus-api-wrapper/node_modules/superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", - "dependencies": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.2.0", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.3.5" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/@topcoder-platform/topcoder-bus-api-wrapper/node_modules/tc-core-library-js": { - "version": "2.4.1", - "resolved": "git+ssh://git@github.com/appirio-tech/tc-core-library-js.git#df0b36c51cf80918194cbff777214b3c0cf5a151", - "integrity": "sha512-KCeBY1FgqiHKMFek26RqZAvcjvqiSYZ4/pVeuPFbfS/9qKSkXOTop6yO0RWP9SmIDMvyaJPj/1f+O1MVeFXUQA==", - "license": "ISC", - "dependencies": { - "axios": "^0.19.0", - "bunyan": "^1.8.12", - "jsonwebtoken": "^8.5.1", - "jwks-rsa": "^1.6.0", - "lodash": "^4.17.15", - "millisecond": "^0.1.2", - "r7insight_node": "^1.8.4", - "request": "^2.88.0" - }, - "engines": { - "node": ">= 5" - } - }, - "node_modules/@types/bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-JjNHCk6r6aR82aRf2yDtX5NAe8o=", - "dev": true - }, - "node_modules/@types/body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-jwt": { - "version": "0.0.42", - "resolved": "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-0.0.42.tgz", - "integrity": "sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==", - "dependencies": { - "@types/express": "*", - "@types/express-unless": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.24", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", - "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/express-unless": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.2.tgz", - "integrity": "sha512-Q74UyYRX/zIgl1HSp9tUX2PlG8glkVm+59r7aK4KGKzC5jqKIOX6rrVLRQrzpZUQ84VukHtRoeAuon2nIssHPQ==", - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/lodash": { - "version": "4.14.175", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.175.tgz", - "integrity": "sha512-XmdEOrKQ8a1Y/yxQFOMbC47G/V2VDO1GvMRnl4O75M4GW/abC5tnfzadQYkqEveqRM1dEJGFFegfPNA2vvx2iw==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" - }, - "node_modules/@types/node": { - "version": "16.11.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.1.tgz", - "integrity": "sha512-PYGcJHL9mwl1Ek3PLiYgyEKtwTMmkMw4vbiyz/ps3pfdRYLVv+SN7qHVAImrjdAXxgluDEw6Ph4lyv+m9UpRmA==" - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - }, - "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-align/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-bgblack": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgblack/-/ansi-bgblack-0.1.1.tgz", - "integrity": "sha1-poulAHiHcBtqr74/oNrf36juPKI=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-bgblue": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgblue/-/ansi-bgblue-0.1.1.tgz", - "integrity": "sha1-Z73ATtybm1J4lp2hlt6j11yMNhM=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-bgcyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgcyan/-/ansi-bgcyan-0.1.1.tgz", - "integrity": "sha1-WEiUJWAL3p9VBwaN2Wnr/bUP52g=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-bggreen": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bggreen/-/ansi-bggreen-0.1.1.tgz", - "integrity": "sha1-TjGRJIUplD9DIelr8THRwTgWr0k=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-bgmagenta": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgmagenta/-/ansi-bgmagenta-0.1.1.tgz", - "integrity": "sha1-myhDLAduqpmUGGcqPvvhk5HCx6E=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-bgred": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgred/-/ansi-bgred-0.1.1.tgz", - "integrity": "sha1-p2+Sg4OCukMpCmwXeEJPmE1vEEE=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-bgwhite": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgwhite/-/ansi-bgwhite-0.1.1.tgz", - "integrity": "sha1-ZQRlE3elim7OzQMxmU5IAljhG6g=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-bgyellow": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bgyellow/-/ansi-bgyellow-0.1.1.tgz", - "integrity": "sha1-w/4usIzUdmSAKeaHTRWgs49h1E8=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-black": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-black/-/ansi-black-0.1.1.tgz", - "integrity": "sha1-9hheiJNgslRaHsUMC/Bj/EMDJFM=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-blue": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-blue/-/ansi-blue-0.1.1.tgz", - "integrity": "sha1-FbgEmQ6S/JyoxUds6PaZd3wh7b8=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-bold": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-bold/-/ansi-bold-0.1.1.tgz", - "integrity": "sha1-PmOVCvWswq4uZw5vZ96xFdGl9QU=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-colors": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-0.2.0.tgz", - "integrity": "sha1-csMd4qDZoszQysMMyYI+6y9kNLU=", - "dependencies": { - "ansi-bgblack": "^0.1.1", - "ansi-bgblue": "^0.1.1", - "ansi-bgcyan": "^0.1.1", - "ansi-bggreen": "^0.1.1", - "ansi-bgmagenta": "^0.1.1", - "ansi-bgred": "^0.1.1", - "ansi-bgwhite": "^0.1.1", - "ansi-bgyellow": "^0.1.1", - "ansi-black": "^0.1.1", - "ansi-blue": "^0.1.1", - "ansi-bold": "^0.1.1", - "ansi-cyan": "^0.1.1", - "ansi-dim": "^0.1.1", - "ansi-gray": "^0.1.1", - "ansi-green": "^0.1.1", - "ansi-grey": "^0.1.1", - "ansi-hidden": "^0.1.1", - "ansi-inverse": "^0.1.1", - "ansi-italic": "^0.1.1", - "ansi-magenta": "^0.1.1", - "ansi-red": "^0.1.1", - "ansi-reset": "^0.1.1", - "ansi-strikethrough": "^0.1.1", - "ansi-underline": "^0.1.1", - "ansi-white": "^0.1.1", - "ansi-yellow": "^0.1.1", - "lazy-cache": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-cyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", - "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-dim": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-dim/-/ansi-dim-0.1.1.tgz", - "integrity": "sha1-QN5MYDqoCG2Oeoa4/5mNXDbu/Ww=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-green": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz", - "integrity": "sha1-il2al55FjVfEDjNYCzc5C44Q0Pc=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-grey": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-grey/-/ansi-grey-0.1.1.tgz", - "integrity": "sha1-WdmLasK6GfilF5jphT+6eDOaM8E=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-hidden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-hidden/-/ansi-hidden-0.1.1.tgz", - "integrity": "sha1-7WpMSY0rt8uyidvyqNHcyFZ/rg8=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-inverse": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-inverse/-/ansi-inverse-0.1.1.tgz", - "integrity": "sha1-tq9Fgm/oJr+1KKbHmIV5Q1XM0mk=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-italic": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-italic/-/ansi-italic-0.1.1.tgz", - "integrity": "sha1-EEdDRj9iXBQqA2c5z4XtpoiYbyM=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-magenta": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-magenta/-/ansi-magenta-0.1.1.tgz", - "integrity": "sha1-BjtboW+z8j4c/aKwfAqJ3hHkMK4=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-reset": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-reset/-/ansi-reset-0.1.1.tgz", - "integrity": "sha1-5+cSksPH3c1NYu9KbHwFmAkRw7c=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-strikethrough": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-strikethrough/-/ansi-strikethrough-0.1.1.tgz", - "integrity": "sha1-2Eh3FAss/wfRyT685pkE9oiF5Wg=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-underline": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-underline/-/ansi-underline-0.1.1.tgz", - "integrity": "sha1-38kg9Ml7WXfqFi34/7mIMIqqcaQ=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-white": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-white/-/ansi-white-0.1.1.tgz", - "integrity": "sha1-nHe3wZPF7pkuYBHTbsTJIbRXiUQ=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-yellow": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-yellow/-/ansi-yellow-0.1.1.tgz", - "integrity": "sha1-y5NW8vRscy8OMZnmEClVp32oPB0=", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "dependencies": { - "default-require-extensions": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-swap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arr-swap/-/arr-swap-1.0.1.tgz", - "integrity": "sha1-FHWQ7WX8gVvAf+8Jl8Llgj1kNTQ=", - "dependencies": { - "is-number": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-swap/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "node_modules/array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/async": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz", - "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==" - }, - "node_modules/async-mutex": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.3.2.tgz", - "integrity": "sha512-HuTK7E7MT7jZEh1P9GtRW9+aTWiDWWi9InbZ5hjxrnRa39KS4BW04+xLBhYNS2aXhHUIKZSw3gj4Pn1pj+qGAA==", - "dependencies": { - "tslib": "^2.3.1" - } - }, - "node_modules/async-mutex/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "node_modules/auth0-js": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/auth0-js/-/auth0-js-9.17.0.tgz", - "integrity": "sha512-rqHhOq6ZgOaHwz0e46YywsGW4Y2wLF3Fu+y2wT94vbEFNAi5vyJHJYVyNAetAN7w7Ljhda/7SsUs/usuEMRBpQ==", - "dependencies": { - "base64-js": "^1.5.1", - "idtoken-verifier": "^2.2.2", - "js-cookie": "^2.2.0", - "qs": "^6.10.1", - "superagent": "^5.3.1", - "url-join": "^4.0.1", - "winchan": "^0.2.2" - } - }, - "node_modules/auth0-js/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/auth0-js/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/auth0-js/node_modules/mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/auth0-js/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/auth0-js/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/auth0-js/node_modules/superagent": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-5.3.1.tgz", - "integrity": "sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ==", - "dependencies": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.2", - "debug": "^4.1.1", - "fast-safe-stringify": "^2.0.7", - "form-data": "^3.0.0", - "formidable": "^1.2.2", - "methods": "^1.1.2", - "mime": "^2.4.6", - "qs": "^6.9.4", - "readable-stream": "^3.6.0", - "semver": "^7.3.2" - }, - "engines": { - "node": ">= 7.0.0" - } - }, - "node_modules/auth0-js/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sdk": { - "version": "2.1011.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1011.0.tgz", - "integrity": "sha512-U5CDmLUHYAur89+Rx1r3X5gRzc8ib90G9aaKnyGqLsIail24r6UINejJB8pyOzFQ+u22/kFKKclfXcTj/Hflbg==", - "hasInstallScript": true, - "dependencies": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.15.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "uuid": "3.3.2", - "xml2js": "0.4.19" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/aws-sdk/node_modules/uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "node_modules/axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", - "deprecated": "Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410", - "dependencies": { - "follow-redirects": "1.5.10" - } - }, - "node_modules/babel-runtime": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.6.1.tgz", - "integrity": "sha1-eIuUtvY04luRvWxd9y1GdFevsAA=", - "dependencies": { - "core-js": "^2.1.0" - } - }, - "node_modules/backoff": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", - "integrity": "sha1-9hbtqdPktmuMp/ynn2lXIsX44m8=", - "dependencies": { - "precond": "0.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bin-protocol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bin-protocol/-/bin-protocol-3.1.1.tgz", - "integrity": "sha512-9vCGfaHC2GBHZwGQdG+DpyXfmLvx9uKtf570wMLwIc9wmTIDgsdCBXQxTZu5X2GyogkfBks2Ode4N0sUVxJ2qQ==", - "dev": true, - "dependencies": { - "lodash": "^4.17.11", - "long": "^4.0.0", - "protocol-buffers-schema": "^3.0.0" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dependencies": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" - }, - "node_modules/boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "dev": true, - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/boxen/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/boxen/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/boxen/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/boxen/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.4.tgz", - "integrity": "sha512-Zg7RpbZpIJRW3am9Lyckue7PLytvVxxhJj1CaJVlCWENsGEAOlnlt8X0ZxGRPp7Bt9o8tIRM5SEXy4BCPMJjLQ==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001265", - "electron-to-chromium": "^1.3.867", - "escalade": "^3.1.1", - "node-releases": "^2.0.0", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" - }, - "node_modules/buffer-writer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", - "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/bunyan": { - "version": "1.8.15", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz", - "integrity": "sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==", - "engines": [ - "node >=0.10.0" - ], - "bin": { - "bunyan": "bin/bunyan" - }, - "optionalDependencies": { - "dtrace-provider": "~0.8", - "moment": "^2.19.3", - "mv": "~2", - "safe-json-stringify": "~1" - } - }, - "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", - "dev": true, - "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001270", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001270.tgz", - "integrity": "sha512-TcIC7AyNWXhcOmv2KftOl1ShFAaHQYcB/EPL/hEyMrcS7ZX0/DvV1aoy6BzV0+16wTpoAyTMGDNAJfSqS/rz7A==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "node_modules/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/choices-separator": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/choices-separator/-/choices-separator-2.0.0.tgz", - "integrity": "sha1-kv0XYxgteQM/XFxR0Lo1LlVnxpY=", - "dependencies": { - "ansi-dim": "^0.1.1", - "debug": "^2.6.6", - "strip-color": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/choices-separator/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/choices-separator/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-color": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", - "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.1.1", - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "memoizee": "^0.4.14", - "timers-ext": "^0.1.5" - } - }, - "node_modules/cli-color/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/clone-deep": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-1.0.0.tgz", - "integrity": "sha512-hmJRX8x1QOJVV+GUjOBzi6iauhPqc9hIF6xitWRBbiPZOBb6vGo/mDRIK9P74RTKSQK7AE8B0DDWY/vpRrPmQw==", - "dependencies": { - "for-own": "^1.0.0", - "is-plain-object": "^2.0.4", - "kind-of": "^5.0.0", - "shallow-clone": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clone-deep/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - } - }, - "node_modules/codependency": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/codependency/-/codependency-0.1.4.tgz", - "integrity": "sha1-0XY6tyZL1wyR2WJumIYtN5K/jUo=", - "dependencies": { - "semver": "5.0.1" - } - }, - "node_modules/codependency/node_modules/semver": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.1.tgz", - "integrity": "sha1-n7P0AE+QDYPEeWj+QvdYPgWDLMk=", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", - "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", - "dependencies": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/color-string": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz", - "integrity": "sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/colorspace": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", - "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", - "dependencies": { - "color": "3.0.x", - "text-hex": "1.0.x" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/config": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/config/-/config-3.3.6.tgz", - "integrity": "sha512-Hj5916C5HFawjYJat1epbyY2PlAgLpBtDUlr0MxGLgo3p5+7kylyvnRY18PqJHgnNWXcdd0eWDemT7eYWuFgwg==", - "dependencies": { - "json5": "^2.1.1" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dev": true, - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/config-chain/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/connection-parse": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/connection-parse/-/connection-parse-0.0.7.tgz", - "integrity": "sha1-GOcxiqsGppkmc3KxDFIm0locmmk=", - "dev": true - }, - "node_modules/contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "node_modules/cookiejar": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", - "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/cron-parser": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-3.5.0.tgz", - "integrity": "sha512-wyVZtbRs6qDfFd8ap457w3XVntdvqcwBGxBoTvJQH9KGVKL/fB+h2k3C8AqiVxvUQKN1Ps/Ns46CNViOpVDhfQ==", - "dependencies": { - "is-nan": "^1.3.2", - "luxon": "^1.26.0" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/csv-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-3.0.0.tgz", - "integrity": "sha512-s6OYSXAK3IdKqYO33y09jhypG/bSDHPuyCme/IdEHfWpLf/jKcpitVFyOC6UemgGk8v7Q5u2XE0vvwmanxhGlQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "csv-parser": "bin/csv-parser" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/date-fns": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz", - "integrity": "sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w==", - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/debug-log": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "node_modules/default-require-extensions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", - "dev": true, - "dependencies": { - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/deglob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/deglob/-/deglob-4.0.1.tgz", - "integrity": "sha512-/g+RDZ7yf2HvoW+E5Cy+K94YhgcFgr6C8LuHZD1O5HoNPkf3KY6RfXJ0DBGlB/NkLi5gml+G9zqRzk9S0mHZCg==", - "dev": true, - "dependencies": { - "find-root": "^1.0.0", - "glob": "^7.0.5", - "ignore": "^5.0.0", - "pkg-config": "^1.1.0", - "run-parallel": "^1.1.2", - "uniq": "^1.0.1" - } - }, - "node_modules/deglob/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/deglob/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", - "engines": { - "node": ">=10" - } - }, - "node_modules/dottie": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", - "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" - }, - "node_modules/dtrace-provider": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", - "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "nan": "^2.14.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", - "dev": true, - "dependencies": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - }, - "bin": { - "editorconfig": "bin/editorconfig" - } - }, - "node_modules/editorconfig/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "node_modules/electron-to-chromium": { - "version": "1.3.873", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.873.tgz", - "integrity": "sha512-TiHlCgl2uP26Z0c67u442c0a2MZCWZNCRnPTQDPhVJ4h9G6z2zU0lApD9H0K9R5yFL5SfdaiVsVD2izOY24xBQ==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/error-ex/node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "node_modules/error-symbol": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/error-symbol/-/error-symbol-0.1.0.tgz", - "integrity": "sha1-Ck2uN9YA0VopukU9jvkg8YRDM/Y=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "dependencies": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-standard": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz", - "integrity": "sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==", - "dev": true, - "peerDependencies": { - "eslint": ">=6.2.2", - "eslint-plugin-import": ">=2.18.0", - "eslint-plugin-node": ">=9.1.0", - "eslint-plugin-promise": ">=4.2.1", - "eslint-plugin-standard": ">=4.0.0" - } - }, - "node_modules/eslint-config-standard-jsx": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-8.1.0.tgz", - "integrity": "sha512-ULVC8qH8qCqbU792ZOO6DaiaZyHNS/5CZt3hKqHkEhVlhPEPN3nfBqqxJCyp59XrjIBZPu1chMYe9T2DXZ7TMw==", - "dev": true, - "peerDependencies": { - "eslint": ">=6.2.2", - "eslint-plugin-react": ">=7.14.2" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", - "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "find-up": "^2.1.0", - "pkg-dir": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-es": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz", - "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==", - "dev": true, - "dependencies": { - "eslint-utils": "^1.4.2", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-es/node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.18.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz", - "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==", - "dev": true, - "dependencies": { - "array-includes": "^3.0.3", - "contains-path": "^0.1.0", - "debug": "^2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.2", - "eslint-module-utils": "^2.4.0", - "has": "^1.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.0", - "read-pkg-up": "^2.0.0", - "resolve": "^1.11.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "2.x - 6.x" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "dependencies": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/eslint-plugin-node": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz", - "integrity": "sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ==", - "dev": true, - "dependencies": { - "eslint-plugin-es": "^2.0.0", - "eslint-utils": "^1.4.2", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "node_modules/eslint-plugin-node/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint-plugin-node/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-promise": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", - "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz", - "integrity": "sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA==", - "dev": true, - "dependencies": { - "array-includes": "^3.0.3", - "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.1.0", - "object.entries": "^1.1.0", - "object.fromentries": "^2.0.0", - "object.values": "^1.1.0", - "prop-types": "^15.7.2", - "resolve": "^1.10.1" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-standard": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.2.tgz", - "integrity": "sha512-nKptN8l7jksXkwFk++PhJB3cCDTcXOEyhISIN86Ue2feJ1LFyY3PrY3/xT2keXlJSY5bpmbiTG0f885/YKAvTA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peerDependencies": { - "eslint": ">=5.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dependencies": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "dependencies": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express-interceptor": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/express-interceptor/-/express-interceptor-1.2.0.tgz", - "integrity": "sha1-M0YKjhHc5+WgIsr1VdN35F3bgio=", - "dependencies": { - "debug": "^2.2.0" - } - }, - "node_modules/express-interceptor/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express-interceptor/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/express/node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", - "dev": true, - "dependencies": { - "type": "^2.5.0" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==", - "dev": true - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - }, - "node_modules/fecha": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz", - "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==" - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dependencies": { - "flat-cache": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "dev": true - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/flat-cache/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" - }, - "node_modules/fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" - }, - "node_modules/follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "dependencies": { - "debug": "=3.1.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/follow-redirects/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/follow-redirects/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/foreground-child/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/foreground-child/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/foreground-child/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/foreground-child/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/foreground-child/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/formidable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", - "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==", - "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-parameter-names": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/get-parameter-names/-/get-parameter-names-0.3.0.tgz", - "integrity": "sha1-LSI3zVkubFuFmrLv2rQ18Ajlu5c=", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/get-stdin": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", - "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", - "optional": true, - "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "dev": true, - "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dependencies": { - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, - "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hashring": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/hashring/-/hashring-3.2.0.tgz", - "integrity": "sha1-/aTv3oqiLNuX+x0qZeiEAeHBRM4=", - "dev": true, - "dependencies": { - "connection-parse": "0.0.x", - "simple-lru-cache": "0.0.x" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/hoek": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.4.tgz", - "integrity": "sha512-Alr4ZQgoMlnere5FZJsIyfIjORBqZll5POhDsF4q64dPuJR6rNxXdDxtHSQq8OXRurhmx+PWYEE8bXRROY8h0w==", - "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/http-status": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/http-status/-/http-status-1.5.0.tgz", - "integrity": "sha512-wcGvY31MpFNHIkUcXHHnvrE4IKYlpvitJw5P/1u892gMBAM46muQ+RH7UN1d+Ntnfx5apnOnVY6vcLmrWHOLwg==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/http-status-codes": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.1.4.tgz", - "integrity": "sha512-MZVIsLKGVOVE1KEnldppe6Ij+vmemMuApDfjhVSLzyYP+td0bREEYyAoIw9yFePoBXManCuBqmiNP5FqJS5Xkg==" - }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/idtoken-verifier": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/idtoken-verifier/-/idtoken-verifier-2.2.2.tgz", - "integrity": "sha512-PFNivtWIUKFt0B53FOACLAM2PaejEwB/wh6fPqlWoLGMWP05JKGJyKyMv/uS9kduevEfRhHaSVdoLYUnQ0YmsA==", - "dependencies": { - "base64-js": "^1.5.1", - "crypto-js": "^4.1.1", - "es6-promise": "^4.2.8", - "jsbn": "^1.1.0", - "unfetch": "^4.2.0", - "url-join": "^4.0.1" - } - }, - "node_modules/idtoken-verifier/node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=" - }, - "node_modules/ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", - "dev": true - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflection": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.1.tgz", - "integrity": "sha512-dldYtl2WlN0QDkIDtg8+xFwOS2Tbmp12t1cHa5/YClU6ZQjTFm7B66UcVbh9NQB+HvT5BAd2t5+yKsBkw5pcqA==", - "engines": [ - "node >= 0.4.0" - ] - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/info-symbol": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/info-symbol/-/info-symbol-0.1.0.tgz", - "integrity": "sha1-J4QdcoZ920JCzWEtecEGM4gcang=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "node_modules/inquirer/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "engines": { - "node": ">=4" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-number": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-6.0.0.tgz", - "integrity": "sha512-Wu1VHeILBK8KAWJUAiSZQX94GmOE45Rg6/538fKwiloUu21KncEkYGPqob2oSZ5mUT73vLGrHQjKw3KMPwfDzg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", - "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "node_modules/is-weakref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", - "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", - "dependencies": { - "call-bind": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/isemail": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", - "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", - "dependencies": { - "punycode": "2.x.x" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "dependencies": { - "append-transform": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-processinfo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", - "dev": true, - "dependencies": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^3.3.3" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", - "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jmespath": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/joi": { - "version": "17.4.2", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz", - "integrity": "sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw==", - "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.0", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/js-beautify": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.0.tgz", - "integrity": "sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ==", - "dev": true, - "dependencies": { - "config-chain": "^1.1.12", - "editorconfig": "^0.15.3", - "glob": "^7.1.3", - "nopt": "^5.0.0" - }, - "bin": { - "css-beautify": "js/bin/css-beautify.js", - "html-beautify": "js/bin/html-beautify.js", - "js-beautify": "js/bin/js-beautify.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/js-beautify/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/js-beautify/node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/js-cookie": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", - "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=4", - "npm": ">=1.4.28" - } - }, - "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "node_modules/jsx-ast-utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", - "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.1", - "object.assign": "^4.1.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", - "dev": true - }, - "node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jwks-rsa": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-1.12.3.tgz", - "integrity": "sha512-cFipFDeYYaO9FhhYJcZWX/IyZgc0+g316rcHnDpT2dNRNIE/lMOmWKKqp09TkJoYlNFzrEVODsR4GgXJMgWhnA==", - "dependencies": { - "@types/express-jwt": "0.0.42", - "axios": "^0.21.1", - "debug": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "jsonwebtoken": "^8.5.1", - "limiter": "^1.1.5", - "lru-memoizer": "^2.1.2", - "ms": "^2.1.2", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/jwks-rsa/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/jwks-rsa/node_modules/follow-redirects": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", - "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/koalas": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/koalas/-/koalas-1.0.2.tgz", - "integrity": "sha1-MYQz8HQjXbePrlZhoCqMpT7ilc0=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" - }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "dependencies": { - "package-json": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "dependencies": { - "set-getter": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/le_node": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/le_node/-/le_node-1.8.0.tgz", - "integrity": "sha512-NXzjxBskZ4QawTNwlGdRG05jYU0LhV2nxxmP3x7sRMHyROV0jPdyyikO9at+uYrWX3VFt0Y/am11oKITedx0iw==", - "dependencies": { - "babel-runtime": "6.6.1", - "codependency": "0.1.4", - "json-stringify-safe": "5.0.1", - "lodash": "4.17.11", - "reconnect-core": "1.3.0", - "semver": "5.1.0" - }, - "engines": { - "iojs": ">=0.10", - "node": ">=0.8.0", - "npm": ">=1.4.6" - } - }, - "node_modules/le_node/node_modules/lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "node_modules/le_node/node_modules/semver": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz", - "integrity": "sha1-hfLPhVBGXE3wAM99hvawVBBqueU=", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" - }, - "node_modules/load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" - }, - "node_modules/log-ok": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/log-ok/-/log-ok-0.1.1.tgz", - "integrity": "sha1-vqPdNqzQuKckDXhza1uXxlREozQ=", - "dependencies": { - "ansi-green": "^0.1.1", - "success-symbol": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/log-symbols": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", - "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/log-utils/-/log-utils-0.2.1.tgz", - "integrity": "sha1-pMIXoN2aUFFdm5ICBgkas9TgMc8=", - "dependencies": { - "ansi-colors": "^0.2.0", - "error-symbol": "^0.1.0", - "info-symbol": "^0.1.0", - "log-ok": "^0.1.1", - "success-symbol": "^0.1.0", - "time-stamp": "^1.0.1", - "warning-symbol": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/logform": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.3.0.tgz", - "integrity": "sha512-graeoWUH2knKbGthMtuG1EfaSPMZFZBIrhuJHhkS5ZseFBrc7DupCzihOQAzsK/qIKPQaPJ/lFQFctILUY5ARQ==", - "dependencies": { - "colors": "^1.2.1", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^1.1.0", - "triple-beam": "^1.3.0" - } - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "dev": true - }, - "node_modules/long-timeout": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", - "integrity": "sha1-lyHXiLR+C8taJMLivuGg2lXatRQ=" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lru-cache": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", - "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=", - "dependencies": { - "pseudomap": "^1.0.1", - "yallist": "^2.0.0" - } - }, - "node_modules/lru-memoizer": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.4.tgz", - "integrity": "sha512-IXAq50s4qwrOBrXJklY+KhgZF+5y98PDaNo0gi/v2KQBFLyWr+JyFvijZXkGKjQj/h9c0OwoE+JZbwUXce76hQ==", - "dependencies": { - "lodash.clonedeep": "^4.5.0", - "lru-cache": "~4.0.0" - } - }, - "node_modules/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", - "dev": true, - "dependencies": { - "es5-ext": "~0.10.2" - } - }, - "node_modules/luxon": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz", - "integrity": "sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ==", - "engines": { - "node": "*" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - } - }, - "node_modules/memoizee/node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "dev": true - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/millisecond": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/millisecond/-/millisecond-0.1.2.tgz", - "integrity": "sha1-bMWtOGJByrjniv+WT4cCjuyS2sU=" - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", - "dependencies": { - "mime-db": "1.50.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "node_modules/mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", - "dependencies": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-object/node_modules/for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mocha": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz", - "integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==", - "dev": true, - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.1", - "debug": "4.3.1", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.1.6", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.0.0", - "log-symbols": "4.0.0", - "minimatch": "3.0.4", - "ms": "2.1.3", - "nanoid": "3.1.20", - "serialize-javascript": "5.0.1", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "wide-align": "1.1.3", - "workerpool": "6.1.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 10.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mocha/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/js-yaml": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", - "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/mocha/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", - "engines": { - "node": "*" - } - }, - "node_modules/moment-timezone": { - "version": "0.5.33", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.33.tgz", - "integrity": "sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w==", - "dependencies": { - "moment": ">= 2.9.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/murmur-hash-js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/murmur-hash-js/-/murmur-hash-js-1.0.0.tgz", - "integrity": "sha1-UEEEkmnJZjPIZjhpYLL0KJ515bA=", - "dev": true - }, - "node_modules/mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" - }, - "node_modules/mv": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", - "optional": true, - "dependencies": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", - "optional": true - }, - "node_modules/nanoid": { - "version": "3.1.20", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", - "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" - }, - "node_modules/ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", - "optional": true, - "bin": { - "ncp": "bin/ncp" - } - }, - "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "node_modules/nice-simple-logger": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nice-simple-logger/-/nice-simple-logger-1.0.1.tgz", - "integrity": "sha1-D55khSe+e+PkmrdvqMjAmK+VG/Y=", - "dev": true, - "dependencies": { - "lodash": "^4.3.0" - } - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node_modules/nise": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/nise/-/nise-4.1.0.tgz", - "integrity": "sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0", - "@sinonjs/fake-timers": "^6.0.0", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" - } - }, - "node_modules/nise/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/nise/node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dev": true, - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/no-kafka": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/no-kafka/-/no-kafka-3.4.3.tgz", - "integrity": "sha512-hYnkg1OWVdaxORdzVvdQ4ueWYpf7IICObPzd24BBiDyVG5219VkUnRxSH9wZmisFb6NpgABzlSIL1pIZaCKmXg==", - "dev": true, - "dependencies": { - "@types/bluebird": "3.5.0", - "@types/lodash": "^4.14.55", - "bin-protocol": "^3.1.1", - "bluebird": "^3.3.3", - "buffer-crc32": "^0.2.5", - "hashring": "^3.2.0", - "lodash": "=4.17.11", - "murmur-hash-js": "^1.0.0", - "nice-simple-logger": "^1.0.1", - "wrr-pool": "^1.0.3" - } - }, - "node_modules/no-kafka/node_modules/lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - }, - "node_modules/node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, - "dependencies": { - "process-on-spawn": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/node-releases": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.0.tgz", - "integrity": "sha512-aA87l0flFYMzCHpTM3DERFSYxc6lv/BltdbRTOMZuxZ0cwZCD3mejE5n9vLhSJCN++/eOqr77G1IO5uXxlQYWA==", - "dev": true - }, - "node_modules/node-schedule": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.0.0.tgz", - "integrity": "sha512-cHc9KEcfiuXxYDU+HjsBVo2FkWL1jRAUoczFoMIzRBpOA4p/NRHuuLs85AWOLgKsHtSPjN8csvwIxc2SqMv+CQ==", - "dependencies": { - "cron-parser": "^3.1.0", - "long-timeout": "0.1.1", - "sorted-array-functions": "^1.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/nodemon": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.14.tgz", - "integrity": "sha512-frcpDx+PviKEQRSYzwhckuO2zoHcBYLHI754RE9z5h1RGtrngerc04mLpQQCPWBkH/2ObrX7We9YiwVSYZpFJQ==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "chokidar": "^3.2.2", - "debug": "^3.2.6", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.7", - "semver": "^5.7.1", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.3", - "update-notifier": "^5.1.0" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nodemon/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", - "dev": true, - "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "bin": { - "nyc": "bin/nyc.js" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/nyc/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/nyc/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/nyc/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/nyc/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/nyc/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/nyc/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nyc/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/nyc/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nyc/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/nyc/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/nyc/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", - "dependencies": { - "fn.name": "1.x.x" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/package-json/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/packet-reader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", - "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "node_modules/path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "dependencies": { - "pify": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "node_modules/pg": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.7.1.tgz", - "integrity": "sha512-7bdYcv7V6U3KAtWjpQJJBww0UEsWuh4yQ/EjNf2HeO/NnvKjpvhEIe/A/TleP6wtmSKnUnghs5A9jUoK6iDdkA==", - "dependencies": { - "buffer-writer": "2.0.0", - "packet-reader": "1.0.0", - "pg-connection-string": "^2.5.0", - "pg-pool": "^3.4.1", - "pg-protocol": "^1.5.0", - "pg-types": "^2.1.0", - "pgpass": "1.x" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "pg-native": ">=2.0.0" - }, - "peerDependenciesMeta": { - "pg-native": { - "optional": true - } - } - }, - "node_modules/pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" - }, - "node_modules/pg-hstore": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/pg-hstore/-/pg-hstore-2.3.4.tgz", - "integrity": "sha512-N3SGs/Rf+xA1M2/n0JBiXFDVMzdekwLZLAO0g7mpDY9ouX+fDI7jS6kTq3JujmYbtNSJ53TJ0q4G98KVZSM4EA==", - "dependencies": { - "underscore": "^1.13.1" - }, - "engines": { - "node": ">= 0.8.x" - } - }, - "node_modules/pg-int8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/pg-pool": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.4.1.tgz", - "integrity": "sha512-TVHxR/gf3MeJRvchgNHxsYsTCHQ+4wm3VIHSS19z8NC0+gioEhq1okDY1sm/TYbfoP6JLFx01s0ShvZ3puP/iQ==", - "peerDependencies": { - "pg": ">=8.0" - } - }, - "node_modules/pg-protocol": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", - "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" - }, - "node_modules/pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "dependencies": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pgpass": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.4.tgz", - "integrity": "sha512-YmuA56alyBq7M59vxVBfPJrGSozru8QAdoNlWuW3cz8l+UX3cWge0vTvjKhsSHSJpo3Bom8/Mm6hf0TR5GY0+w==", - "dependencies": { - "split2": "^3.1.1" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-conf": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", - "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0", - "load-json-file": "^5.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/load-json-file": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", - "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.15", - "parse-json": "^4.0.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0", - "type-fest": "^0.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-conf/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-config": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", - "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", - "dev": true, - "dependencies": { - "debug-log": "^1.0.0", - "find-root": "^1.0.0", - "xtend": "^4.0.1" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pointer-symbol": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pointer-symbol/-/pointer-symbol-1.0.0.tgz", - "integrity": "sha1-YPkRAgTqepKbYmRKITFVQ8uz1Ec=", - "engines": { - "node": ">=4" - } - }, - "node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/precond": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", - "integrity": "sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", - "dev": true, - "dependencies": { - "fromentries": "^1.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/prompt-actions": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/prompt-actions/-/prompt-actions-3.0.2.tgz", - "integrity": "sha512-dhz2Fl7vK+LPpmnQ/S/eSut4BnH4NZDLyddHKi5uTU/2PDn3grEMGkgsll16V5RpVUh/yxdiam0xsM0RD4xvtg==", - "dependencies": { - "debug": "^2.6.8" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/prompt-actions/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/prompt-actions/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/prompt-base": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/prompt-base/-/prompt-base-4.1.0.tgz", - "integrity": "sha512-svGzgLUKZoqomz9SGMkf1hBG8Wl3K7JGuRCXc/Pv7xw8239hhaTBXrmjt7EXA9P/QZzdyT8uNWt9F/iJTXq75g==", - "dependencies": { - "component-emitter": "^1.2.1", - "debug": "^3.0.1", - "koalas": "^1.0.2", - "log-utils": "^0.2.1", - "prompt-actions": "^3.0.2", - "prompt-question": "^5.0.1", - "readline-ui": "^2.2.3", - "readline-utils": "^2.2.3", - "static-extend": "^0.1.2" - }, - "engines": { - "node": ">=5.0" - } - }, - "node_modules/prompt-base/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/prompt-choices": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/prompt-choices/-/prompt-choices-4.1.0.tgz", - "integrity": "sha512-ZNYLv6rW9z9n0WdwCkEuS+w5nUAGzRgtRt6GQ5aFNFz6MIcU7nHFlHOwZtzy7RQBk80KzUGPSRQphvMiQzB8pg==", - "dependencies": { - "arr-flatten": "^1.1.0", - "arr-swap": "^1.0.1", - "choices-separator": "^2.0.0", - "clone-deep": "^4.0.0", - "collection-visit": "^1.0.0", - "define-property": "^2.0.2", - "is-number": "^6.0.0", - "kind-of": "^6.0.2", - "koalas": "^1.0.2", - "log-utils": "^0.2.1", - "pointer-symbol": "^1.0.0", - "radio-symbol": "^2.0.0", - "set-value": "^3.0.0", - "strip-color": "^0.1.0", - "terminal-paginator": "^2.0.2", - "toggle-array": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/prompt-choices/node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/prompt-choices/node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prompt-choices/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prompt-choices/node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/prompt-confirm": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/prompt-confirm/-/prompt-confirm-2.0.4.tgz", - "integrity": "sha512-X5lzbC8/kMNHdPOqQPfMKpH4VV2f7v2OTRJoN69ZYBirSwTeQaf9ZhmzPEO9ybMA0YV2Pha5MV27u2/U4ahWfg==", - "dependencies": { - "ansi-cyan": "^0.1.1", - "prompt-base": "^4.0.1" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/prompt-question": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/prompt-question/-/prompt-question-5.0.2.tgz", - "integrity": "sha512-wreaLbbu8f5+7zXds199uiT11Ojp59Z4iBi6hONlSLtsKGTvL2UY8VglcxQ3t/X4qWIxsNCg6aT4O8keO65v6Q==", - "dependencies": { - "clone-deep": "^1.0.0", - "debug": "^3.0.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "kind-of": "^5.0.2", - "koalas": "^1.0.2", - "prompt-choices": "^4.0.5" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/prompt-question/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/prompt-question/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dev": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", - "dev": true - }, - "node_modules/protocol-buffers-schema": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", - "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==", - "dev": true - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, - "dependencies": { - "escape-goat": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/r7insight_node": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/r7insight_node/-/r7insight_node-1.8.4.tgz", - "integrity": "sha512-6cQrzLkaOxdv/SRFXWRJjgFr8a3nXUOT/4IMFuBv+mWzBnu5DJl+HzONAsWYvclrlZnvfa54PaIPqPuPRSlbrQ==", - "dependencies": { - "babel-runtime": "6.6.1", - "codependency": "0.1.4", - "json-stringify-safe": "5.0.1", - "lodash": "4.17.15", - "reconnect-core": "1.3.0", - "semver": "5.1.0" - }, - "engines": { - "iojs": ">=0.10", - "node": ">=0.8.0", - "npm": ">=1.4.6" - } - }, - "node_modules/r7insight_node/node_modules/lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "node_modules/r7insight_node/node_modules/semver": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz", - "integrity": "sha1-hfLPhVBGXE3wAM99hvawVBBqueU=", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/radio-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/radio-symbol/-/radio-symbol-2.0.0.tgz", - "integrity": "sha1-eqm/xQSFY21S3XbWqOYxspB5muE=", - "dependencies": { - "ansi-gray": "^0.1.1", - "ansi-green": "^0.1.1", - "is-windows": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "node_modules/read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "dependencies": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/readline-ui": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/readline-ui/-/readline-ui-2.2.3.tgz", - "integrity": "sha512-ix7jz0PxqQqcIuq3yQTHv1TOhlD2IHO74aNO+lSuXsRYm1d+pdyup1yF3zKyLK1wWZrVNGjkzw5tUegO2IDy+A==", - "dependencies": { - "component-emitter": "^1.2.1", - "debug": "^2.6.8", - "readline-utils": "^2.2.1", - "string-width": "^2.0.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/readline-ui/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/readline-ui/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/readline-utils": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/readline-utils/-/readline-utils-2.2.3.tgz", - "integrity": "sha1-b4R9a48ZFcORtYHDZ81HhzhiNRo=", - "dependencies": { - "arr-flatten": "^1.1.0", - "extend-shallow": "^2.0.1", - "is-buffer": "^1.1.5", - "is-number": "^3.0.0", - "is-windows": "^1.0.1", - "koalas": "^1.0.2", - "mute-stream": "0.0.7", - "strip-color": "^0.1.0", - "window-size": "^1.1.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/readline-utils/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/reconnect-core": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reconnect-core/-/reconnect-core-1.3.0.tgz", - "integrity": "sha1-+65SkZp4d9hE4yRtAaLyZwHIM8g=", - "dependencies": { - "backoff": "~2.5.0" - } - }, - "node_modules/regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "engines": { - "node": ">=6.5.0" - } - }, - "node_modules/registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "dependencies": { - "es6-error": "^4.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/request/node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/retry-as-promised": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.2.0.tgz", - "integrity": "sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg==", - "dependencies": { - "any-promise": "^1.3.0" - } - }, - "node_modules/rewire": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/rewire/-/rewire-5.0.0.tgz", - "integrity": "sha512-1zfitNyp9RH5UDyGGLe9/1N0bMlPQ0WrX0Tmg11kMHBpqwPJI4gfPpP7YngFyLbFmhXh19SToAG0sKKEFcOIJA==", - "dependencies": { - "eslint": "^6.8.0" - } - }, - "node_modules/rimraf": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", - "optional": true, - "dependencies": { - "glob": "^6.0.1" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safe-json-stringify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", - "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", - "optional": true - }, - "node_modules/safe-stable-stringify": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz", - "integrity": "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sax": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" - }, - "node_modules/secure-json-parse": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.4.0.tgz", - "integrity": "sha512-Q5Z/97nbON5t/L/sH6mY2EacfjVGwrCcSi5D3btRO2GZ8pf1K1UN7Z9H5J57hjVU2Qzxr1xO+FmBhOvEkzCMmg==" - }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "dependencies": { - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "node_modules/sequelize": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.7.0.tgz", - "integrity": "sha512-OVw3psUggqQT9kYg5Z9fja/BMdBxX/Ua3Bwx2yif5g6QuYEE4UfWq5jW6LmbacGwgK6bgZs05Q2zCkJZCDFrSA==", - "dependencies": { - "debug": "^4.1.1", - "dottie": "^2.0.0", - "inflection": "1.13.1", - "lodash": "^4.17.20", - "moment": "^2.26.0", - "moment-timezone": "^0.5.31", - "retry-as-promised": "^3.2.0", - "semver": "^7.3.2", - "sequelize-pool": "^6.0.0", - "toposort-class": "^1.0.1", - "uuid": "^8.1.0", - "validator": "^13.6.0", - "wkx": "^0.5.0" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependenciesMeta": { - "mariadb": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-hstore": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "tedious": { - "optional": true - } - } - }, - "node_modules/sequelize-cli": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-6.2.0.tgz", - "integrity": "sha512-6WQ2x91hg30dUn66mXHnzvHATZ4pyI1GHSNbS/TNN/vRR4BLRSLijadeMgC8zqmKDsL0VqzVVopJWfJakuP++Q==", - "dev": true, - "dependencies": { - "cli-color": "^1.4.0", - "fs-extra": "^7.0.1", - "js-beautify": "^1.8.8", - "lodash": "^4.17.5", - "resolve": "^1.5.0", - "umzug": "^2.3.0", - "yargs": "^13.1.0" - }, - "bin": { - "sequelize": "lib/sequelize", - "sequelize-cli": "lib/sequelize" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/sequelize-cli/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/sequelize-cli/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/sequelize-cli/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/sequelize-cli/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sequelize-cli/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/sequelize-cli/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sequelize-cli/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sequelize-cli/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sequelize-cli/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sequelize-cli/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/sequelize-cli/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sequelize-cli/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sequelize-cli/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sequelize-cli/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/sequelize-cli/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/sequelize-cli/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/sequelize-pool": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-6.1.0.tgz", - "integrity": "sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/sequelize/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sequelize/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sequelize/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "node_modules/set-getter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.1.tgz", - "integrity": "sha512-9sVWOy+gthr+0G9DzqqLaYNA7+5OKkSmcqjL9cBpDEaZrr3ShQlyX2cZ/O/ozE41oxn/Tt0LGEM/w4Rub3A3gw==", - "dependencies": { - "to-object-path": "^0.3.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-3.0.2.tgz", - "integrity": "sha512-npjkVoz+ank0zjlV9F47Fdbjfj/PfXyVhZvGALWsyIYU/qrMzpi6avjKW3/7KeSU2Df3I46BrN1xOI1+6vW0hA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "node_modules/shallow-clone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", - "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", - "dependencies": { - "is-extendable": "^0.1.1", - "kind-of": "^5.0.0", - "mixin-object": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shallow-clone/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, - "node_modules/signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" - }, - "node_modules/simple-lru-cache": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/simple-lru-cache/-/simple-lru-cache-0.0.2.tgz", - "integrity": "sha1-1ZzDoZPBpdAyD4Tucy9uRxPlEd0=", - "dev": true - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/sinon": { - "version": "9.2.4", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", - "integrity": "sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.8.1", - "@sinonjs/fake-timers": "^6.0.1", - "@sinonjs/samsam": "^5.3.1", - "diff": "^4.0.2", - "nise": "^4.0.4", - "supports-color": "^7.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" - } - }, - "node_modules/sinon/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/sinon/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sinon/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sorted-array-functions": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", - "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "dev": true, - "dependencies": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/spawn-wrap/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/spawn-wrap/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/spawn-wrap/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", - "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", - "dev": true - }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/split2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "engines": { - "node": "*" - } - }, - "node_modules/standard": { - "version": "14.3.4", - "resolved": "https://registry.npmjs.org/standard/-/standard-14.3.4.tgz", - "integrity": "sha512-+lpOkFssMkljJ6eaILmqxHQ2n4csuEABmcubLTb9almFi1ElDzXb1819fjf/5ygSyePCq4kU2wMdb2fBfb9P9Q==", - "dev": true, - "dependencies": { - "eslint": "~6.8.0", - "eslint-config-standard": "14.1.1", - "eslint-config-standard-jsx": "8.1.0", - "eslint-plugin-import": "~2.18.0", - "eslint-plugin-node": "~10.0.0", - "eslint-plugin-promise": "~4.2.1", - "eslint-plugin-react": "~7.14.2", - "eslint-plugin-standard": "~4.0.0", - "standard-engine": "^12.0.0" - }, - "bin": { - "standard": "bin/cmd.js" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/standard-engine": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-12.1.0.tgz", - "integrity": "sha512-DVJnWM1CGkag4ucFLGdiYWa5/kJURPONmMmk17p8FT5NE4UnPZB1vxWnXnRo2sPSL78pWJG8xEM+1Tu19z0deg==", - "dev": true, - "dependencies": { - "deglob": "^4.0.1", - "get-stdin": "^7.0.0", - "minimist": "^1.2.5", - "pkg-conf": "^3.1.0" - }, - "engines": { - "node": ">=8.10" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stream-consume": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz", - "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==" - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-color": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/strip-color/-/strip-color-0.1.0.tgz", - "integrity": "sha1-EG9l09PmotlAHKwOsM6LinArT3s=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stripe": { - "version": "8.183.0", - "resolved": "https://registry.npmjs.org/stripe/-/stripe-8.183.0.tgz", - "integrity": "sha512-QcM3nimH1CuP49VPPRt36Wgfu4QoS+Wm0eyGMis7Ej+seWFKqMffMdx7TE2gn8dVsJIOA1kDuIbAQGqpZHozGA==", - "dependencies": { - "@types/node": ">=8.1.0", - "qs": "^6.6.0" - }, - "engines": { - "node": "^8.1 || >=10.*" - } - }, - "node_modules/success-symbol": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz", - "integrity": "sha1-JAIuSG878c3KCUKDt2nEctO3KJc=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/superagent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz", - "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==", - "dependencies": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.2", - "debug": "^4.1.1", - "fast-safe-stringify": "^2.0.7", - "form-data": "^3.0.0", - "formidable": "^1.2.2", - "methods": "^1.1.2", - "mime": "^2.4.6", - "qs": "^6.9.4", - "readable-stream": "^3.6.0", - "semver": "^7.3.2" - }, - "engines": { - "node": ">= 7.0.0" - } - }, - "node_modules/superagent/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/superagent/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/superagent/node_modules/mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/superagent/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/superagent/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/superagent/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/table/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/table/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "node_modules/table/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/table/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tc-core-library-js": { - "version": "2.4.0", - "resolved": "git+ssh://git@github.com/appirio-tech/tc-core-library-js.git#d16413db30b1eed21c0cf426e185bedb2329ddab", - "integrity": "sha512-eeuzgnnGTgaTrVvEVW5bbZoSZ6CCXYppqNf8V3j5UiGLu0Th+5gIfqguUxoPtVIebZc/3tBbfUaUYhkhOaIY3Q==", - "license": "ISC", - "dependencies": { - "auth0-js": "^9.4.2", - "axios": "^0.12.0", - "bunyan": "^1.8.12", - "jsonwebtoken": "^8.3.0", - "jwks-rsa": "^1.3.0", - "le_node": "^1.3.1", - "lodash": "^4.17.10", - "millisecond": "^0.1.2", - "request": "^2.88.0" - }, - "engines": { - "node": ">= 5" - } - }, - "node_modules/tc-core-library-js/node_modules/axios": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.12.0.tgz", - "integrity": "sha1-uQewIhzDTsHJ+sGOx/B935V4W6Q=", - "deprecated": "Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410", - "dependencies": { - "follow-redirects": "0.0.7" - } - }, - "node_modules/tc-core-library-js/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/tc-core-library-js/node_modules/follow-redirects": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", - "integrity": "sha1-NLkLqyqRGqNHVx2pDyK9NuzYqRk=", - "dependencies": { - "debug": "^2.2.0", - "stream-consume": "^0.1.0" - } - }, - "node_modules/tc-core-library-js/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/terminal-paginator": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/terminal-paginator/-/terminal-paginator-2.0.2.tgz", - "integrity": "sha512-IZMT5ECF9p4s+sNCV8uvZSW9E1+9zy9Ji9xz2oee8Jfo7hUFpauyjxkhfRcIH6Lu3Wdepv5D1kVRc8Hx74/LfQ==", - "dependencies": { - "debug": "^2.6.6", - "extend-shallow": "^2.0.1", - "log-utils": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terminal-paginator/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/terminal-paginator/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "node_modules/time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", - "dev": true, - "dependencies": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/to-regex-range/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/toggle-array": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toggle-array/-/toggle-array-1.0.1.tgz", - "integrity": "sha1-y/WEB5K9UJfzMReugkyTKv/ofVg=", - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/topo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", - "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", - "deprecated": "This module has moved and is now available at @hapi/topo. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", - "dependencies": { - "hoek": "6.x.x" - } - }, - "node_modules/topo/node_modules/hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==", - "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues." - }, - "node_modules/toposort-class": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" - }, - "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "dependencies": { - "nopt": "~1.0.10" - }, - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/triple-beam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/uglify-js": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz", - "integrity": "sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==", - "dev": true, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/umzug": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", - "integrity": "sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==", - "dev": true, - "dependencies": { - "bluebird": "^3.7.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true - }, - "node_modules/underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" - }, - "node_modules/unfetch": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", - "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" - }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "dev": true, - "dependencies": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/update-notifier/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/update-notifier/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/update-notifier/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/update-notifier/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urijs": { - "version": "1.19.7", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.7.tgz", - "integrity": "sha512-Id+IKjdU0Hx+7Zx717jwLPsPeUqz7rAtuVBRLLs+qn+J2nf9NGITWVCxcijgYxBqe83C7sqsQPs6H1pyz3x9gA==" - }, - "node_modules/url": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - }, - "node_modules/util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/validator": { - "version": "13.6.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.6.0.tgz", - "integrity": "sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "node_modules/warning-symbol": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/warning-symbol/-/warning-symbol-0.1.0.tgz", - "integrity": "sha1-uzHdEbeg+dZ6su2V9Fe2WCW7rSE=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "node_modules/which-typed-array": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", - "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/winchan": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/winchan/-/winchan-0.2.2.tgz", - "integrity": "sha512-pvN+IFAbRP74n/6mc6phNyCH8oVkzXsto4KCHPJ2AScniAnA1AmeLI03I2BzjePpaClGSI4GUMowzsD3qz5PRQ==" - }, - "node_modules/window-size": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-1.1.1.tgz", - "integrity": "sha512-5D/9vujkmVQ7pSmc0SCBmHXbkv6eaHwXEx65MywhmUMsI8sGqJ972APq1lotfcwMKPFLuCFfL8xGHLIp7jaBmA==", - "dependencies": { - "define-property": "^1.0.0", - "is-number": "^3.0.0" - }, - "bin": { - "window-size": "cli.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/window-size/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/winston": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", - "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", - "dependencies": { - "@dabh/diagnostics": "^2.0.2", - "async": "^3.1.0", - "is-stream": "^2.0.0", - "logform": "^2.2.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.4.0" - }, - "engines": { - "node": ">= 6.4.0" - } - }, - "node_modules/winston-transport": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", - "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", - "dependencies": { - "readable-stream": "^2.3.7", - "triple-beam": "^1.2.0" - }, - "engines": { - "node": ">= 6.4.0" - } - }, - "node_modules/winston/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/wkx": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", - "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "node_modules/workerpool": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", - "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dependencies": { - "mkdirp": "^0.5.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/wrr-pool": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/wrr-pool/-/wrr-pool-1.1.4.tgz", - "integrity": "sha512-+lEdj42HlYqmzhvkZrx6xEymj0wzPBxqr7U1Xh9IWikMzOge03JSQT9YzTGq54SkOh/noViq32UejADZVzrgAg==", - "dev": true, - "dependencies": { - "lodash": "^4.17.11" - } - }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" - } - }, - "node_modules/xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "requires": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.18.6" } }, "@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.1.tgz", + "integrity": "sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==", "dev": true }, "@babel/core": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz", - "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.15.8", - "@babel/generator": "^7.15.8", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.8", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.8", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.1.tgz", + "integrity": "sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.0", + "@babel/helper-compilation-targets": "^7.19.1", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helpers": "^7.19.0", + "@babel/parser": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "json5": "^2.2.1", + "semver": "^6.3.0" }, "dependencies": { "semver": { @@ -11398,43 +56,42 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, "@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.0.tgz", + "integrity": "sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==", "dev": true, "requires": { - "@babel/types": "^7.15.6", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.19.0", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" }, "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } } } }, "@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz", + "integrity": "sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==", "dev": true, "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "@babel/compat-data": "^7.19.1", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", "semver": "^6.3.0" }, "dependencies": { @@ -11446,170 +103,143 @@ } } }, - "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" - } + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true }, - "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" } }, "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz", + "integrity": "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" } }, "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.18.6" } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.18.6" } }, + "@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "dev": true + }, "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" }, "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true }, "@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", + "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", "dev": true, "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" } }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz", + "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==", "dev": true }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.1.tgz", + "integrity": "sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.19.1", + "@babel/types": "^7.19.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -11623,19 +253,25 @@ } }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", + "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" } }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" + }, "@dabh/diagnostics": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", - "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", "requires": { "colorspace": "1.1.x", "enabled": "2.0.x", @@ -11652,27 +288,12 @@ "ms": "^2.1.1", "pump": "^3.0.0", "secure-json-parse": "^2.1.0" - }, - "dependencies": { - "decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "requires": { - "mimic-response": "^2.0.0" - } - }, - "mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" - } } }, "@hapi/hoek": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", - "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" }, "@hapi/topo": { "version": "5.1.0", @@ -11760,10 +381,68 @@ "moment": "2.x.x" } }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@postman/form-data": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@postman/form-data/-/form-data-3.1.1.tgz", + "integrity": "sha512-vjh8Q2a8S6UCm/KKs31XFJqEEgmbjBmpPNVV2eVav6905wyFAwaUOBGA1NPBI4ERH9MMZc6w0umFgM6WbEPMdg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "@postman/tunnel-agent": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.3.tgz", + "integrity": "sha512-k57fzmAZ2PJGxfOA4SGR05ejorHbVAa/84Hxh/2nAztjNXc4ZjOm9NUIk6/Z6LCrBvJZqjRZbN8e/nROVUPVdg==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, "@sideway/address": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz", - "integrity": "sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", "requires": { "@hapi/hoek": "^9.0.0" } @@ -11778,12 +457,6 @@ "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true - }, "@sinonjs/commons": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", @@ -11814,33 +487,24 @@ } }, "@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", "dev": true }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "requires": { - "defer-to-connect": "^1.0.1" - } - }, "@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" }, "@topcoder-platform/topcoder-bus-api-wrapper": { - "version": "git+ssh://git@github.com/topcoder-platform/tc-bus-api-wrapper.git#f8cbd335a0e0b4d6edd7cae859473593271fd97f", - "from": "@topcoder-platform/topcoder-bus-api-wrapper@github:topcoder-platform/tc-bus-api-wrapper", + "version": "github:topcoder-platform/tc-bus-api-wrapper#f8cbd335a0e0b4d6edd7cae859473593271fd97f", + "from": "github:topcoder-platform/tc-bus-api-wrapper", "requires": { "joi": "^13.4.0", "lodash": "^4.17.15", "superagent": "^3.8.3", - "tc-core-library-js": "appirio-tech/tc-core-library-js.git#v2.6.4" + "tc-core-library-js": "github:appirio-tech/tc-core-library-js#v2.6.4" }, "dependencies": { "debug": { @@ -11879,8 +543,8 @@ } }, "tc-core-library-js": { - "version": "git+ssh://git@github.com/appirio-tech/tc-core-library-js.git#df0b36c51cf80918194cbff777214b3c0cf5a151", - "from": "tc-core-library-js@appirio-tech/tc-core-library-js.git#v2.6.4", + "version": "github:appirio-tech/tc-core-library-js#df0b36c51cf80918194cbff777214b3c0cf5a151", + "from": "github:appirio-tech/tc-core-library-js#v2.6.4", "requires": { "axios": "^0.19.0", "bunyan": "^1.8.12", @@ -11897,13 +561,13 @@ "@types/bluebird": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-JjNHCk6r6aR82aRf2yDtX5NAe8o=", + "integrity": "sha512-dv15CXZ8s0Q2ArJtOsDqh1FAmW9giEy1V92SnhQ40/CbKlQvZf1gSH4IIst1SQ226ye52kkK7Lye1TjTCFVEZg==", "dev": true }, "@types/body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", "requires": { "@types/connect": "*", "@types/node": "*" @@ -11917,10 +581,18 @@ "@types/node": "*" } }, + "@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "requires": { + "@types/ms": "*" + } + }, "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", "requires": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.18", @@ -11938,9 +610,9 @@ } }, "@types/express-serve-static-core": { - "version": "4.17.24", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", - "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", + "version": "4.17.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", "requires": { "@types/node": "*", "@types/qs": "*", @@ -11948,28 +620,33 @@ } }, "@types/express-unless": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.2.tgz", - "integrity": "sha512-Q74UyYRX/zIgl1HSp9tUX2PlG8glkVm+59r7aK4KGKzC5jqKIOX6rrVLRQrzpZUQ84VukHtRoeAuon2nIssHPQ==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.3.tgz", + "integrity": "sha512-TyPLQaF6w8UlWdv4gj8i46B+INBVzURBNRahCozCSXfsK2VTlL1wNyTlMKw817VHygBtlcl5jfnPadlydr06Yw==", "requires": { "@types/express": "*" } }, "@types/lodash": { - "version": "4.14.175", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.175.tgz", - "integrity": "sha512-XmdEOrKQ8a1Y/yxQFOMbC47G/V2VDO1GvMRnl4O75M4GW/abC5tnfzadQYkqEveqRM1dEJGFFegfPNA2vvx2iw==", + "version": "4.14.185", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.185.tgz", + "integrity": "sha512-evMDG1bC4rgQg4ku9tKpuMh5iBNEwNa3tf9zRHdP1qlv+1WUg44xat4IxCE14gIpZRGUUWAx2VhItCZc25NfMA==", "dev": true }, "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" + }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "@types/node": { - "version": "16.11.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.1.tgz", - "integrity": "sha512-PYGcJHL9mwl1Ek3PLiYgyEKtwTMmkMw4vbiyz/ps3pfdRYLVv+SN7qHVAImrjdAXxgluDEw6Ph4lyv+m9UpRmA==" + "version": "18.7.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.18.tgz", + "integrity": "sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg==" }, "@types/qs": { "version": "6.9.7", @@ -11982,14 +659,19 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "requires": { - "@types/mime": "^1", + "@types/mime": "*", "@types/node": "*" } }, + "@types/validator": { + "version": "13.7.6", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.6.tgz", + "integrity": "sha512-uBsnWETsUagQ0n6G2wcXNIufpTNJir0zqzG4p62fhnwzs48d/iuOWEEo0d3iUxN7D+9R/8CSvWGKS+KmaD0mWA==" + }, "@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", @@ -12003,101 +685,57 @@ "dev": true }, "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" } }, "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "requires": {} - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "requires": { - "string-width": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ansi-bgblack": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-bgblack/-/ansi-bgblack-0.1.1.tgz", - "integrity": "sha1-poulAHiHcBtqr74/oNrf36juPKI=", + "integrity": "sha512-tp8M/NCmSr6/skdteeo9UgJ2G1rG88X3ZVNZWXUxFw4Wh0PAGaAAWQS61sfBt/1QNcwMTY3EBKOMPujwioJLaw==", "requires": { "ansi-wrap": "0.1.0" } @@ -12105,7 +743,7 @@ "ansi-bgblue": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-bgblue/-/ansi-bgblue-0.1.1.tgz", - "integrity": "sha1-Z73ATtybm1J4lp2hlt6j11yMNhM=", + "integrity": "sha512-R8JmX2Xv3+ichUQE99oL+LvjsyK+CDWo/BtVb4QUz3hOfmf2bdEmiDot3fQcpn2WAHW3toSRdjSLm6bgtWRDlA==", "requires": { "ansi-wrap": "0.1.0" } @@ -12113,7 +751,7 @@ "ansi-bgcyan": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-bgcyan/-/ansi-bgcyan-0.1.1.tgz", - "integrity": "sha1-WEiUJWAL3p9VBwaN2Wnr/bUP52g=", + "integrity": "sha512-6SByK9q2H978bmqzuzA5NPT1lRDXl3ODLz/DjC4URO5f/HqK7dnRKfoO/xQLx/makOz7zWIbRf6+Uf7bmaPSkQ==", "requires": { "ansi-wrap": "0.1.0" } @@ -12121,7 +759,7 @@ "ansi-bggreen": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-bggreen/-/ansi-bggreen-0.1.1.tgz", - "integrity": "sha1-TjGRJIUplD9DIelr8THRwTgWr0k=", + "integrity": "sha512-8TRtOKmIPOuxjpklrkhUbqD2NnVb4WZQuIjXrT+TGKFKzl7NrL7wuNvEap3leMt2kQaCngIN1ZzazSbJNzF+Aw==", "requires": { "ansi-wrap": "0.1.0" } @@ -12129,7 +767,7 @@ "ansi-bgmagenta": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-bgmagenta/-/ansi-bgmagenta-0.1.1.tgz", - "integrity": "sha1-myhDLAduqpmUGGcqPvvhk5HCx6E=", + "integrity": "sha512-UZYhobiGAlV4NiwOlKAKbkCyxOl1PPZNvdIdl/Ce5by45vwiyNdBetwHk/AjIpo1Ji9z+eE29PUBAjjfVmz5SA==", "requires": { "ansi-wrap": "0.1.0" } @@ -12137,7 +775,7 @@ "ansi-bgred": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-bgred/-/ansi-bgred-0.1.1.tgz", - "integrity": "sha1-p2+Sg4OCukMpCmwXeEJPmE1vEEE=", + "integrity": "sha512-BpPHMnYmRBhcjY5knRWKjQmPDPvYU7wrgBSW34xj7JCH9+a/SEIV7+oSYVOgMFopRIadOz9Qm4zIy+mEBvUOPA==", "requires": { "ansi-wrap": "0.1.0" } @@ -12145,7 +783,7 @@ "ansi-bgwhite": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-bgwhite/-/ansi-bgwhite-0.1.1.tgz", - "integrity": "sha1-ZQRlE3elim7OzQMxmU5IAljhG6g=", + "integrity": "sha512-KIF19t+HOYOorUnHTOhZpeZ3bJsjzStBG2hSGM0WZ8YQQe4c7lj9CtwnucscJDPrNwfdz6GBF+pFkVfvHBq6uw==", "requires": { "ansi-wrap": "0.1.0" } @@ -12153,7 +791,7 @@ "ansi-bgyellow": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-bgyellow/-/ansi-bgyellow-0.1.1.tgz", - "integrity": "sha1-w/4usIzUdmSAKeaHTRWgs49h1E8=", + "integrity": "sha512-WyRoOFSIvOeM7e7YdlSjfAV82Z6K1+VUVbygIQ7C/VGzWYuO/d30F0PG7oXeo4uSvSywR0ozixDQvtXJEorq4Q==", "requires": { "ansi-wrap": "0.1.0" } @@ -12161,7 +799,7 @@ "ansi-black": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-black/-/ansi-black-0.1.1.tgz", - "integrity": "sha1-9hheiJNgslRaHsUMC/Bj/EMDJFM=", + "integrity": "sha512-hl7re02lWus7lFOUG6zexhoF5gssAfG5whyr/fOWK9hxNjUFLTjhbU/b4UHWOh2dbJu9/STSUv+80uWYzYkbTQ==", "requires": { "ansi-wrap": "0.1.0" } @@ -12169,7 +807,7 @@ "ansi-blue": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-blue/-/ansi-blue-0.1.1.tgz", - "integrity": "sha1-FbgEmQ6S/JyoxUds6PaZd3wh7b8=", + "integrity": "sha512-8Um59dYNDdQyoczlf49RgWLzYgC2H/28W3JAIyOAU/+WkMcfZmaznm+0i1ikrE0jME6Ypk9CJ9CY2+vxbPs7Fg==", "requires": { "ansi-wrap": "0.1.0" } @@ -12177,7 +815,7 @@ "ansi-bold": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-bold/-/ansi-bold-0.1.1.tgz", - "integrity": "sha1-PmOVCvWswq4uZw5vZ96xFdGl9QU=", + "integrity": "sha512-wWKwcViX1E28U6FohtWOP4sHFyArELHJ2p7+3BzbibqJiuISeskq6t7JnrLisUngMF5zMhgmXVw8Equjzz9OlA==", "requires": { "ansi-wrap": "0.1.0" } @@ -12185,7 +823,7 @@ "ansi-colors": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-0.2.0.tgz", - "integrity": "sha1-csMd4qDZoszQysMMyYI+6y9kNLU=", + "integrity": "sha512-ScRNUT0TovnYw6+Xo3iKh6G+VXDw2Ds7ZRnMIuKBgHY02DgvT2T2K22/tc/916Fi0W/5Z1RzDaHQwnp75hqdbA==", "requires": { "ansi-bgblack": "^0.1.1", "ansi-bgblue": "^0.1.1", @@ -12219,7 +857,7 @@ "ansi-cyan": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", - "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", + "integrity": "sha512-eCjan3AVo/SxZ0/MyIYRtkpxIu/H3xZN7URr1vXVrISxeyz8fUFz0FJziamK4sS8I+t35y4rHg1b2PklyBe/7A==", "requires": { "ansi-wrap": "0.1.0" } @@ -12227,7 +865,7 @@ "ansi-dim": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-dim/-/ansi-dim-0.1.1.tgz", - "integrity": "sha1-QN5MYDqoCG2Oeoa4/5mNXDbu/Ww=", + "integrity": "sha512-zAfb1fokXsq4BoZBkL0eK+6MfFctbzX3R4UMcoWrL1n2WHewFKentTvOZv2P11u6P4NtW/V47hVjaN7fJiefOg==", "requires": { "ansi-wrap": "0.1.0" } @@ -12250,7 +888,7 @@ "ansi-gray": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", "requires": { "ansi-wrap": "0.1.0" } @@ -12258,7 +896,7 @@ "ansi-green": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz", - "integrity": "sha1-il2al55FjVfEDjNYCzc5C44Q0Pc=", + "integrity": "sha512-WJ70OI4jCaMy52vGa/ypFSKFb/TrYNPaQ2xco5nUwE0C5H8piume/uAZNNdXXiMQ6DbRmiE7l8oNBHu05ZKkrw==", "requires": { "ansi-wrap": "0.1.0" } @@ -12266,7 +904,7 @@ "ansi-grey": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-grey/-/ansi-grey-0.1.1.tgz", - "integrity": "sha1-WdmLasK6GfilF5jphT+6eDOaM8E=", + "integrity": "sha512-+J1nM4lC+whSvf3T4jsp1KR+C63lypb+VkkwtLQMc1Dlt+nOvdZpFT0wwFTYoSlSwCcLUAaOpHF6kPkYpSa24A==", "requires": { "ansi-wrap": "0.1.0" } @@ -12274,7 +912,7 @@ "ansi-hidden": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-hidden/-/ansi-hidden-0.1.1.tgz", - "integrity": "sha1-7WpMSY0rt8uyidvyqNHcyFZ/rg8=", + "integrity": "sha512-8gB1bo9ym9qZ/Obvrse1flRsfp2RE+40B23DhQcKxY+GSeaOJblLnzBOxzvmLTWbi5jNON3as7wd9rC0fNK73Q==", "requires": { "ansi-wrap": "0.1.0" } @@ -12282,7 +920,7 @@ "ansi-inverse": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-inverse/-/ansi-inverse-0.1.1.tgz", - "integrity": "sha1-tq9Fgm/oJr+1KKbHmIV5Q1XM0mk=", + "integrity": "sha512-Kq8Z0dBRhQhDMN/Rso1Nu9niwiTsRkJncfJZXiyj7ApbfJrGrrubHXqXI37feJZkYcIx6SlTBdNCeK0OQ6X6ag==", "requires": { "ansi-wrap": "0.1.0" } @@ -12290,7 +928,7 @@ "ansi-italic": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-italic/-/ansi-italic-0.1.1.tgz", - "integrity": "sha1-EEdDRj9iXBQqA2c5z4XtpoiYbyM=", + "integrity": "sha512-jreCxifSAqbaBvcibeQxcwhQDbEj7gF69XnpA6x83qbECEBaRBD1epqskrmov1z4B+zzQuEdwbWxgzvhKa+PkA==", "requires": { "ansi-wrap": "0.1.0" } @@ -12298,7 +936,7 @@ "ansi-magenta": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-magenta/-/ansi-magenta-0.1.1.tgz", - "integrity": "sha1-BjtboW+z8j4c/aKwfAqJ3hHkMK4=", + "integrity": "sha512-A1Giu+HRwyWuiXKyXPw2AhG1yWZjNHWO+5mpt+P+VWYkmGRpLPry0O5gmlJQEvpjNpl4RjFV7DJQ4iozWOmkbQ==", "requires": { "ansi-wrap": "0.1.0" } @@ -12306,20 +944,20 @@ "ansi-red": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "integrity": "sha512-ewaIr5y+9CUTGFwZfpECUbFlGcC0GCw1oqR9RI6h1gQCd9Aj2GxSckCnPsVJnmfMZbwFYE+leZGASgkWl06Jow==", "requires": { "ansi-wrap": "0.1.0" } }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==" }, "ansi-reset": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-reset/-/ansi-reset-0.1.1.tgz", - "integrity": "sha1-5+cSksPH3c1NYu9KbHwFmAkRw7c=", + "integrity": "sha512-n+D0qD3B+h/lP0dSwXX1SZMoXufdUVotLMwUuvXa50LtBAh3f+WV8b5nFMfLL/hgoPBUt+rG/pqqzF8krlZKcw==", "requires": { "ansi-wrap": "0.1.0" } @@ -12327,7 +965,7 @@ "ansi-strikethrough": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-strikethrough/-/ansi-strikethrough-0.1.1.tgz", - "integrity": "sha1-2Eh3FAss/wfRyT685pkE9oiF5Wg=", + "integrity": "sha512-gWkLPDvHH2pC9YEKqp8dIl0mg3sRglMPvioqGDIOXiwxjxUwIJ1gF86E2o4R5yLNh8IAkwHbaMtASkJfkQ2hIA==", "requires": { "ansi-wrap": "0.1.0" } @@ -12343,7 +981,7 @@ "ansi-underline": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-underline/-/ansi-underline-0.1.1.tgz", - "integrity": "sha1-38kg9Ml7WXfqFi34/7mIMIqqcaQ=", + "integrity": "sha512-D+Bzwio/0/a0Fu5vJzrIT6bFk43TW46vXfSvzysOTEHcXOAUJTVMHWDbELIzGU4AVxVw2rCTb7YyWS4my2cSKQ==", "requires": { "ansi-wrap": "0.1.0" } @@ -12351,7 +989,7 @@ "ansi-white": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-white/-/ansi-white-0.1.1.tgz", - "integrity": "sha1-nHe3wZPF7pkuYBHTbsTJIbRXiUQ=", + "integrity": "sha512-DJHaF2SRzBb9wZBgqIJNjjTa7JUJTO98sHeTS1sDopyKKRopL1KpaJ20R6W2f/ZGras8bYyIZDtNwYOVXNgNFg==", "requires": { "ansi-wrap": "0.1.0" } @@ -12359,21 +997,16 @@ "ansi-wrap": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==" }, "ansi-yellow": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-yellow/-/ansi-yellow-0.1.1.tgz", - "integrity": "sha1-y5NW8vRscy8OMZnmEClVp32oPB0=", + "integrity": "sha512-6E3D4BQLXHLl3c/NwirWVZ+BCkMq2qsYxdeAGGOijKrx09FaqU+HktFL6QwAwNvgJiMLnv6AQ2C1gFZx0h1CBg==", "requires": { "ansi-wrap": "0.1.0" } }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" - }, "anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", @@ -12396,7 +1029,7 @@ "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", "dev": true }, "argparse": { @@ -12415,7 +1048,7 @@ "arr-swap": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arr-swap/-/arr-swap-1.0.1.tgz", - "integrity": "sha1-FHWQ7WX8gVvAf+8Jl8Llgj1kNTQ=", + "integrity": "sha512-SxBKd/By8+AaREcv/ZhFqmapfpqK4kyaQkUHwmJjlczI5ZtuuT5gofKHlCrSJ4oR7zXezFhv+7zsnLEdg9uGgQ==", "requires": { "is-number": "^3.0.0" }, @@ -12423,7 +1056,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "requires": { "kind-of": "^3.0.2" } @@ -12433,25 +1066,25 @@ "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", "get-intrinsic": "^1.1.1", "is-string": "^1.0.7" } }, "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "requires": { "safer-buffer": "~2.1.0" } @@ -12459,7 +1092,7 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" }, "assertion-error": { "version": "1.1.0", @@ -12473,9 +1106,9 @@ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" }, "async": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz", - "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==" + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "async-mutex": { "version": "0.3.2", @@ -12483,24 +1116,23 @@ "integrity": "sha512-HuTK7E7MT7jZEh1P9GtRW9+aTWiDWWi9InbZ5hjxrnRa39KS4BW04+xLBhYNS2aXhHUIKZSw3gj4Pn1pj+qGAA==", "requires": { "tslib": "^2.3.1" - }, - "dependencies": { - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - } } }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true }, "auth0-js": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/auth0-js/-/auth0-js-9.17.0.tgz", - "integrity": "sha512-rqHhOq6ZgOaHwz0e46YywsGW4Y2wLF3Fu+y2wT94vbEFNAi5vyJHJYVyNAetAN7w7Ljhda/7SsUs/usuEMRBpQ==", + "version": "9.19.1", + "resolved": "https://registry.npmjs.org/auth0-js/-/auth0-js-9.19.1.tgz", + "integrity": "sha512-pWg7v4ZGkLI4IY6bzWLEKc4WVwxMgSw62pEW36lbzzhFGDvvRIFZ+msnrdcDTWmFVyXYryyEcI1M7Oeghus0dQ==", "requires": { "base64-js": "^1.5.1", "idtoken-verifier": "^2.2.2", @@ -12530,9 +1162,9 @@ } }, "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" }, "readable-stream": { "version": "3.6.0", @@ -12545,9 +1177,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "requires": { "lru-cache": "^6.0.0" } @@ -12583,32 +1215,33 @@ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" }, "aws-sdk": { - "version": "2.1011.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1011.0.tgz", - "integrity": "sha512-U5CDmLUHYAur89+Rx1r3X5gRzc8ib90G9aaKnyGqLsIail24r6UINejJB8pyOzFQ+u22/kFKKclfXcTj/Hflbg==", + "version": "2.1220.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1220.0.tgz", + "integrity": "sha512-l8KEOo2Cb066lLPhVDucx6JuNUrMVmZW937htKagf8rcADCbM0ySIGGKWbi2E8l44ptX3/tDOFnyiSislolATQ==", "requires": { "buffer": "4.9.2", "events": "1.1.1", "ieee754": "1.1.13", - "jmespath": "0.15.0", + "jmespath": "0.16.0", "querystring": "0.2.0", "sax": "1.2.1", "url": "0.10.3", - "uuid": "3.3.2", + "util": "^0.12.4", + "uuid": "8.0.0", "xml2js": "0.4.19" }, "dependencies": { "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==" } } }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" }, "aws4": { "version": "1.11.0", @@ -12626,7 +1259,7 @@ "babel-runtime": { "version": "6.6.1", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.6.1.tgz", - "integrity": "sha1-eIuUtvY04luRvWxd9y1GdFevsAA=", + "integrity": "sha512-5pdhO3jaxqh9L42oBfbrqy58swDhciM47sRGoODURdRxwfiqttEvK87LX27W/PYY6f4cJt2mEdyoLcr/+cM/iw==", "requires": { "core-js": "^2.1.0" } @@ -12634,7 +1267,7 @@ "backoff": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", - "integrity": "sha1-9hbtqdPktmuMp/ynn2lXIsX44m8=", + "integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==", "requires": { "precond": "0.2" } @@ -12652,7 +1285,7 @@ "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "requires": { "tweetnacl": "^0.14.3" } @@ -12675,26 +1308,28 @@ "dev": true }, "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "integrity": "sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==", "dev": true }, "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "requires": { - "bytes": "3.1.0", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "dependencies": { "debug": { @@ -12708,12 +1343,15 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "requires": { + "side-channel": "^1.0.4" + } } } }, @@ -12722,111 +1360,6 @@ "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" }, - "boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "dev": true, - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -12845,6 +1378,15 @@ "fill-range": "^7.0.1" } }, + "brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "dev": true, + "requires": { + "base64-js": "^1.1.2" + } + }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -12852,16 +1394,15 @@ "dev": true }, "browserslist": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.4.tgz", - "integrity": "sha512-Zg7RpbZpIJRW3am9Lyckue7PLytvVxxhJj1CaJVlCWENsGEAOlnlt8X0ZxGRPp7Bt9o8tIRM5SEXy4BCPMJjLQ==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001265", - "electron-to-chromium": "^1.3.867", - "escalade": "^3.1.1", - "node-releases": "^2.0.0", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" } }, "buffer": { @@ -12877,13 +1418,13 @@ "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true }, "buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" }, "buffer-writer": { "version": "2.0.0", @@ -12902,41 +1443,9 @@ } }, "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - } - } + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, "caching-transform": { "version": "4.0.0", @@ -12965,32 +1474,33 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, "caniuse-lite": { - "version": "1.0.30001270", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001270.tgz", - "integrity": "sha512-TcIC7AyNWXhcOmv2KftOl1ShFAaHQYcB/EPL/hEyMrcS7ZX0/DvV1aoy6BzV0+16wTpoAyTMGDNAJfSqS/rz7A==", + "version": "1.0.30001407", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001407.tgz", + "integrity": "sha512-4ydV+t4P7X3zH83fQWNDX/mQEzYomossfpViCOx9zHBSMV+rIe3LFqglHHtVyvNl1FhTNxPxs3jei82iqOW04w==", "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", "dev": true, "requires": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", "deep-eql": "^3.0.1", "get-func-name": "^2.0.0", + "loupe": "^2.3.1", "pathval": "^1.1.1", "type-detect": "^4.0.5" } @@ -13010,16 +1520,22 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, + "charset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/charset/-/charset-1.0.1.tgz", + "integrity": "sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg==", + "dev": true + }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", "dev": true }, "choices-separator": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/choices-separator/-/choices-separator-2.0.0.tgz", - "integrity": "sha1-kv0XYxgteQM/XFxR0Lo1LlVnxpY=", + "integrity": "sha512-BCKlzRcP2V6X+85TSKn09oGZkO2zK2zytGyZeHvM2s+kv/ydAzJtsc+rZqYRWNlojIBfkOnPxgKXrBefTFZbTQ==", "requires": { "ansi-dim": "^0.1.1", "debug": "^2.6.6", @@ -13031,80 +1547,146 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "ms": "2.0.0" + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-color": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz", + "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==", + "dev": true, + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.61", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-progress": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.10.0.tgz", + "integrity": "sha512-kLORQrhYCAtUPLZxqsAt2YJGOvRdt34+O6jl5cQGb7iF3dM55FQZlTR+rQyIK9JUcO9bBMwZsTlND+3dmFU2Cw==", + "dev": true, + "requires": { + "string-width": "^4.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, - "chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - } - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true - }, - "cli-color": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", - "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", + "cli-table3": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", + "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", "dev": true, "requires": { - "ansi-regex": "^2.1.1", - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "memoizee": "^0.4.14", - "timers-ext": "^0.1.5" + "colors": "1.4.0", + "string-width": "^4.2.0" }, "dependencies": { "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } } } }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { - "restore-cursor": "^3.1.0" - } - }, "cli-width": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", @@ -13173,19 +1755,10 @@ } } }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, "codependency": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/codependency/-/codependency-0.1.4.tgz", - "integrity": "sha1-0XY6tyZL1wyR2WJumIYtN5K/jUo=", + "integrity": "sha512-26yAvd3+17xSfDADtnzpnL5GK+8+x4QeZ3DegekkHyno6LWeHqXuSU7q8w/IrAur7SY6ISPApOWtWTfuIF0Xpg==", "requires": { "semver": "5.0.1" }, @@ -13193,26 +1766,26 @@ "semver": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.1.tgz", - "integrity": "sha1-n7P0AE+QDYPEeWj+QvdYPgWDLMk=" + "integrity": "sha512-Ne6/HdGZvvpXBdjW3o8J0pvxC2jnmVNBK7MKkMgsOBfrsIdTXfA5x+H9DUbQ2xzyvnLv0A0v9x8R4B40xNZIRQ==" } } }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "requires": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" } }, "color": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", - "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" + "color-convert": "^1.9.3", + "color-string": "^1.6.0" } }, "color-convert": { @@ -13226,12 +1799,12 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "color-string": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz", - "integrity": "sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -13240,14 +1813,15 @@ "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true }, "colorspace": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", - "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", "requires": { - "color": "3.0.x", + "color": "^3.1.3", "text-hex": "1.0.x" } }, @@ -13260,15 +1834,15 @@ } }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "component-emitter": { @@ -13279,14 +1853,14 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "config": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/config/-/config-3.3.6.tgz", - "integrity": "sha512-Hj5916C5HFawjYJat1epbyY2PlAgLpBtDUlr0MxGLgo3p5+7kylyvnRY18PqJHgnNWXcdd0eWDemT7eYWuFgwg==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/config/-/config-3.3.8.tgz", + "integrity": "sha512-rFzF6VESOdp7wAXFlB9IOZI4ouL05g3A03v2eRcTHj2JBQaTNJ40zhAUl5wRbWHqLZ+uqp/7OE0BWWtAVgrong==", "requires": { - "json5": "^2.1.1" + "json5": "^2.2.1" } }, "config-chain": { @@ -13297,48 +1871,33 @@ "requires": { "ini": "^1.3.4", "proto-list": "~1.2.1" - }, - "dependencies": { - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - } - } - }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" } }, "connection-parse": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/connection-parse/-/connection-parse-0.0.7.tgz", - "integrity": "sha1-GOcxiqsGppkmc3KxDFIm0locmmk=", + "integrity": "sha512-bTTG28diWg7R7/+qE5NZumwPbCiJOT8uPdZYu674brDjBWQctbaQbYlDKhalS+4i5HxIx+G8dZsnBHKzWpp01A==", "dev": true }, "contains-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "integrity": "sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg==", "dev": true }, "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } } }, "content-type": { @@ -13356,14 +1915,14 @@ } }, "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "cookiejar": { "version": "2.1.3", @@ -13373,7 +1932,7 @@ "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==" }, "core-js": { "version": "2.6.12", @@ -13403,6 +1962,58 @@ "luxon": "^1.26.0" } }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -13420,10 +2031,10 @@ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "csv-parse": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", + "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==", "dev": true }, "csv-parser": { @@ -13448,20 +2059,20 @@ "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "requires": { "assert-plus": "^1.0.0" } }, "date-fns": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz", - "integrity": "sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w==" + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", + "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==" }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { "ms": "2.1.2" }, @@ -13476,7 +2087,7 @@ "debug-log": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "integrity": "sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA==", "dev": true }, "decamelize": { @@ -13486,12 +2097,11 @@ "dev": true }, "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", "requires": { - "mimic-response": "^1.0.0" + "mimic-response": "^2.0.0" } }, "deep-eql": { @@ -13503,12 +2113,6 @@ "type-detect": "^4.0.0" } }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -13523,24 +2127,19 @@ "strip-bom": "^4.0.0" } }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "requires": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "requires": { "is-descriptor": "^1.0.0" } @@ -13560,23 +2159,23 @@ }, "dependencies": { "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true } } @@ -13584,17 +2183,17 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, "diff": { "version": "5.0.0", @@ -13610,15 +2209,6 @@ "esutils": "^2.0.2" } }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, "dotenv": { "version": "8.6.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", @@ -13638,16 +2228,10 @@ "nan": "^2.14.0" } }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -13673,6 +2257,12 @@ "sigmund": "^1.0.1" }, "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -13688,12 +2278,12 @@ "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "electron-to-chromium": { - "version": "1.3.873", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.873.tgz", - "integrity": "sha512-TiHlCgl2uP26Z0c67u442c0a2MZCWZNCRnPTQDPhVJ4h9G6z2zU0lApD9H0K9R5yFL5SfdaiVsVD2izOY24xBQ==", + "version": "1.4.256", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.256.tgz", + "integrity": "sha512-x+JnqyluoJv8I0U9gVe+Sk2st8vF0CzMt78SXxuoWCooLLY2k5VerIBdpvG7ql6GKI4dzNnPjmqgDJ76EdaAKw==", "dev": true }, "emoji-regex": { @@ -13709,7 +2299,7 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" }, "end-of-stream": { "version": "1.4.4", @@ -13731,7 +2321,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true } } @@ -13739,33 +2329,36 @@ "error-symbol": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/error-symbol/-/error-symbol-0.1.0.tgz", - "integrity": "sha1-Ck2uN9YA0VopukU9jvkg8YRDM/Y=" + "integrity": "sha512-VyjaKxUmeDX/m2lxm/aknsJ1GWDWUO2Ze2Ad8S1Pb9dykAm9TjSKp5CjrNyltYqZ5W/PO6TInAmO2/BfwMyT1g==" }, "es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.2.tgz", + "integrity": "sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==", "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.2", "get-symbol-description": "^1.0.0", "has": "^1.0.3", - "has-symbols": "^1.0.2", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", + "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", + "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" } }, "es-to-primitive": { @@ -13779,14 +2372,14 @@ } }, "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", "dev": true, "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" } }, "es6-error": { @@ -13798,7 +2391,7 @@ "es6-iterator": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", "dev": true, "requires": { "d": "1", @@ -13839,21 +2432,15 @@ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, - "escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true - }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "eslint": { "version": "6.8.0", @@ -13900,9 +2487,9 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" }, "semver": { "version": "6.3.0", @@ -13923,15 +2510,13 @@ "version": "14.1.1", "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz", "integrity": "sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==", - "dev": true, - "requires": {} + "dev": true }, "eslint-config-standard-jsx": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-8.1.0.tgz", "integrity": "sha512-ULVC8qH8qCqbU792ZOO6DaiaZyHNS/5CZt3hKqHkEhVlhPEPN3nfBqqxJCyp59XrjIBZPu1chMYe9T2DXZ7TMw==", - "dev": true, - "requires": {} + "dev": true }, "eslint-import-resolver-node": { "version": "0.3.6", @@ -13955,81 +2540,21 @@ } }, "eslint-module-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", - "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", "dev": true, "requires": { - "debug": "^3.2.7", - "find-up": "^2.1.0", - "pkg-dir": "^2.0.0" + "debug": "^3.2.7" }, "dependencies": { "debug": { "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "find-up": "^2.1.0" + "ms": "^2.1.1" } } } @@ -14083,7 +2608,7 @@ "doctrine": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -14093,7 +2618,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -14113,9 +2638,9 @@ }, "dependencies": { "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "semver": { @@ -14164,8 +2689,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.2.tgz", "integrity": "sha512-nKptN8l7jksXkwFk++PhJB3cCDTcXOEyhISIN86Ue2feJ1LFyY3PrY3/xT2keXlJSY5bpmbiTG0f885/YKAvTA==", - "dev": true, - "requires": {} + "dev": true }, "eslint-scope": { "version": "5.1.1", @@ -14213,9 +2737,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" } } }, @@ -14228,9 +2752,9 @@ }, "dependencies": { "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" } } }, @@ -14247,55 +2771,62 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, "event-emitter": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", "dev": true, "requires": { "d": "1", "es5-ext": "~0.10.14" } }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, "events": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==" }, "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "requires": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "finalhandler": "1.2.0", "fresh": "0.5.2", + "http-errors": "2.0.0", "merge-descriptors": "1.0.1", "methods": "~1.1.2", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -14312,19 +2843,27 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" } } }, "express-interceptor": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/express-interceptor/-/express-interceptor-1.2.0.tgz", - "integrity": "sha1-M0YKjhHc5+WgIsr1VdN35F3bgio=", + "integrity": "sha512-fCbcJv8ZwabDg0M/3PmHUxfr/WKHGMpAicR9TfGdhANV4M1GBDSrBTenHIK3aegyRN5S6eDwlvyNFiLynnc19w==", "requires": { "debug": "^2.2.0" }, @@ -14340,23 +2879,23 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, "ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "dev": true, "requires": { - "type": "^2.5.0" + "type": "^2.7.2" }, "dependencies": { "type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", "dev": true } } @@ -14369,7 +2908,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -14387,7 +2926,13 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + }, + "faker": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz", + "integrity": "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==", + "dev": true }, "fast-deep-equal": { "version": "3.1.3", @@ -14402,7 +2947,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "fast-safe-stringify": { "version": "2.1.1", @@ -14410,9 +2955,9 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, "fecha": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz", - "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, "figures": { "version": "3.2.0", @@ -14430,6 +2975,18 @@ "flat-cache": "^2.0.1" } }, + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "dev": true + }, + "filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "dev": true + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -14440,16 +2997,16 @@ } }, "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "dependencies": { @@ -14464,7 +3021,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, @@ -14512,14 +3069,14 @@ }, "dependencies": { "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } @@ -14563,28 +3120,31 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" }, "for-own": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", "requires": { "for-in": "^1.0.1" } }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, "foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", @@ -14641,7 +3201,7 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" }, "form-data": { "version": "2.5.1", @@ -14654,9 +3214,9 @@ } }, "formidable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", - "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", + "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==" }, "forwarded": { "version": "0.2.0", @@ -14666,7 +3226,7 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, "fromentries": { "version": "1.3.2", @@ -14675,20 +3235,21 @@ "dev": true }, "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "fsevents": { "version": "2.3.2", @@ -14702,10 +3263,26 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, "gensync": { "version": "1.0.0-beta.2", @@ -14722,17 +3299,17 @@ "get-func-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", "dev": true }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" } }, "get-package-type": { @@ -14744,7 +3321,7 @@ "get-parameter-names": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/get-parameter-names/-/get-parameter-names-0.3.0.tgz", - "integrity": "sha1-LSI3zVkubFuFmrLv2rQ18Ajlu5c=" + "integrity": "sha512-KkR1dX7U1TynXFkqveVE/XoRn9qRAsM2q4Eu2WsGTFzoaSdnNQEfxbcK+LMv8DcFoQQT9BFjNL+bf9ZyTLkWpg==" }, "get-stdin": { "version": "7.0.0", @@ -14752,15 +3329,6 @@ "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", "dev": true }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, "get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -14773,7 +3341,7 @@ "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "requires": { "assert-plus": "^1.0.0" } @@ -14781,7 +3349,7 @@ "glob": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", "optional": true, "requires": { "inflight": "^1.0.4", @@ -14799,15 +3367,6 @@ "is-glob": "^4.0.1" } }, - "global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "dev": true, - "requires": { - "ini": "2.0.0" - } - }, "globals": { "version": "12.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", @@ -14816,29 +3375,10 @@ "type-fest": "^0.8.1" } }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "growl": { @@ -14863,7 +3403,7 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" }, "har-validator": { "version": "5.1.5", @@ -14883,19 +3423,27 @@ } }, "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } }, "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-tostringtag": { "version": "1.0.0", @@ -14905,12 +3453,6 @@ "has-symbols": "^1.0.2" } }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true - }, "hasha": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", @@ -14924,7 +3466,7 @@ "hashring": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/hashring/-/hashring-3.2.0.tgz", - "integrity": "sha1-/aTv3oqiLNuX+x0qZeiEAeHBRM4=", + "integrity": "sha512-xCMovURClsQZ+TR30icCZj+34Fq1hs0y6YCASD6ZqdRfYRybb5Iadws2WS+w09mGM/kf9xyA5FCdJQGcgcraSA==", "dev": true, "requires": { "connection-parse": "0.0.x", @@ -14954,29 +3496,16 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" } }, "http-proxy-agent": { @@ -14989,10 +3518,16 @@ "debug": "4" } }, + "http-reasons": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/http-reasons/-/http-reasons-0.1.0.tgz", + "integrity": "sha512-P6kYh0lKZ+y29T2Gqz+RlC9WBLhKe8kDmcJ+A+611jFfxdPsbMRQ5aNmFRM3lENqFkK+HTTL+tlQviAiv0AbLQ==", + "dev": true + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -15000,19 +3535,43 @@ } }, "http-status": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/http-status/-/http-status-1.5.0.tgz", - "integrity": "sha512-wcGvY31MpFNHIkUcXHHnvrE4IKYlpvitJw5P/1u892gMBAM46muQ+RH7UN1d+Ntnfx5apnOnVY6vcLmrWHOLwg==" + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/http-status/-/http-status-1.5.3.tgz", + "integrity": "sha512-jCClqdnnwigYslmtfb28vPplOgoiZ0siP2Z8C5Ua+3UKbx410v+c+jT+jh1bbI4TvcEySuX0vd/CfFZFbDkJeQ==" }, "http-status-codes": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.1.4.tgz", - "integrity": "sha512-MZVIsLKGVOVE1KEnldppe6Ij+vmemMuApDfjhVSLzyYP+td0bREEYyAoIw9yFePoBXManCuBqmiNP5FqJS5Xkg==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.2.0.tgz", + "integrity": "sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng==" + }, + "httpntlm": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.7.7.tgz", + "integrity": "sha512-Pv2Rvrz8H0qv1Dne5mAdZ9JegG1uc6Vu5lwLflIY6s8RKHdZQbW39L4dYswSgqMDT0pkJILUTKjeyU0VPNRZjA==", + "dev": true, + "requires": { + "httpreq": ">=0.4.22", + "underscore": "~1.12.1" + }, + "dependencies": { + "underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "dev": true + } + } + }, + "httpreq": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-0.5.2.tgz", + "integrity": "sha512-2Jm+x9WkExDOeFRrdBCBSpLPT5SokTcRHkunV3pjKmX/cx6av8zQ0WtHUMDrYb6O4hBFzNU6sxJEypvRUVYKnw==", + "dev": true }, "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "requires": { "agent-base": "6", "debug": "4" @@ -15042,7 +3601,7 @@ "jsbn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=" + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" } } }, @@ -15059,7 +3618,7 @@ "ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", "dev": true }, "import-fresh": { @@ -15071,16 +3630,10 @@ "resolve-from": "^4.0.0" } }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" }, "indent-string": { "version": "4.0.0", @@ -15089,14 +3642,14 @@ "dev": true }, "inflection": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.1.tgz", - "integrity": "sha512-dldYtl2WlN0QDkIDtg8+xFwOS2Tbmp12t1cHa5/YClU6ZQjTFm7B66UcVbh9NQB+HvT5BAd2t5+yKsBkw5pcqA==" + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", + "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==" }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "requires": { "once": "^1.3.0", "wrappy": "1" @@ -15105,7 +3658,7 @@ "info-symbol": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/info-symbol/-/info-symbol-0.1.0.tgz", - "integrity": "sha1-J4QdcoZ920JCzWEtecEGM4gcang=" + "integrity": "sha512-qkc9wjLDQ+dYYZnY5uJXGNNHyZ0UOMDUnhvy0SEZGVVYmQ5s4i8cPAin2MbU6OxJgi8dfj/AnwqPx0CJE6+Lsw==" }, "inherits": { "version": "2.0.4", @@ -15113,9 +3666,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, "inquirer": { @@ -15226,6 +3779,12 @@ "side-channel": "^1.0.4" } }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", + "dev": true + }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -15292,23 +3851,14 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.6.tgz", + "integrity": "sha512-krO72EO2NptOGAX2KYyqbP9vYMlNAXdB53rq6f8LXY6RY7JdSR/3BD6wLUlPHSAesmY9vstNrjvqGaCiRK/91Q==" }, "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", "dev": true, "requires": { "has": "^1.0.3" @@ -15357,17 +3907,17 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" }, "is-generator-function": { "version": "1.0.10", @@ -15385,16 +3935,6 @@ "is-extglob": "^2.1.1" } }, - "is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - } - }, "is-nan": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", @@ -15405,15 +3945,9 @@ } }, "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" - }, - "is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", - "dev": true + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" }, "is-number": { "version": "6.0.0", @@ -15421,25 +3955,13 @@ "integrity": "sha512-Wu1VHeILBK8KAWJUAiSZQX94GmOE45Rg6/538fKwiloUu21KncEkYGPqob2oSZ5mUT73vLGrHQjKw3KMPwfDzg==" }, "is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "requires": { "has-tostringtag": "^1.0.0" } }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, "is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", @@ -15470,9 +3992,12 @@ } }, "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "requires": { + "call-bind": "^1.0.2" + } }, "is-stream": { "version": "2.0.1", @@ -15496,28 +4021,28 @@ } }, "is-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", - "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", + "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", "has-tostringtag": "^1.0.0" } }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, "is-weakref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", - "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "requires": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2" } }, "is-windows": { @@ -15525,16 +4050,10 @@ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "isemail": { "version": "3.2.0", @@ -15547,17 +4066,17 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, "istanbul-lib-coverage": { "version": "3.2.0", @@ -15595,18 +4114,17 @@ } }, "istanbul-lib-processinfo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", + "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", "dev": true, "requires": { "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", "p-map": "^3.0.0", "rimraf": "^3.0.0", - "uuid": "^3.3.3" + "uuid": "^8.3.2" }, "dependencies": { "cross-spawn": { @@ -15621,15 +4139,15 @@ } }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } @@ -15664,12 +4182,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -15721,9 +4233,9 @@ } }, "istanbul-reports": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", - "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -15731,55 +4243,72 @@ } }, "jmespath": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", + "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==" }, "joi": { - "version": "17.4.2", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz", - "integrity": "sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw==", + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", "requires": { "@hapi/hoek": "^9.0.0", "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.0", + "@sideway/address": "^4.1.3", "@sideway/formula": "^3.0.0", "@sideway/pinpoint": "^2.0.0" } }, "js-beautify": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.0.tgz", - "integrity": "sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ==", + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.6.tgz", + "integrity": "sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==", "dev": true, "requires": { - "config-chain": "^1.1.12", + "config-chain": "^1.1.13", "editorconfig": "^0.15.3", - "glob": "^7.1.3", - "nopt": "^5.0.0" + "glob": "^8.0.3", + "nopt": "^6.0.0" }, "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" } }, "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, "requires": { - "abbrev": "1" + "abbrev": "^1.0.0" } } } @@ -15789,6 +4318,12 @@ "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==" }, + "js-sha512": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.8.0.tgz", + "integrity": "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -15806,7 +4341,7 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" }, "jsesc": { "version": "2.5.2", @@ -15814,12 +4349,6 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -15827,9 +4356,9 @@ "dev": true }, "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "json-schema-traverse": { "version": "0.4.1", @@ -15839,28 +4368,26 @@ "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" }, "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" } }, "jsonwebtoken": { @@ -15881,13 +4408,13 @@ } }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" } }, @@ -15943,9 +4470,9 @@ } }, "follow-redirects": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", - "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" } } }, @@ -15958,19 +4485,10 @@ "safe-buffer": "^5.0.1" } }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -15978,26 +4496,17 @@ "koalas": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/koalas/-/koalas-1.0.2.tgz", - "integrity": "sha1-MYQz8HQjXbePrlZhoCqMpT7ilc0=" + "integrity": "sha512-RYhBbYaTTTHId3l6fnMZc3eGQNW6FVCqMG6AMwA5I1Mafr6AflaXeoi6x3xQuATRotGYRLk6+1ELZH4dstFNOA==" }, "kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, - "latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "requires": { - "package-json": "^6.3.0" - } - }, "lazy-cache": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "integrity": "sha512-7vp2Acd2+Kz4XkzxGxaB1FWOi8KjWIWsgdfD5MCb86DWvlLqhRPM+d6Pro3iNEL5VT9mstz5hKAlcd+QR6H3aA==", "requires": { "set-getter": "^0.1.0" } @@ -16023,14 +4532,14 @@ "semver": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz", - "integrity": "sha1-hfLPhVBGXE3wAM99hvawVBBqueU=" + "integrity": "sha512-sfKXKhcz5XVyfUZa2V4RbjK0xjOJCMLNF9H4p4v0UCo9wNHM/lH9RDuyDbGEtxWLMDlPBc8xI7AbbVLKXty+rQ==" } } }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "requires": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -16041,10 +4550,16 @@ "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" }, + "liquid-json": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/liquid-json/-/liquid-json-0.3.1.tgz", + "integrity": "sha512-wUayTU8MS827Dam6MxgD72Ui+KOSF+u/eIqpatOtjnvgJ0+mnDq33uC2M7J0tPK+upe/DpUAuK4JUU89iBoNKQ==", + "dev": true + }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -16056,7 +4571,7 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true } } @@ -16078,59 +4593,59 @@ "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" }, "lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true }, "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", "dev": true }, "lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" }, "lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" }, "lodash.isinteger": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" }, "lodash.isnumber": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" }, "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" }, "lodash.isstring": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" }, "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, "log-ok": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/log-ok/-/log-ok-0.1.1.tgz", - "integrity": "sha1-vqPdNqzQuKckDXhza1uXxlREozQ=", + "integrity": "sha512-cc8VrkS6C+9TFuYAwuHpshrcrGRAv7d0tUJ0GdM72ZBlKXtlgjUZF84O+OhQUdiVHoF7U/nVxwpjOdwUJ8d3Vg==", "requires": { "ansi-green": "^0.1.1", "success-symbol": "^0.1.0" @@ -16199,7 +4714,7 @@ "log-utils": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/log-utils/-/log-utils-0.2.1.tgz", - "integrity": "sha1-pMIXoN2aUFFdm5ICBgkas9TgMc8=", + "integrity": "sha512-udyegKoMz9eGfpKAX//Khy7sVAZ8b1F7oLDnepZv/1/y8xTvsyPgqQrM94eG8V0vcc2BieYI2kVW4+aa6m+8Qw==", "requires": { "ansi-colors": "^0.2.0", "error-symbol": "^0.1.0", @@ -16211,14 +4726,14 @@ } }, "logform": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.3.0.tgz", - "integrity": "sha512-graeoWUH2knKbGthMtuG1EfaSPMZFZBIrhuJHhkS5ZseFBrc7DupCzihOQAzsK/qIKPQaPJ/lFQFctILUY5ARQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz", + "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==", "requires": { - "colors": "^1.2.1", + "@colors/colors": "1.5.0", "fecha": "^4.2.0", "ms": "^2.1.1", - "safe-stable-stringify": "^1.1.0", + "safe-stable-stringify": "^2.3.1", "triple-beam": "^1.3.0" } }, @@ -16231,7 +4746,7 @@ "long-timeout": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", - "integrity": "sha1-lyHXiLR+C8taJMLivuGg2lXatRQ=" + "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==" }, "loose-envify": { "version": "1.4.0", @@ -16242,16 +4757,19 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true + "loupe": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", + "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } }, "lru-cache": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", - "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=", + "integrity": "sha512-uQw9OqphAGiZhkuPlpFGmdTU2tEuhxTourM/19qGJrxBPHAr/f8BT1a0i/lOclESnGatdJG/UCkP9kZB/Lh1iw==", "requires": { "pseudomap": "^1.0.1", "yallist": "^2.0.0" @@ -16269,7 +4787,7 @@ "lru-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", "dev": true, "requires": { "es5-ext": "~0.10.2" @@ -16300,7 +4818,7 @@ "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "requires": { "object-visit": "^1.0.0" } @@ -16308,7 +4826,7 @@ "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" }, "memoizee": { "version": "0.4.15", @@ -16324,30 +4842,22 @@ "lru-queue": "^0.1.0", "next-tick": "^1.1.0", "timers-ext": "^0.1.7" - }, - "dependencies": { - "next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "dev": true - } } }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" }, "millisecond": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/millisecond/-/millisecond-0.1.2.tgz", - "integrity": "sha1-bMWtOGJByrjniv+WT4cCjuyS2sU=" + "integrity": "sha512-BJ8XtxY+woL+5TkP6uS6XvOArm0JVrX2otkgtWZseHpIax0oOOPW3cnwhOjRqbEJg7YRO/BDF7fO/PTWNT3T9Q==" }, "mime": { "version": "1.6.0", @@ -16355,16 +4865,25 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-format": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mime-format/-/mime-format-2.0.1.tgz", + "integrity": "sha512-XxU3ngPbEnrYnNbIX+lYSaYg0M01v6p2ntd2YaFksTu0vayaw5OJvbdRyWs07EYRlLED5qadUZ+xo+XhOvFhwg==", + "dev": true, + "requires": { + "charset": "^1.0.0" + } }, "mime-types": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "requires": { - "mime-db": "1.50.0" + "mime-db": "1.52.0" } }, "mimic-fn": { @@ -16373,28 +4892,27 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "mixin-object": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "integrity": "sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==", "requires": { "for-in": "^0.1.3", "is-extendable": "^0.1.1" @@ -16403,16 +4921,16 @@ "for-in": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" + "integrity": "sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==" } } }, "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "requires": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" } }, "mocha": { @@ -16512,6 +5030,15 @@ "argparse": "^2.0.1" } }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -16533,14 +5060,14 @@ } }, "moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" }, "moment-timezone": { - "version": "0.5.33", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.33.tgz", - "integrity": "sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w==", + "version": "0.5.37", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.37.tgz", + "integrity": "sha512-uEDzDNFhfaywRl+vwXxffjjq1q0Vzr+fcQpQ1bU0kbzorfS7zVtZnCnGc8mhWmF39d4g4YriF6kwA75mJKE/Zg==", "requires": { "moment": ">= 2.9.0" } @@ -16553,18 +5080,18 @@ "murmur-hash-js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/murmur-hash-js/-/murmur-hash-js-1.0.0.tgz", - "integrity": "sha1-UEEEkmnJZjPIZjhpYLL0KJ515bA=", + "integrity": "sha512-g3vtW36bHHcmcGOLlI+cVUBPtaoLdPkBNVNkHE+1mKgaYfjWXF6bWOlhsU6r+V+yG8tqUyM7WveRAXvHa98dZg==", "dev": true }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==" }, "mv": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", "optional": true, "requires": { "mkdirp": "~0.5.1", @@ -16573,9 +5100,9 @@ } }, "nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", + "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", "optional": true }, "nanoid": { @@ -16587,35 +5114,172 @@ "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, "ncp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", "optional": true }, "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "newman": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/newman/-/newman-5.3.2.tgz", + "integrity": "sha512-cWy8pV0iwvMOZLTw3hkAHcwo2ZA0GKkXm8oUMn1Ltii3ZI2nKpnrg9QGdIT0hGHChRkX6prY5e3Aar7uykMGNg==", + "dev": true, + "requires": { + "async": "3.2.3", + "chardet": "1.4.0", + "cli-progress": "3.10.0", + "cli-table3": "0.6.1", + "colors": "1.4.0", + "commander": "7.2.0", + "csv-parse": "4.16.3", + "eventemitter3": "4.0.7", + "filesize": "8.0.7", + "lodash": "4.17.21", + "mkdirp": "1.0.4", + "postman-collection": "4.1.1", + "postman-collection-transformer": "4.1.6", + "postman-request": "2.88.1-postman.31", + "postman-runtime": "7.29.0", + "pretty-ms": "7.0.1", + "semver": "7.3.5", + "serialised-error": "1.1.3", + "tough-cookie": "3.0.1", + "word-wrap": "1.2.3", + "xmlbuilder": "15.1.1" + }, + "dependencies": { + "async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true + }, + "chardet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-1.4.0.tgz", + "integrity": "sha512-NpwMDdSIprbYx1CLnfbxEIarI0Z+s9MssEgggMNheGM+WD68yOhV7IEA/3r6tr0yTRgQD0HuZJDw32s99i6L+A==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "newman-reporter-html": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/newman-reporter-html/-/newman-reporter-html-1.0.5.tgz", + "integrity": "sha512-Kz8ejzJqDaasyqNuP8F7bBYzsts7JP3wBfdRQDOYPCUchVQF63KsbxtxbGadyzOeXcZsXs6YT3pe4FFlN51jcw==", + "dev": true, + "requires": { + "filesize": "6.0.1", + "handlebars": "4.5.3", + "lodash": "4.17.15", + "pretty-ms": "5.1.0" + }, + "dependencies": { + "filesize": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", + "integrity": "sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg==", + "dev": true + }, + "handlebars": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", + "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "pretty-ms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-5.1.0.tgz", + "integrity": "sha512-4gaK1skD2gwscCfkswYQRmddUb2GJZtzDGRjHWadVHtK/DIKFufa12MvES6/xu1tVbUYeia5bmLcwJtZJQUqnw==", + "dev": true, + "requires": { + "parse-ms": "^2.1.0" + } + } + } }, "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "dev": true }, "nice-simple-logger": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/nice-simple-logger/-/nice-simple-logger-1.0.1.tgz", - "integrity": "sha1-D55khSe+e+PkmrdvqMjAmK+VG/Y=", + "integrity": "sha512-Pnd3i8ttDRC0uO2YcaJt/SuzWmCyiUGRPlzq5E1YH+ypCjeVME761PZYDwjkAqlJfGopJ6TgEOEAqA4J26tpGA==", "dev": true, "requires": { "lodash": "^4.3.0" @@ -16642,7 +5306,7 @@ "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "dev": true }, "path-to-regexp": { @@ -16674,6 +5338,12 @@ "wrr-pool": "^1.0.3" }, "dependencies": { + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", @@ -16682,6 +5352,12 @@ } } }, + "node-oauth1": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/node-oauth1/-/node-oauth1-1.3.0.tgz", + "integrity": "sha512-0yggixNfrA1KcBwvh/Hy2xAS1Wfs9dcg6TdFf2zN7gilcAigMdrtZ4ybrBSXBgLvGDw9V1p2MRnGBMq7XjTWLg==", + "dev": true + }, "node-preload": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", @@ -16692,39 +5368,55 @@ } }, "node-releases": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.0.tgz", - "integrity": "sha512-aA87l0flFYMzCHpTM3DERFSYxc6lv/BltdbRTOMZuxZ0cwZCD3mejE5n9vLhSJCN++/eOqr77G1IO5uXxlQYWA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, "node-schedule": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.0.0.tgz", - "integrity": "sha512-cHc9KEcfiuXxYDU+HjsBVo2FkWL1jRAUoczFoMIzRBpOA4p/NRHuuLs85AWOLgKsHtSPjN8csvwIxc2SqMv+CQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.0.tgz", + "integrity": "sha512-nl4JTiZ7ZQDc97MmpTq9BQjYhq7gOtoh7SiPH069gBFBj0PzD8HI7zyFs6rzqL8Y5tTiEEYLxgtbx034YPrbyQ==", "requires": { - "cron-parser": "^3.1.0", + "cron-parser": "^3.5.0", "long-timeout": "0.1.1", "sorted-array-functions": "^1.3.0" } }, "nodemon": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.14.tgz", - "integrity": "sha512-frcpDx+PviKEQRSYzwhckuO2zoHcBYLHI754RE9z5h1RGtrngerc04mLpQQCPWBkH/2ObrX7We9YiwVSYZpFJQ==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", + "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==", "dev": true, "requires": { - "chokidar": "^3.2.2", - "debug": "^3.2.6", + "chokidar": "^3.5.2", + "debug": "^3.2.7", "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.7", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", "supports-color": "^5.5.0", "touch": "^3.1.0", - "undefsafe": "^2.0.3", - "update-notifier": "^5.1.0" + "undefsafe": "^2.0.5" }, "dependencies": { + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, "debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -16733,13 +5425,22 @@ "requires": { "ms": "^2.1.1" } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } } } }, "nopt": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", "dev": true, "requires": { "abbrev": "1" @@ -16763,12 +5464,6 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true - }, "nyc": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", @@ -16854,7 +5549,7 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true }, "find-up": { @@ -16868,15 +5563,15 @@ } }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } @@ -17005,12 +5700,12 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "requires": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", @@ -17020,7 +5715,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } @@ -17028,7 +5723,7 @@ "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "requires": { "kind-of": "^3.0.2" } @@ -17036,7 +5731,7 @@ "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "requires": { "kind-of": "^3.0.2" } @@ -17060,10 +5755,16 @@ } } }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true + }, "object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" }, "object-keys": { "version": "1.1.1", @@ -17073,19 +5774,19 @@ "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "requires": { "isobject": "^3.0.0" } }, "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, @@ -17123,9 +5824,9 @@ } }, "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "requires": { "ee-first": "1.1.1" } @@ -17133,7 +5834,7 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "requires": { "wrappy": "1" } @@ -17154,6 +5855,30 @@ "mimic-fn": "^2.1.0" } }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha512-snN4O4TkigujZphWLN0E//nQmm7790RYaE53DdL7ZYwee2D8DDo9/EyYiKUfN3rneWUjhJnueija3G9I2i0h3g==", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==", + "dev": true + } + } + }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -17170,13 +5895,7 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" }, "p-limit": { "version": "3.1.0", @@ -17223,26 +5942,6 @@ "release-zalgo": "^1.0.0" } }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, "packet-reader": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", @@ -17259,12 +5958,18 @@ "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", "dev": true, "requires": { "error-ex": "^1.2.0" } }, + "parse-ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", + "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", + "dev": true + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -17279,12 +5984,12 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" }, "path-parse": { "version": "1.0.7", @@ -17295,12 +6000,12 @@ "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", "dev": true, "requires": { "pify": "^2.0.0" @@ -17315,17 +6020,17 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "pg": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.7.1.tgz", - "integrity": "sha512-7bdYcv7V6U3KAtWjpQJJBww0UEsWuh4yQ/EjNf2HeO/NnvKjpvhEIe/A/TleP6wtmSKnUnghs5A9jUoK6iDdkA==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.8.0.tgz", + "integrity": "sha512-UXYN0ziKj+AeNNP7VDMwrehpACThH7LUl/p8TDFpEUuSejCUIwGSfxpHsPvtM6/WXFy6SU4E5RG4IJV/TZAGjw==", "requires": { "buffer-writer": "2.0.0", "packet-reader": "1.0.0", "pg-connection-string": "^2.5.0", - "pg-pool": "^3.4.1", + "pg-pool": "^3.5.2", "pg-protocol": "^1.5.0", "pg-types": "^2.1.0", "pgpass": "1.x" @@ -17350,10 +6055,9 @@ "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" }, "pg-pool": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.4.1.tgz", - "integrity": "sha512-TVHxR/gf3MeJRvchgNHxsYsTCHQ+4wm3VIHSS19z8NC0+gioEhq1okDY1sm/TYbfoP6JLFx01s0ShvZ3puP/iQ==", - "requires": {} + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.5.2.tgz", + "integrity": "sha512-His3Fh17Z4eg7oANLob6ZvH8xIVen3phEZh2QuyrIl4dQSDVEabNducv6ysROKpDNPSD+12tONZVWfSgMvDD9w==" }, "pg-protocol": { "version": "1.5.0", @@ -17373,11 +6077,11 @@ } }, "pgpass": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.4.tgz", - "integrity": "sha512-YmuA56alyBq7M59vxVBfPJrGSozru8QAdoNlWuW3cz8l+UX3cWge0vTvjKhsSHSJpo3Bom8/Mm6hf0TR5GY0+w==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", "requires": { - "split2": "^3.1.1" + "split2": "^4.1.0" } }, "picocolors": { @@ -17387,15 +6091,15 @@ "dev": true }, "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, "pkg-conf": { @@ -17461,7 +6165,7 @@ "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "requires": { "error-ex": "^1.3.1", @@ -17471,7 +6175,7 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true }, "pify": { @@ -17483,7 +6187,7 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true }, "type-fest": { @@ -17497,7 +6201,7 @@ "pkg-config": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", - "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", + "integrity": "sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw==", "dev": true, "requires": { "debug-log": "^1.0.0", @@ -17556,7 +6260,7 @@ "pointer-symbol": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/pointer-symbol/-/pointer-symbol-1.0.0.tgz", - "integrity": "sha1-YPkRAgTqepKbYmRKITFVQ8uz1Ec=" + "integrity": "sha512-pozTTFO3kG9HQWXCSTJkCgq4fBF8lUQf+5bLddTEW6v4zdjQhcBVfLmKzABEMJMA7s8jhzi0sgANIwdrf4kq+A==" }, "postgres-array": { "version": "2.0.0", @@ -17566,7 +6270,7 @@ "postgres-bytea": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=" + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==" }, "postgres-date": { "version": "1.0.7", @@ -17581,21 +6285,283 @@ "xtend": "^4.0.0" } }, + "postman-collection": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/postman-collection/-/postman-collection-4.1.1.tgz", + "integrity": "sha512-ODpJtlf8r99DMcTU7gFmi/yvQYckFzcuE6zL/fWnyrFT34ugdCBFlX+DN7M+AnP6lmR822fv5s60H4DnL4+fAg==", + "dev": true, + "requires": { + "faker": "5.5.3", + "file-type": "3.9.0", + "http-reasons": "0.1.0", + "iconv-lite": "0.6.3", + "liquid-json": "0.3.1", + "lodash": "4.17.21", + "mime-format": "2.0.1", + "mime-types": "2.1.34", + "postman-url-encoder": "3.0.5", + "semver": "7.3.5", + "uuid": "8.3.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "requires": { + "mime-db": "1.51.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "postman-collection-transformer": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/postman-collection-transformer/-/postman-collection-transformer-4.1.6.tgz", + "integrity": "sha512-xvdQb6sZoWcG9xZXUPSuxocjcd6WCZlINlGGiuHdSfxhgiwQhj9qhF0JRFbagZ8xB0+pYUairD5MiCENc6DEVA==", + "dev": true, + "requires": { + "commander": "8.3.0", + "inherits": "2.0.4", + "lodash": "4.17.21", + "semver": "7.3.5", + "strip-json-comments": "3.1.1" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "postman-request": { + "version": "2.88.1-postman.31", + "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.31.tgz", + "integrity": "sha512-OJbYqP7ItxQ84yHyuNpDywCZB0HYbpHJisMQ9lb1cSL3N5H3Td6a2+3l/a74UMd3u82BiGC5yQyYmdOIETP/nQ==", + "dev": true, + "requires": { + "@postman/form-data": "~3.1.1", + "@postman/tunnel-agent": "^0.6.3", + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "brotli": "~1.3.2", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "har-validator": "~5.1.3", + "http-signature": "~1.3.1", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "stream-length": "^1.0.2", + "tough-cookie": "~2.5.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "http-signature": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" + } + }, + "jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "postman-runtime": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/postman-runtime/-/postman-runtime-7.29.0.tgz", + "integrity": "sha512-eXxHREE/fUpohkGPRgBY1YccSGx9cyW3mtGiPyIE4zD5fYzasgBHqW6kbEND3Xrd3yf/uht/YI1H8O7J1+A1+w==", + "dev": true, + "requires": { + "async": "3.2.3", + "aws4": "1.11.0", + "handlebars": "4.7.7", + "httpntlm": "1.7.7", + "js-sha512": "0.8.0", + "lodash": "4.17.21", + "mime-types": "2.1.34", + "node-oauth1": "1.3.0", + "performance-now": "2.1.0", + "postman-collection": "4.1.1", + "postman-request": "2.88.1-postman.31", + "postman-sandbox": "4.0.6", + "postman-url-encoder": "3.0.5", + "serialised-error": "1.1.3", + "tough-cookie": "3.0.1", + "uuid": "8.3.2" + }, + "dependencies": { + "async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "requires": { + "mime-db": "1.51.0" + } + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "postman-sandbox": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postman-sandbox/-/postman-sandbox-4.0.6.tgz", + "integrity": "sha512-PPRanSNEE4zy3kO7CeSBHmAfJnGdD9ecHY/Mjh26CQuZZarGkNO8c0U/n+xX3+5M1BRNc82UYq6YCtdsSDqcng==", + "dev": true, + "requires": { + "lodash": "4.17.21", + "teleport-javascript": "1.0.0", + "uvm": "2.0.2" + } + }, + "postman-url-encoder": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postman-url-encoder/-/postman-url-encoder-3.0.5.tgz", + "integrity": "sha512-jOrdVvzUXBC7C+9gkIkpDJ3HIxOHTIqjpQ4C1EMt1ZGeMvSEpbFCKq23DEfgsj46vMnDgyQf+1ZLp2Wm+bKSsA==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, "precond": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", - "integrity": "sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw=" + "integrity": "sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==" }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" + }, + "pretty-ms": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", + "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", + "dev": true, + "requires": { + "parse-ms": "^2.1.0" + } }, "process-nextick-args": { "version": "2.0.1", @@ -17635,7 +6601,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, @@ -17761,20 +6727,20 @@ } }, "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "react-is": "^16.13.1" } }, "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true }, "protocol-buffers-schema": { @@ -17800,12 +6766,12 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" }, "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" }, "pstree.remy": { "version": "1.1.8", @@ -17827,19 +6793,10 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, - "pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, - "requires": { - "escape-goat": "^2.0.0" - } - }, "qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "requires": { "side-channel": "^1.0.4" } @@ -17847,7 +6804,7 @@ "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" }, "queue-microtask": { "version": "1.2.3", @@ -17876,14 +6833,14 @@ "semver": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz", - "integrity": "sha1-hfLPhVBGXE3wAM99hvawVBBqueU=" + "integrity": "sha512-sfKXKhcz5XVyfUZa2V4RbjK0xjOJCMLNF9H4p4v0UCo9wNHM/lH9RDuyDbGEtxWLMDlPBc8xI7AbbVLKXty+rQ==" } } }, "radio-symbol": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/radio-symbol/-/radio-symbol-2.0.0.tgz", - "integrity": "sha1-eqm/xQSFY21S3XbWqOYxspB5muE=", + "integrity": "sha512-fpuWhwGD4XG1BfUWKXhCqdguCXzGi/DDb6RzmAGZo9R75enjlx0l+ZhHF93KNG7iNpT0Vi7wEqbf8ZErbe+JtQ==", "requires": { "ansi-gray": "^0.1.1", "ansi-green": "^0.1.1", @@ -17905,42 +6862,16 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" } }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - } - } - }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -17950,7 +6881,7 @@ "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", "dev": true, "requires": { "load-json-file": "^2.0.0", @@ -17961,7 +6892,7 @@ "read-pkg-up": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", "dev": true, "requires": { "find-up": "^2.0.0", @@ -17971,7 +6902,7 @@ "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -17980,7 +6911,7 @@ "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -17999,7 +6930,7 @@ "p-locate": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -18008,13 +6939,13 @@ "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true } } @@ -18064,14 +6995,14 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, "readline-utils": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/readline-utils/-/readline-utils-2.2.3.tgz", - "integrity": "sha1-b4R9a48ZFcORtYHDZ81HhzhiNRo=", + "integrity": "sha512-cjFo7R7e7AaFOz2JLQ4EgsHh4+l7mw29Eu3DAEPgGeWbYQFKqyxWsL61/McC6b2oJAvn14Ea8eUms9o8ZFC1iQ==", "requires": { "arr-flatten": "^1.1.0", "extend-shallow": "^2.0.1", @@ -18087,7 +7018,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "requires": { "kind-of": "^3.0.2" } @@ -18097,38 +7028,30 @@ "reconnect-core": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/reconnect-core/-/reconnect-core-1.3.0.tgz", - "integrity": "sha1-+65SkZp4d9hE4yRtAaLyZwHIM8g=", + "integrity": "sha512-+gLKwmyRf2tjl6bLR03DoeWELzyN6LW9Xgr3vh7NXHHwPi0JC0N2TwPyf90oUEBkCRcD+bgQ+s3HORoG3nwHDg==", "requires": { "backoff": "~2.5.0" } }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, "regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" }, - "registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, "release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", "dev": true, "requires": { "es6-error": "^4.0.1" @@ -18172,9 +7095,9 @@ } }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" }, "uuid": { "version": "3.4.0", @@ -18186,7 +7109,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "require-main-filename": { @@ -18196,13 +7119,14 @@ "dev": true }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-from": { @@ -18210,15 +7134,6 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -18234,12 +7149,9 @@ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" }, "retry-as-promised": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.2.0.tgz", - "integrity": "sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg==", - "requires": { - "any-promise": "^1.3.0" - } + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-6.1.0.tgz", + "integrity": "sha512-Hj/jY+wFC+SB9SDlIIFWiGOHnNG0swYbGYsOj2BJ8u2HKUaobNKab0OIC0zOLYzDy0mb7A4xA5BMo4LMz5YtEA==" }, "rewire": { "version": "5.0.0", @@ -18252,7 +7164,7 @@ "rimraf": { "version": "2.4.5", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", "optional": true, "requires": { "glob": "^6.0.1" @@ -18278,6 +7190,13 @@ "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "requires": { "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "safe-buffer": { @@ -18292,9 +7211,9 @@ "optional": true }, "safe-stable-stringify": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz", - "integrity": "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.0.tgz", + "integrity": "sha512-eehKHKpab6E741ud7ZIMcXhKcP6TSIezPkNZhy5U8xC6+VvrRdUA2tMgxGxaGl4cz7c2Ew5+mg5+wNB16KQqrA==" }, "safer-buffer": { "version": "2.1.2", @@ -18304,53 +7223,36 @@ "sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" }, "secure-json-parse": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.4.0.tgz", - "integrity": "sha512-Q5Z/97nbON5t/L/sH6mY2EacfjVGwrCcSi5D3btRO2GZ8pf1K1UN7Z9H5J57hjVU2Qzxr1xO+FmBhOvEkzCMmg==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.5.0.tgz", + "integrity": "sha512-ZQruFgZnIWH+WyO9t5rWt4ZEGqCKPwhiw+YbzTwpmT9elgLrLcfuyUiSnwwjUiVy9r4VM3urtbNF1xmEh9IL2w==" }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "2.0.0", "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", + "ms": "2.1.3", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "dependencies": { "debug": { @@ -18364,34 +7266,32 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, "sequelize": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.7.0.tgz", - "integrity": "sha512-OVw3psUggqQT9kYg5Z9fja/BMdBxX/Ua3Bwx2yif5g6QuYEE4UfWq5jW6LmbacGwgK6bgZs05Q2zCkJZCDFrSA==", - "requires": { - "debug": "^4.1.1", - "dottie": "^2.0.0", - "inflection": "1.13.1", - "lodash": "^4.17.20", - "moment": "^2.26.0", - "moment-timezone": "^0.5.31", - "retry-as-promised": "^3.2.0", - "semver": "^7.3.2", - "sequelize-pool": "^6.0.0", + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.23.0.tgz", + "integrity": "sha512-3tDzy43ip41cQ3oKkvv8ZxoDm1ecCVLrLhcq6J/CBuflUdTe4Xmt6NqA1ZrzzdSDhqVlWn8SxkNIxXSjOn6qLQ==", + "requires": { + "@types/debug": "^4.1.7", + "@types/validator": "^13.7.1", + "debug": "^4.3.3", + "dottie": "^2.0.2", + "inflection": "^1.13.2", + "lodash": "^4.17.21", + "moment": "^2.29.1", + "moment-timezone": "^0.5.34", + "pg-connection-string": "^2.5.0", + "retry-as-promised": "^6.1.0", + "semver": "^7.3.5", + "sequelize-pool": "^7.1.0", "toposort-class": "^1.0.1", - "uuid": "^8.1.0", - "validator": "^13.6.0", + "uuid": "^8.3.2", + "validator": "^13.7.0", "wkx": "^0.5.0" }, "dependencies": { @@ -18404,9 +7304,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "requires": { "lru-cache": "^6.0.0" } @@ -18419,170 +7319,50 @@ } }, "sequelize-cli": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-6.2.0.tgz", - "integrity": "sha512-6WQ2x91hg30dUn66mXHnzvHATZ4pyI1GHSNbS/TNN/vRR4BLRSLijadeMgC8zqmKDsL0VqzVVopJWfJakuP++Q==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-6.4.1.tgz", + "integrity": "sha512-gIzzFitUGUErq6DYd1JDnsmx7z7XcxzRNe4Py3AqeaxcyjpCAZU2BQnsNPGPMKAaXfMtKi/d9Tu4MtLrehVzIQ==", "dev": true, "requires": { - "cli-color": "^1.4.0", - "fs-extra": "^7.0.1", - "js-beautify": "^1.8.8", - "lodash": "^4.17.5", - "resolve": "^1.5.0", + "cli-color": "^2.0.1", + "fs-extra": "^9.1.0", + "js-beautify": "^1.14.0", + "lodash": "^4.17.21", + "resolve": "^1.20.0", "umzug": "^2.3.0", - "yargs": "^13.1.0" + "yargs": "^16.2.0" + } + }, + "sequelize-pool": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", + "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==" + }, + "serialised-error": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/serialised-error/-/serialised-error-1.1.3.tgz", + "integrity": "sha512-vybp3GItaR1ZtO2nxZZo8eOo7fnVaNtP3XE2vJKgzkKR2bagCkdJ1EpYYhEMd3qu/80DwQk9KjsNSxE3fXWq0g==", + "dev": true, + "requires": { + "object-hash": "^1.1.2", + "stack-trace": "0.0.9", + "uuid": "^3.0.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "stack-trace": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", + "integrity": "sha512-vjUc6sfgtgY0dxCdnc40mK6Oftjo9+2K8H/NG81TMhgL392FtiPA9tn9RLyTxXmTLPJPjF3VyzFp6bsWFLisMQ==", "dev": true }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, - "sequelize-pool": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-6.1.0.tgz", - "integrity": "sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg==" - }, "serialize-javascript": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", @@ -18593,20 +7373,20 @@ } }, "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.18.0" } }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, "set-getter": { @@ -18618,17 +7398,17 @@ } }, "set-value": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-3.0.2.tgz", - "integrity": "sha512-npjkVoz+ank0zjlV9F47Fdbjfj/PfXyVhZvGALWsyIYU/qrMzpi6avjKW3/7KeSU2Df3I46BrN1xOI1+6vW0hA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-3.0.3.tgz", + "integrity": "sha512-Xsn/XSatoVOGBbp5hs3UylFDs5Bi9i+ArpVJKdHPniZHoEgRniXTqHWrWrGQ0PbEClVT6WtfnBwR8CAHC9sveg==", "requires": { "is-plain-object": "^2.0.4" } }, "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "shallow-clone": { "version": "1.0.0", @@ -18650,7 +7430,7 @@ "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "requires": { "shebang-regex": "^1.0.0" } @@ -18658,7 +7438,7 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" }, "side-channel": { "version": "1.0.4", @@ -18673,28 +7453,45 @@ "sigmund": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", "dev": true }, "signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "simple-lru-cache": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/simple-lru-cache/-/simple-lru-cache-0.0.2.tgz", - "integrity": "sha1-1ZzDoZPBpdAyD4Tucy9uRxPlEd0=", + "integrity": "sha512-uEv/AFO0ADI7d99OHDmh1QfYzQk/izT1vCmu/riQfh7qjBVUUgRT87E5s5h7CxWCA/+YoZerykpEthzVrW3LIw==", "dev": true }, "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", "requires": { "is-arrayish": "^0.3.1" } }, + "simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "dev": true, + "requires": { + "semver": "~7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, "sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -18768,15 +7565,15 @@ }, "dependencies": { "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } @@ -18828,40 +7625,25 @@ } }, "spdx-license-ids": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", - "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, "split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "requires": { - "readable-stream": "^3.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", + "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==" }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -18877,7 +7659,7 @@ "stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==" }, "standard": { "version": "14.3.4", @@ -18911,7 +7693,7 @@ "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "requires": { "define-property": "^0.2.5", "object-copy": "^0.1.0" @@ -18920,7 +7702,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } @@ -18928,7 +7710,7 @@ "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "requires": { "kind-of": "^3.0.2" }, @@ -18936,7 +7718,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -18946,7 +7728,7 @@ "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "requires": { "kind-of": "^3.0.2" }, @@ -18954,7 +7736,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -18979,21 +7761,22 @@ } }, "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, "stream-consume": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz", "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==" }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "stream-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-length/-/stream-length-1.0.2.tgz", + "integrity": "sha512-aI+qKFiwoDV4rsXiS7WRoCt+v2RX1nUj17+KJC5r2gfh5xoSJIfP6Y3Do/HtvesFcTSWthIuJ3l1cvKQY/+nZg==", + "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "bluebird": "^2.6.2" } }, "string-width": { @@ -19006,27 +7789,37 @@ } }, "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" } }, "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" } }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "requires": { "ansi-regex": "^3.0.0" } @@ -19040,7 +7833,7 @@ "strip-color": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/strip-color/-/strip-color-0.1.0.tgz", - "integrity": "sha1-EG9l09PmotlAHKwOsM6LinArT3s=" + "integrity": "sha512-p9LsUieSjWNNAxVCXLeilaDlmuUOrDS5/dF9znM1nZc7EGX5+zEFC0bEevsNIaldjlks+2jns5Siz6F9iK6jwA==" }, "strip-json-comments": { "version": "3.1.1", @@ -19048,18 +7841,18 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, "stripe": { - "version": "8.183.0", - "resolved": "https://registry.npmjs.org/stripe/-/stripe-8.183.0.tgz", - "integrity": "sha512-QcM3nimH1CuP49VPPRt36Wgfu4QoS+Wm0eyGMis7Ej+seWFKqMffMdx7TE2gn8dVsJIOA1kDuIbAQGqpZHozGA==", + "version": "8.222.0", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-8.222.0.tgz", + "integrity": "sha512-hrA79fjmN2Eb6K3kxkDzU4ODeVGGjXQsuVaAPSUro6I9MM3X+BvIsVqdphm3BXWfimAGFvUqWtPtHy25mICY1w==", "requires": { "@types/node": ">=8.1.0", - "qs": "^6.6.0" + "qs": "^6.10.3" } }, "success-symbol": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz", - "integrity": "sha1-JAIuSG878c3KCUKDt2nEctO3KJc=" + "integrity": "sha512-7S6uOTxPklNGxOSbDIg4KlVLBQw1UiGVyfCUYgYxrZUKRblUkmGj7r8xlfQoFudvqLv6Ap5gd76/IIFfI9JG2A==" }, "superagent": { "version": "6.1.0", @@ -19098,9 +7891,9 @@ } }, "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" }, "readable-stream": { "version": "3.6.0", @@ -19113,9 +7906,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "requires": { "lru-cache": "^6.0.0" } @@ -19135,6 +7928,12 @@ "has-flag": "^3.0.0" } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "table": { "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", @@ -19147,9 +7946,9 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" }, "emoji-regex": { "version": "7.0.3", @@ -19176,9 +7975,92 @@ } } }, + "tc-api-testing-lib": { + "version": "git+https://github.com/mfrank37/api-automated-testing.git#e4758eeaf434301320a80fef8be4b9f62dad93d7", + "from": "git+https://github.com/mfrank37/api-automated-testing.git", + "dev": true, + "requires": { + "axios": "^0.21.1", + "config": "^3.3.6", + "handlebars": "^4.7.7", + "joi": "^17.4.0", + "lodash": "^4.17.21", + "newman": "^5.2.3", + "newman-reporter-html": "^1.0.5", + "tc-core-library-js": "github:appirio-tech/tc-core-library-js#v2.6.4", + "winston": "^3.3.3" + }, + "dependencies": { + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "tc-core-library-js": { + "version": "github:appirio-tech/tc-core-library-js#df0b36c51cf80918194cbff777214b3c0cf5a151", + "from": "github:appirio-tech/tc-core-library-js#v2.6.4", + "dev": true, + "requires": { + "axios": "^0.19.0", + "bunyan": "^1.8.12", + "jsonwebtoken": "^8.5.1", + "jwks-rsa": "^1.6.0", + "lodash": "^4.17.15", + "millisecond": "^0.1.2", + "r7insight_node": "^1.8.4", + "request": "^2.88.0" + }, + "dependencies": { + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "dev": true, + "requires": { + "follow-redirects": "1.5.10" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "dev": true, + "requires": { + "debug": "=3.1.0" + } + } + } + } + } + }, "tc-core-library-js": { - "version": "git+ssh://git@github.com/appirio-tech/tc-core-library-js.git#d16413db30b1eed21c0cf426e185bedb2329ddab", - "from": "tc-core-library-js@github:appirio-tech/tc-core-library-js#v2.6", + "version": "github:appirio-tech/tc-core-library-js#d16413db30b1eed21c0cf426e185bedb2329ddab", + "from": "github:appirio-tech/tc-core-library-js#v2.6", "requires": { "auth0-js": "^9.4.2", "axios": "^0.12.0", @@ -19194,7 +8076,7 @@ "axios": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/axios/-/axios-0.12.0.tgz", - "integrity": "sha1-uQewIhzDTsHJ+sGOx/B935V4W6Q=", + "integrity": "sha512-FyH6bSfRAKChMa6yvHVFcnaBj6zcbKFCZMvNsG+q0r+n2XplEIhxu6JPq73I6wL196aAzUxUYktcayWKAlbiPQ==", "requires": { "follow-redirects": "0.0.7" } @@ -19210,7 +8092,7 @@ "follow-redirects": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", - "integrity": "sha1-NLkLqyqRGqNHVx2pDyK9NuzYqRk=", + "integrity": "sha512-RxpX808lAA4IZ2cNqzRedcsPfVuo2AJEL8mmGvGeN0KGLJWZf5fidmUkcB0DWUCrmLD+GAQ0J2WOBORw8BS/Uw==", "requires": { "debug": "^2.2.0", "stream-consume": "^0.1.0" @@ -19219,10 +8101,16 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, + "teleport-javascript": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/teleport-javascript/-/teleport-javascript-1.0.0.tgz", + "integrity": "sha512-j1llvWVFyEn/6XIFDfX5LAU43DXe0GCt3NfXDwJ8XpRRMkS+i50SAkonAONBy+vxwPFBd50MFU8a2uj8R/ccLg==", + "dev": true + }, "terminal-paginator": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/terminal-paginator/-/terminal-paginator-2.0.2.tgz", @@ -19244,7 +8132,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, @@ -19260,15 +8148,15 @@ }, "dependencies": { "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } @@ -19283,17 +8171,17 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "time-stamp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" + "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==" }, "timers-ext": { "version": "0.1.7", @@ -19316,23 +8204,17 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "requires": { "kind-of": "^3.0.2" } }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -19353,15 +8235,15 @@ "toggle-array": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toggle-array/-/toggle-array-1.0.1.tgz", - "integrity": "sha1-y/WEB5K9UJfzMReugkyTKv/ofVg=", + "integrity": "sha512-TZXgboKpD5Iu0Goi8hRXuJpE06Pbo+bies4I4jnTBhlRRgyen9c37nMylnquK/ZPKXXOeh1mJ14p9QdKp+9v7A==", "requires": { "isobject": "^3.0.0" } }, "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, "topo": { "version": "3.0.3", @@ -19381,7 +8263,7 @@ "toposort-class": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" + "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==" }, "touch": { "version": "3.1.0", @@ -19407,14 +8289,14 @@ "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" }, "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "requires": { "safe-buffer": "^5.0.1" } @@ -19422,7 +8304,7 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" }, "type": { "version": "1.2.0", @@ -19433,7 +8315,7 @@ "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "requires": { "prelude-ls": "~1.1.2" } @@ -19468,9 +8350,9 @@ } }, "uglify-js": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz", - "integrity": "sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==", + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.1.tgz", + "integrity": "sha512-+juFBsLLw7AqMaqJ0GFvlsGZwdQfI2ooKQB39PSBgMnMakcFosi9O8jCwE+2/2nMNcc0z63r9mwjoDG8zr+q0Q==", "dev": true, "optional": true }, @@ -19481,16 +8363,24 @@ "dev": true, "requires": { "bluebird": "^3.7.2" + }, + "dependencies": { + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + } } }, "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" } }, @@ -19501,9 +8391,9 @@ "dev": true }, "underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.4.tgz", + "integrity": "sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ==" }, "unfetch": { "version": "4.2.0", @@ -19513,124 +8403,28 @@ "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", "dev": true }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "requires": { - "crypto-random-string": "^2.0.0" - } - }, "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, - "update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "update-browserslist-db": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", + "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", "dev": true, "requires": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } + "escalade": "^3.1.1", + "picocolors": "^1.0.0" } }, "uri-js": { @@ -19642,14 +8436,14 @@ } }, "urijs": { - "version": "1.19.7", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.7.tgz", - "integrity": "sha512-Id+IKjdU0Hx+7Zx717jwLPsPeUqz7rAtuVBRLLs+qn+J2nf9NGITWVCxcijgYxBqe83C7sqsQPs6H1pyz3x9gA==" + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", + "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==" }, "url": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", + "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", "requires": { "punycode": "1.3.2", "querystring": "0.2.0" @@ -19658,7 +8452,7 @@ "punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" } } }, @@ -19667,15 +8461,6 @@ "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, "util": { "version": "0.12.4", "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", @@ -19692,18 +8477,35 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, + "uvm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uvm/-/uvm-2.0.2.tgz", + "integrity": "sha512-Ra+aPiS5GXAbwXmyNExqdS42sTqmmx4XWEDF8uJlsTfOkKf9Rd9xNgav1Yckv4HfVEZg4iOFODWHFYuJ+9Fzfg==", + "dev": true, + "requires": { + "flatted": "3.1.1" + }, + "dependencies": { + "flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + } + } + }, "v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", @@ -19720,19 +8522,19 @@ } }, "validator": { - "version": "13.6.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.6.0.tgz", - "integrity": "sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==" + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -19742,14 +8544,14 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" } } }, "warning-symbol": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/warning-symbol/-/warning-symbol-0.1.0.tgz", - "integrity": "sha1-uzHdEbeg+dZ6su2V9Fe2WCW7rSE=" + "integrity": "sha512-1S0lwbHo3kNUKA4VomBAhqn4DPjQkIKSdbOin5K7EFUQNwyIKx+wZMGXKI53RUjla8V2B8ouQduUlgtx8LoSMw==" }, "which": { "version": "1.3.1", @@ -19774,20 +8576,20 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", "dev": true }, "which-typed-array": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", - "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", + "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", + "es-abstract": "^1.20.0", + "for-each": "^0.3.3", "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.7" + "is-typed-array": "^1.1.9" } }, "wide-align": { @@ -19799,49 +8601,6 @@ "string-width": "^1.0.2 || 2" } }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "requires": { - "string-width": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, "winchan": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/winchan/-/winchan-0.2.2.tgz", @@ -19859,7 +8618,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "requires": { "kind-of": "^3.0.2" } @@ -19867,19 +8626,21 @@ } }, "winston": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", - "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.2.tgz", + "integrity": "sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==", "requires": { + "@colors/colors": "1.5.0", "@dabh/diagnostics": "^2.0.2", - "async": "^3.1.0", + "async": "^3.2.3", "is-stream": "^2.0.0", - "logform": "^2.2.0", + "logform": "^2.4.0", "one-time": "^1.0.0", "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", - "winston-transport": "^4.4.0" + "winston-transport": "^4.5.0" }, "dependencies": { "readable-stream": { @@ -19895,12 +8656,25 @@ } }, "winston-transport": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", - "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", "requires": { - "readable-stream": "^2.3.7", - "triple-beam": "^1.2.0" + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "wkx": { @@ -19919,7 +8693,7 @@ "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, "workerpool": { @@ -20000,7 +8774,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "write": { "version": "1.0.3", @@ -20031,12 +8805,6 @@ "lodash": "^4.17.11" } }, - "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true - }, "xml2js": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", @@ -20049,7 +8817,7 @@ "xmlbuilder": { "version": "9.0.7", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + "integrity": "sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ==" }, "xtend": { "version": "4.0.2", @@ -20065,7 +8833,7 @@ "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" }, "yargs": { "version": "16.2.0", diff --git a/package.json b/package.json index 3e378af5..61df3719 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,12 @@ "migrate:restore-rcrm-status": "node scripts/job-rcrm-status-migration/restore.js", "migrate:backup-rcrm-status-v2": "node scripts/job-rcrm-status-migration-v2/backup.js", "migrate:migration-rcrm-status-v2": "node scripts/job-rcrm-status-migration-v2/migration.js", - "migrate:restore-rcrm-status-v2": "node scripts/job-rcrm-status-migration-v2/restore.js" + "migrate:restore-rcrm-status-v2": "node scripts/job-rcrm-status-migration-v2/restore.js", + "demo-payment": "node scripts/demo-payment", + "start:test": "cross-env NODE_ENV=test node app.js", + "mock-api": "cross-env NODE_ENV=test node mock-api/mock-api", + "test:newman": "cross-env NODE_ENV=test node test/postman/newman.js", + "test:newman:clear": "cross-env NODE_ENV=test node test/postman/clearTestData.js" }, "keywords": [], "author": "", @@ -83,15 +88,18 @@ }, "devDependencies": { "chai": "^4.2.0", + "cross-env": "^7.0.3", "csv-parser": "^3.0.0", "handlebars": "^4.7.7", "mocha": "^8.1.3", "no-kafka": "^3.4.3", + "newman": "^5.2.3", "nodemon": "^2.0.4", "nyc": "^15.1.0", "sequelize-cli": "^6.2.0", "sinon": "^9.2.0", - "standard": "^14.3.4" + "standard": "^14.3.4", + "tc-api-testing-lib": "git+https://github.com/mfrank37/api-automated-testing.git" }, "standard": { "ignore": [ diff --git a/src/controllers/CleanUpController.js b/src/controllers/CleanUpController.js new file mode 100644 index 00000000..40cb0799 --- /dev/null +++ b/src/controllers/CleanUpController.js @@ -0,0 +1,19 @@ +/** + * Controller for cleaning up test data + */ + +const service = require('../services/CleanUpService') + +/** + * Clear the postman test data + * @param {Object} req the request + * @param {Object} res the response + */ +async function cleanUpTestData (req, res) { + await service.cleanUpTestData(req.authUser) + res.status(200).end() +} + +module.exports = { + cleanUpTestData +} diff --git a/src/routes/InternalRoutes.js b/src/routes/InternalRoutes.js new file mode 100644 index 00000000..143663a6 --- /dev/null +++ b/src/routes/InternalRoutes.js @@ -0,0 +1,15 @@ +/** + * Contains internal routes + */ +const constants = require('../../app-constants') +module.exports = { + '/taas/internal/jobs/clean': { + post: { + controller: 'CleanUpController', + method: 'cleanUpTestData', + auth: 'jwt', + scopes: [constants.Scopes.ALL_JOB, constants.Scopes.ALL_JOB_CANDIDATE, constants.Scopes.ALL_RESOURCE_BOOKING, + constants.Scopes.ALL_WORK_PERIOD, constants.Scopes.ALL_WORK_PERIOD_PAYMENT, constants.Scopes.ALL_INTERVIEW, constants.Scopes.ALL_RESOURCES] + } + } +} diff --git a/src/routes/JobCandidateRoutes.js b/src/routes/JobCandidateRoutes.js index 197a7bcd..c7641c65 100644 --- a/src/routes/JobCandidateRoutes.js +++ b/src/routes/JobCandidateRoutes.js @@ -9,13 +9,13 @@ module.exports = { controller: 'JobCandidateController', method: 'createJobCandidate', auth: 'jwt', - scopes: [constants.Scopes.CREATE_JOB_CANDIDATE, constants.Scopes.ALL_JOB_CANDIDATE] + scopes: [constants.Scopes.CREATE_JOB_CANDIDATE, constants.Scopes.ALL_JOB_CANDIDATE, constants.Scopes.ALL_RESOURCES] }, get: { controller: 'JobCandidateController', method: 'searchJobCandidates', auth: 'jwt', - scopes: [constants.Scopes.READ_JOB_CANDIDATE, constants.Scopes.ALL_JOB_CANDIDATE] + scopes: [constants.Scopes.READ_JOB_CANDIDATE, constants.Scopes.ALL_JOB_CANDIDATE, constants.Scopes.ALL_RESOURCES] } }, '/jobCandidates/:id': { @@ -23,25 +23,25 @@ module.exports = { controller: 'JobCandidateController', method: 'getJobCandidate', auth: 'jwt', - scopes: [constants.Scopes.READ_JOB_CANDIDATE, constants.Scopes.ALL_JOB_CANDIDATE] + scopes: [constants.Scopes.READ_JOB_CANDIDATE, constants.Scopes.ALL_JOB_CANDIDATE, constants.Scopes.ALL_RESOURCES] }, put: { controller: 'JobCandidateController', method: 'fullyUpdateJobCandidate', auth: 'jwt', - scopes: [constants.Scopes.UPDATE_JOB_CANDIDATE, constants.Scopes.ALL_JOB_CANDIDATE] + scopes: [constants.Scopes.UPDATE_JOB_CANDIDATE, constants.Scopes.ALL_JOB_CANDIDATE, constants.Scopes.ALL_RESOURCES] }, patch: { controller: 'JobCandidateController', method: 'partiallyUpdateJobCandidate', auth: 'jwt', - scopes: [constants.Scopes.UPDATE_JOB_CANDIDATE, constants.Scopes.ALL_JOB_CANDIDATE] + scopes: [constants.Scopes.UPDATE_JOB_CANDIDATE, constants.Scopes.ALL_JOB_CANDIDATE, constants.Scopes.ALL_RESOURCES] }, delete: { controller: 'JobCandidateController', method: 'deleteJobCandidate', auth: 'jwt', - scopes: [constants.Scopes.DELETE_JOB_CANDIDATE, constants.Scopes.ALL_JOB_CANDIDATE] + scopes: [constants.Scopes.DELETE_JOB_CANDIDATE, constants.Scopes.ALL_JOB_CANDIDATE, constants.Scopes.ALL_RESOURCES] } }, '/jobCandidates/:id/resume': { @@ -49,7 +49,7 @@ module.exports = { controller: 'JobCandidateController', method: 'downloadJobCandidateResume', auth: 'jwt', - scopes: [constants.Scopes.READ_JOB_CANDIDATE, constants.Scopes.ALL_JOB_CANDIDATE] + scopes: [constants.Scopes.READ_JOB_CANDIDATE, constants.Scopes.ALL_JOB_CANDIDATE, constants.Scopes.ALL_RESOURCES] } } } diff --git a/src/routes/JobRoutes.js b/src/routes/JobRoutes.js index 5764f9c7..6ed56443 100644 --- a/src/routes/JobRoutes.js +++ b/src/routes/JobRoutes.js @@ -9,13 +9,13 @@ module.exports = { controller: 'JobController', method: 'createJob', auth: 'jwt', - scopes: [constants.Scopes.CREATE_JOB, constants.Scopes.ALL_JOB] + scopes: [constants.Scopes.CREATE_JOB, constants.Scopes.ALL_JOB, constants.Scopes.ALL_RESOURCES] }, get: { controller: 'JobController', method: 'searchJobs', auth: 'jwt', - scopes: [constants.Scopes.READ_JOB, constants.Scopes.ALL_JOB] + scopes: [constants.Scopes.READ_JOB, constants.Scopes.ALL_JOB, constants.Scopes.ALL_RESOURCES] } }, '/jobs/:id': { @@ -23,25 +23,25 @@ module.exports = { controller: 'JobController', method: 'getJob', auth: 'jwt', - scopes: [constants.Scopes.READ_JOB, constants.Scopes.ALL_JOB] + scopes: [constants.Scopes.READ_JOB, constants.Scopes.ALL_JOB, constants.Scopes.ALL_RESOURCES] }, put: { controller: 'JobController', method: 'fullyUpdateJob', auth: 'jwt', - scopes: [constants.Scopes.UPDATE_JOB, constants.Scopes.ALL_JOB] + scopes: [constants.Scopes.UPDATE_JOB, constants.Scopes.ALL_JOB, constants.Scopes.ALL_RESOURCES] }, patch: { controller: 'JobController', method: 'partiallyUpdateJob', auth: 'jwt', - scopes: [constants.Scopes.UPDATE_JOB, constants.Scopes.ALL_JOB] + scopes: [constants.Scopes.UPDATE_JOB, constants.Scopes.ALL_JOB, constants.Scopes.ALL_RESOURCES] }, delete: { controller: 'JobController', method: 'deleteJob', auth: 'jwt', - scopes: [constants.Scopes.DELETE_JOB, constants.Scopes.ALL_JOB] + scopes: [constants.Scopes.DELETE_JOB, constants.Scopes.ALL_JOB, constants.Scopes.ALL_RESOURCES] } } } diff --git a/src/routes/ResourceBookingRoutes.js b/src/routes/ResourceBookingRoutes.js index eb152165..31ea44fc 100644 --- a/src/routes/ResourceBookingRoutes.js +++ b/src/routes/ResourceBookingRoutes.js @@ -9,13 +9,13 @@ module.exports = { controller: 'ResourceBookingController', method: 'createResourceBooking', auth: 'jwt', - scopes: [constants.Scopes.CREATE_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCE_BOOKING] + scopes: [constants.Scopes.CREATE_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCES] }, get: { controller: 'ResourceBookingController', method: 'searchResourceBookings', auth: 'jwt', - scopes: [constants.Scopes.READ_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCE_BOOKING] + scopes: [constants.Scopes.READ_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCES] } }, '/resourceBookings/:id': { @@ -23,25 +23,25 @@ module.exports = { controller: 'ResourceBookingController', method: 'getResourceBooking', auth: 'jwt', - scopes: [constants.Scopes.READ_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCE_BOOKING] + scopes: [constants.Scopes.READ_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCES] }, put: { controller: 'ResourceBookingController', method: 'fullyUpdateResourceBooking', auth: 'jwt', - scopes: [constants.Scopes.UPDATE_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCE_BOOKING] + scopes: [constants.Scopes.UPDATE_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCES] }, patch: { controller: 'ResourceBookingController', method: 'partiallyUpdateResourceBooking', auth: 'jwt', - scopes: [constants.Scopes.UPDATE_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCE_BOOKING] + scopes: [constants.Scopes.UPDATE_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCES] }, delete: { controller: 'ResourceBookingController', method: 'deleteResourceBooking', auth: 'jwt', - scopes: [constants.Scopes.DELETE_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCE_BOOKING] + scopes: [constants.Scopes.DELETE_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCE_BOOKING, constants.Scopes.ALL_RESOURCES] } } } diff --git a/src/services/CleanUpService.js b/src/services/CleanUpService.js new file mode 100644 index 00000000..b46a5225 --- /dev/null +++ b/src/services/CleanUpService.js @@ -0,0 +1,106 @@ +/** + * This service provides operations to clean up the environment for running automated tests. + */ + +const _ = require('lodash') +const config = require('config') +const models = require('../models') +const helper = require('../common/helper') +const logger = require('../common/logger') +const errors = require('../common/errors') +const Joi = require('joi') + +/** + * Delete the record from database by the given criteria. + * @param model the model + * @param key the search key criteria + * @param value the search value criteria + * @param name the entity name + * @returns {Promise} + */ +async function deleteFromDb (model, key, value, name) { + const deleted = await model.destroy({ + where: { + [key]: value + }, + force: true + }) + logger.info({ component: 'CleanUpService', context: 'cleanUpTestData', message: `${deleted} ${name}s deleted from DB` }) +} + +/** + * Delete the record from elasticsearch by the given criteria. + * @param index the index name + * @param key the search key criteria + * @param value the search value criteria + * @param name the entity name + * @returns {Promise} + */ +async function deleteFromES (index, key, value, name) { + const esClient = helper.getESClient() + const { body } = await esClient.deleteByQuery({ + index: index, + body: { + query: { + terms: { [key]: value } + } + } + }) + logger.info({ component: 'CleanUpService', context: 'cleanUpTestData', message: `${body.deleted}/${body.total} ${name}s deleted from ES` }) +} + +/** + * Clear the postman test data. The main function of this class. + * @param {Object} currentUser the user who perform this operation + * @returns {Promise} + */ +async function cleanUpTestData (currentUser) { + if (!currentUser.hasManagePermission && !currentUser.isMachine) { + throw new errors.ForbiddenError('You are not allowed to perform this action!') + } + logger.info({ component: 'CleanUpService', context: 'cleanUpTestData', message: 'clear the test data from postman test!' }) + // Find job records with test prefix + const jobsDb = await models.Job.findAll({ + where: { + title: { [models.Sequelize.Op.like]: `${config.AUTOMATED_TESTING_NAME_PREFIX}%` } + }, + paranoid: false, + raw: true + }) + const jobIdsDb = _.map(jobsDb, 'id') + // records will be hard deleted, so the associated models will be deleted also. + // by hard deleting resource bookings; work periods and work period payments will be deleted also + await deleteFromDb(models.ResourceBooking, 'jobId', jobIdsDb, 'ResourceBooking') + // interview model is not configured as cascading constraints on delete + await deleteFromDb(models.Interview, 'hostEmail', { [models.Sequelize.Op.like]: `${config.AUTOMATED_TESTING_NAME_PREFIX}%` }, 'Interview') + // by hard deleting jobs; job candidates will be deleted also + await deleteFromDb(models.Job, 'id', jobIdsDb, 'Job') + const esClient = helper.getESClient() + const { body: jobsES } = await esClient.search({ + index: config.get('esConfig.ES_INDEX_JOB'), + body: { + query: { + match_phrase_prefix: { + title: { + query: config.AUTOMATED_TESTING_NAME_PREFIX + } + } + }, + size: 1000 + } + }) + const jobIdsES = _.map(jobsES.hits.hits, '_id') + + await deleteFromES(config.get('esConfig.ES_INDEX_JOB'), '_id', jobIdsES, 'Job') + await deleteFromES(config.get('esConfig.ES_INDEX_JOB_CANDIDATE'), 'jobId', jobIdsES, 'Job Candidate') + await deleteFromES(config.get('esConfig.ES_INDEX_RESOURCE_BOOKING'), 'jobId', jobIdsES, 'Resource Booking') + + logger.info({ component: 'CleanUpService', context: 'cleanUpTestData', message: 'clear the test data from postman test completed!' }) +} +cleanUpTestData.schema = Joi.object().keys({ + currentUser: Joi.object().required() +}).required() + +module.exports = { + cleanUpTestData +} diff --git a/src/services/ResourceBookingService.js b/src/services/ResourceBookingService.js index 8ef7dba4..b182a336 100644 --- a/src/services/ResourceBookingService.js +++ b/src/services/ResourceBookingService.js @@ -46,7 +46,7 @@ function _cacheModelFields () { * @returns {Boolean} true if user is machine and has read/all workPeriod scopes */ function _checkUserScopesForGetWorkPeriods (currentUser) { - const getWorkPeriodsScopes = [constants.Scopes.READ_WORK_PERIOD, constants.Scopes.ALL_WORK_PERIOD] + const getWorkPeriodsScopes = [constants.Scopes.READ_WORK_PERIOD, constants.Scopes.ALL_WORK_PERIOD, constants.Scopes.ALL_RESOURCES] return currentUser.isMachine && helper.checkIfExists(getWorkPeriodsScopes, currentUser.scopes) } @@ -56,7 +56,7 @@ function _checkUserScopesForGetWorkPeriods (currentUser) { * @returns {Boolean} true if user is machine and has read/all workPeriodPayment scopes */ function _checkUserScopesForGetWorkPeriodPayments (currentUser) { - const getWorkPeriodPaymentsScopes = [constants.Scopes.READ_WORK_PERIOD_PAYMENT, constants.Scopes.ALL_WORK_PERIOD_PAYMENT] + const getWorkPeriodPaymentsScopes = [constants.Scopes.READ_WORK_PERIOD_PAYMENT, constants.Scopes.ALL_WORK_PERIOD_PAYMENT, constants.Scopes.ALL_RESOURCES] return currentUser.isMachine && helper.checkIfExists(getWorkPeriodPaymentsScopes, currentUser.scopes) } diff --git a/test/postman/clearTestData.js b/test/postman/clearTestData.js new file mode 100644 index 00000000..22f469e9 --- /dev/null +++ b/test/postman/clearTestData.js @@ -0,0 +1,23 @@ +/** + * Clear the postman test data. All data created by postman e2e tests will be cleared. + */ +const logger = require('../../src/common/logger') +const helper = require('./testHelper') +const config = require('config') + +/** + * Clear the postman test data. The main function of this class. + * @returns {Promise} + */ +async function clearTestData () { + logger.info('Clear the Postman test data.') + await helper.postRequest(`${config.API_BASE_URL}${config.BASE_PATH}/internal/jobs/clean`) + .then(() => { + logger.info('Completed!') + process.exit() + }).catch((e) => { + logger.logFullError(e) + process.exit(1) + }) +} +clearTestData() diff --git a/test/postman/newman.js b/test/postman/newman.js new file mode 100644 index 00000000..1b084f0e --- /dev/null +++ b/test/postman/newman.js @@ -0,0 +1,944 @@ +const config = require('config') +const apiTestLib = require('tc-api-testing-lib') +const envHelper = require('./testHelper') +const logger = require('../../src/common/logger') + +const healthCheckRequests = [ + { + folder: 'health check', + iterationData: require('./testData/health/health-check.json') + } +] + +const jobRequests = [ + { + folder: 'create job successfully', + iterationData: require('./testData/job/create-job-successfully.json') + }, + { + folder: 'create job by invalid token', + iterationData: require('./testData/job/create-job-by-invalid-token.json') + }, + { + folder: 'create job by non member of project', + iterationData: require('./testData/job/create-job-by-non-member-of-project.json') + }, + { + folder: 'create job by invalid field', + iterationData: require('./testData/job/create-job-by-invalid-field.json') + }, + { + folder: 'create job by missing field', + iterationData: require('./testData/job/create-job-by-missing-field.json') + }, + { + folder: 'wait for es processor' + }, + { + folder: 'get job successfully', + iterationData: require('./testData/job/get-job-successfully.json') + }, + { + folder: 'get job successfully fromDb', + iterationData: require('./testData/job/get-job-successfully-fromDb.json') + }, + { + folder: 'get job by invalid token', + iterationData: require('./testData/job/get-job-by-invalid-token.json') + }, + { + folder: 'get job by non member of project', + iterationData: require('./testData/job/get-job-by-non-member-of-project.json') + }, + { + folder: 'get job by invalid id', + iterationData: require('./testData/job/get-job-by-invalid-id.json') + }, + { + folder: 'search jobs successfully', + iterationData: require('./testData/job/search-jobs-successfully.json') + }, + { + folder: 'search jobs by invalid token', + iterationData: require('./testData/job/search-jobs-by-invalid-token.json') + }, + { + folder: 'search jobs by invalid field', + iterationData: require('./testData/job/search-jobs-by-invalid-field.json') + }, + { + folder: 'search jobs by non member of project', + iterationData: require('./testData/job/search-jobs-by-non-member-of-project.json') + }, + { + folder: 'fully update job successfully', + iterationData: require('./testData/job/fully-update-job-successfully.json') + }, + { + folder: 'fully update job by invalid token', + iterationData: require('./testData/job/fully-update-job-by-invalid-token.json') + }, + { + folder: 'fully update job by invalid field', + iterationData: require('./testData/job/fully-update-job-by-invalid-field.json') + }, + { + folder: 'fully update job by missing field', + iterationData: require('./testData/job/fully-update-job-by-missing-field.json') + }, + { + folder: 'fully update job by invalid id', + iterationData: require('./testData/job/fully-update-job-by-invalid-id.json') + }, + { + folder: 'partially update job successfully', + iterationData: require('./testData/job/partially-update-job-successfully.json') + }, + { + folder: 'partially update job by invalid token', + iterationData: require('./testData/job/partially-update-job-by-invalid-token.json') + }, + { + folder: 'partially update job by invalid field', + iterationData: require('./testData/job/partially-update-job-by-invalid-field.json') + }, + { + folder: 'partially update job by invalid id', + iterationData: require('./testData/job/partially-update-job-by-invalid-id.json') + }, + { + folder: 'delete job by invalid token', + iterationData: require('./testData/job/delete-job-by-invalid-token.json') + }, + { + folder: 'delete job by no admin', + iterationData: require('./testData/job/delete-job-by-no-admin.json') + }, + { + folder: 'delete job by invalid id', + iterationData: require('./testData/job/delete-job-by-invalid-id.json') + }, + { + folder: 'delete job successfully', + iterationData: require('./testData/job/delete-job-successfully.json') + } +] + +const jobCandidateRequests = [ + { + folder: 'create job candidate successfully', + iterationData: require('./testData/jobCandidate/create-jobCandidate-successfully.json') + }, + { + folder: 'create job candidate by invalid token', + iterationData: require('./testData/jobCandidate/create-jobCandidate-by-invalid-token.json') + }, + { + folder: 'create job candidate by no admin', + iterationData: require('./testData/jobCandidate/create-jobCandidate-by-no-admin.json') + }, + { + folder: 'create job candidate by nonexistent ids', + iterationData: require('./testData/jobCandidate/create-jobCandidate-by-nonexistent-ids.json') + }, + { + folder: 'create job candidate by invalid field', + iterationData: require('./testData/jobCandidate/create-jobCandidate-by-invalid-field.json') + }, + { + folder: 'create job candidate by missing field', + iterationData: require('./testData/jobCandidate/create-jobCandidate-by-missing-field.json') + }, + { + folder: 'wait for es processor' + }, + { + folder: 'get job candidate successfully', + iterationData: require('./testData/jobCandidate/get-jobCandidate-successfully.json') + }, + { + folder: 'get job candidate successfully fromDb', + iterationData: require('./testData/jobCandidate/get-jobCandidate-successfully-fromDb.json') + }, + { + folder: 'get job candidate by invalid token', + iterationData: require('./testData/jobCandidate/get-jobCandidate-by-invalid-token.json') + }, + { + folder: 'get job candidate by non member of project', + iterationData: require('./testData/jobCandidate/get-jobCandidate-by-non-member-of-project.json') + }, + { + folder: 'get job candidate by invalid id', + iterationData: require('./testData/jobCandidate/get-jobCandidate-by-invalid-id.json') + }, + { + folder: 'search job candidates successfully', + iterationData: require('./testData/jobCandidate/search-jobCandidates-successfully.json') + }, + { + folder: 'search job candidates by invalid token', + iterationData: require('./testData/jobCandidate/search-jobCandidates-by-invalid-token.json') + }, + { + folder: 'search job candidates by invalid field', + iterationData: require('./testData/jobCandidate/search-jobCandidates-by-invalid-field.json') + }, + { + folder: 'search job candidates by non member of project', + iterationData: require('./testData/jobCandidate/search-jobCandidates-by-non-member-of-project.json') + }, + { + folder: 'fully update job candidate successfully', + iterationData: require('./testData/jobCandidate/fully-update-jobCandidate-successfully.json') + }, + { + folder: 'fully update job candidate by invalid token', + iterationData: require('./testData/jobCandidate/fully-update-jobCandidate-by-invalid-token.json') + }, + { + folder: 'fully update job candidate by non member of project', + iterationData: require('./testData/jobCandidate/fully-update-jobCandidate-by-non-member-of-project.json') + }, + { + folder: 'fully update job candidate by invalid field', + iterationData: require('./testData/jobCandidate/fully-update-jobCandidate-by-invalid-field.json') + }, + { + folder: 'fully update job candidate by invalid id', + iterationData: require('./testData/jobCandidate/fully-update-jobCandidate-by-invalid-id.json') + }, + { + folder: 'fully update job candidate by missing field', + iterationData: require('./testData/jobCandidate/fully-update-jobCandidate-by-missing-field.json') + }, + { + folder: 'partially update job candidate successfully', + iterationData: require('./testData/jobCandidate/partially-update-jobCandidate-successfully.json') + }, + { + folder: 'partially update job candidate by invalid token', + iterationData: require('./testData/jobCandidate/partially-update-jobCandidate-by-invalid-token.json') + }, + { + folder: 'partially update job candidate by no member of project', + iterationData: require('./testData/jobCandidate/partially-update-jobCandidate-by-non-member-of-project.json') + }, + { + folder: 'partially update job candidate by invalid field', + iterationData: require('./testData/jobCandidate/partially-update-jobCandidate-by-invalid-field.json') + }, + { + folder: 'partially update job candidate by invalid id', + iterationData: require('./testData/jobCandidate/partially-update-jobCandidate-by-invalid-id.json') + }, + { + folder: 'delete job candidate by invalid token', + iterationData: require('./testData/jobCandidate/delete-jobCandidate-by-invalid-token.json') + }, + { + folder: 'delete job candidate by no admin', + iterationData: require('./testData/jobCandidate/delete-jobCandidate-by-no-admin.json') + }, + { + folder: 'delete job candidate by invalid id', + iterationData: require('./testData/jobCandidate/delete-jobCandidate-by-invalid-id.json') + }, + { + folder: 'delete job candidate successfully', + iterationData: require('./testData/jobCandidate/delete-jobCandidate-successfully.json') + } +] + +const resourceBookingRequests = [ + { + folder: 'create resource booking successfully', + iterationData: require('./testData/resourceBooking/create-resourceBooking-successfully.json') + }, + { + folder: 'create resource booking by invalid token', + iterationData: require('./testData/resourceBooking/create-resourceBooking-by-invalid-token.json') + }, + { + folder: 'create resource booking by no admin', + iterationData: require('./testData/resourceBooking/create-resourceBooking-by-no-admin.json') + }, + { + folder: 'create resource booking by nonexistent ids', + iterationData: require('./testData/resourceBooking/create-resourceBooking-by-nonexistent-ids.json') + }, + { + folder: 'create resource booking by invalid field', + iterationData: require('./testData/resourceBooking/create-resourceBooking-by-invalid-field.json') + }, + { + folder: 'create resource booking by missing field', + iterationData: require('./testData/resourceBooking/create-resourceBooking-by-missing-field.json') + }, + { + folder: 'add dates to resource booking', + iterationData: require('./testData/resourceBooking/add-dates-to-resourceBooking.json') + }, + { + folder: 'wait for es processor' + }, + { + folder: 'get resource booking successfully fromDb', + iterationData: require('./testData/resourceBooking/get-resourceBooking-successfully-fromDb.json') + }, + { + folder: 'get resource booking successfully', + iterationData: require('./testData/resourceBooking/get-resourceBooking-successfully.json') + }, + { + folder: 'get resource booking successfully fromDb with parameters', + iterationData: require('./testData/resourceBooking/get-resourceBooking-successfully-fromDb-with-parameters.json') + }, + { + folder: 'get resource booking successfully with parameters', + iterationData: require('./testData/resourceBooking/get-resourceBooking-successfully-with-parameters.json') + }, + { + folder: 'get resource booking by invalid token', + iterationData: require('./testData/resourceBooking/get-resourceBooking-by-invalid-token.json') + }, + { + folder: 'get resource booking by non member of project', + iterationData: require('./testData/resourceBooking/get-resourceBooking-by-non-member-of-project.json') + }, + { + folder: 'get resource booking by invalid id', + iterationData: require('./testData/resourceBooking/get-resourceBooking-by-invalid-id.json') + }, + { + folder: 'get resource booking by invalid parameters', + iterationData: require('./testData/resourceBooking/get-resourceBooking-by-invalid-parameters.json') + }, + { + folder: 'search resource booking successfully', + iterationData: require('./testData/resourceBooking/search-resourceBooking-successfully.json') + }, + { + folder: 'search resource booking by invalid token', + iterationData: require('./testData/resourceBooking/search-resourceBooking-by-invalid-token.json') + }, + { + folder: 'search resource booking by non member of project', + iterationData: require('./testData/resourceBooking/search-resourceBooking-by-non-member-of-project.json') + }, + { + folder: 'search resource booking by invalid field', + iterationData: require('./testData/resourceBooking/search-resourceBooking-by-invalid-field.json') + }, + { + folder: 'fully update resource booking successfully', + iterationData: require('./testData/resourceBooking/fully-update-resourceBooking-successfully.json') + }, + { + folder: 'fully update resource booking by invalid token', + iterationData: require('./testData/resourceBooking/fully-update-resourceBooking-by-invalid-token.json') + }, + { + folder: 'fully update resource booking by no admin', + iterationData: require('./testData/resourceBooking/fully-update-resourceBooking-by-no-admin.json') + }, + { + folder: 'fully update resource booking by nonexistent ids', + iterationData: require('./testData/resourceBooking/fully-update-resourceBooking-by-nonexistent-ids.json') + }, + { + folder: 'fully update resource booking by invalid field', + iterationData: require('./testData/resourceBooking/fully-update-resourceBooking-by-invalid-field.json') + }, + { + folder: 'fully update resource booking by missing field', + iterationData: require('./testData/resourceBooking/fully-update-resourceBooking-by-missing-field.json') + }, + { + folder: 'partially update resource booking successfully', + iterationData: require('./testData/resourceBooking/partially-update-resourceBooking-successfully.json') + }, + { + folder: 'partially update resource booking by invalid token', + iterationData: require('./testData/resourceBooking/partially-update-resourceBooking-by-invalid-token.json') + }, + { + folder: 'partially update resource booking by no admin', + iterationData: require('./testData/resourceBooking/partially-update-resourceBooking-by-no-admin.json') + }, + { + folder: 'partially update resource booking by nonexistent ids', + iterationData: require('./testData/resourceBooking/partially-update-resourceBooking-by-nonexistent-ids.json') + }, + { + folder: 'partially update resource booking by invalid field', + iterationData: require('./testData/resourceBooking/partially-update-resourceBooking-by-invalid-field.json') + }, + { + folder: 'delete resource booking by invalid token', + iterationData: require('./testData/resourceBooking/delete-resourceBooking-by-invalid-token.json') + }, + { + folder: 'delete resource booking by no admin', + iterationData: require('./testData/resourceBooking/delete-resourceBooking-by-no-admin.json') + }, + { + folder: 'delete resource booking by invalid id', + iterationData: require('./testData/resourceBooking/delete-resourceBooking-by-invalid-id.json') + }, + { + folder: 'delete resource booking successfully', + iterationData: require('./testData/resourceBooking/delete-resourceBooking-successfully.json') + } +] + +const workPeriodRequests = [ + { + folder: 'create work period successfully', + iterationData: require('./testData/workPeriod/create-workPeriod-successfully.json') + }, + { + folder: 'create work period by invalid token', + iterationData: require('./testData/workPeriod/create-workPeriod-by-invalid-token.json') + }, + { + folder: 'create work period by no admin', + iterationData: require('./testData/workPeriod/create-workPeriod-by-no-admin.json') + }, + { + folder: 'create work period by nonexistent ids', + iterationData: require('./testData/workPeriod/create-workPeriod-by-nonexistent-ids.json') + }, + { + folder: 'create work period by invalid field', + iterationData: require('./testData/workPeriod/create-workPeriod-by-invalid-field.json') + }, + { + folder: 'create work period by missing field', + iterationData: require('./testData/workPeriod/create-workPeriod-by-missing-field.json') + }, + { + folder: 'wait for es processor' + }, + { + folder: 'get work period successfully', + iterationData: require('./testData/workPeriod/get-workPeriod-successfully.json') + }, + { + folder: 'get work period successfully fomDb', + iterationData: require('./testData/workPeriod/get-workPeriod-successfully-fromDb.json') + }, + { + folder: 'get work period by invalid token', + iterationData: require('./testData/workPeriod/get-workPeriod-by-invalid-token.json') + }, + { + folder: 'get work period by non member of project', + iterationData: require('./testData/workPeriod/get-workPeriod-by-non-member-of-project.json') + }, + { + folder: 'get work period by invalid id', + iterationData: require('./testData/workPeriod/get-workPeriod-by-invalid-id.json') + }, + { + folder: 'search work period successfully', + iterationData: require('./testData/workPeriod/search-workPeriod-successfully.json') + }, + { + folder: 'search work period by invalid token', + iterationData: require('./testData/workPeriod/search-workPeriod-by-invalid-token.json') + }, + { + folder: 'search work period by non member of project', + iterationData: require('./testData/workPeriod/search-workPeriod-by-non-member-of-project.json') + }, + { + folder: 'search work period by invalid field', + iterationData: require('./testData/workPeriod/search-workPeriod-by-invalid-field.json') + }, + { + folder: 'fully update work period successfully', + iterationData: require('./testData/workPeriod/fully-update-workPeriod-successfully.json') + }, + { + folder: 'fully update work period by invalid token', + iterationData: require('./testData/workPeriod/fully-update-workPeriod-by-invalid-token.json') + }, + { + folder: 'fully update work period by no admin', + iterationData: require('./testData/workPeriod/fully-update-workPeriod-by-no-admin.json') + }, + { + folder: 'fully update work period already exists', + iterationData: require('./testData/workPeriod/fully-update-workPeriod-already-exist.json') + }, + { + folder: 'fully update work period by nonexistent ids', + iterationData: require('./testData/workPeriod/fully-update-workPeriod-by-nonexistent-ids.json') + }, + { + folder: 'fully update work period by invalid field', + iterationData: require('./testData/workPeriod/fully-update-workPeriod-by-invalid-field.json') + }, + { + folder: 'fully update work period by missing field', + iterationData: require('./testData/workPeriod/fully-update-workPeriod-by-missing-field.json') + }, + { + folder: 'partially update work period successfully', + iterationData: require('./testData/workPeriod/partially-update-workPeriod-successfully.json') + }, + { + folder: 'partially update work period by invalid token', + iterationData: require('./testData/workPeriod/partially-update-workPeriod-by-invalid-token.json') + }, + { + folder: 'partially update work period by no admin', + iterationData: require('./testData/workPeriod/partially-update-workPeriod-by-no-admin.json') + }, + { + folder: 'partially update work period already exists', + iterationData: require('./testData/workPeriod/partially-update-workPeriod-already-exist.json') + }, + { + folder: 'partially update work period by nonexistent ids', + iterationData: require('./testData/workPeriod/partially-update-workPeriod-by-nonexistent-ids.json') + }, + { + folder: 'partially update work period by invalid field', + iterationData: require('./testData/workPeriod/partially-update-workPeriod-by-invalid-field.json') + }, + { + folder: 'delete work period by invalid token', + iterationData: require('./testData/workPeriod/delete-workPeriod-by-invalid-token.json') + }, + { + folder: 'delete work period by no admin', + iterationData: require('./testData/workPeriod/delete-workPeriod-by-no-admin.json') + }, + { + folder: 'delete work period by invalid id', + iterationData: require('./testData/workPeriod/delete-workPeriod-by-invalid-id.json') + }, + { + folder: 'delete work period with paid status', + iterationData: require('./testData/workPeriod/delete-workPeriod-by-with-paid-status.json') + }, + { + folder: 'delete work period successfully', + iterationData: require('./testData/workPeriod/delete-workPeriod-successfully.json') + } +] + +const workPeriodPaymentRequests = [ + { + folder: 'create work period payment successfully', + iterationData: require('./testData/workPeriodPayment/create-workPeriodPayment-successfully.json') + }, + { + folder: 'create work period payment by invalid token', + iterationData: require('./testData/workPeriodPayment/create-workPeriodPayment-by-invalid-token.json') + }, + { + folder: 'create work period payment by no admin', + iterationData: require('./testData/workPeriodPayment/create-workPeriodPayment-by-no-admin.json') + }, + { + folder: 'create work period payment by nonexistent ids', + iterationData: require('./testData/workPeriodPayment/create-workPeriodPayment-by-nonexistent-ids.json') + }, + { + folder: 'create work period payment without billing account', + iterationData: require('./testData/workPeriodPayment/create-workPeriodPayment-without-billing-account.json') + }, + { + folder: 'create work period payment by invalid field', + iterationData: require('./testData/workPeriodPayment/create-workPeriodPayment-by-invalid-field.json') + }, + { + folder: 'create work period payment by missing field', + iterationData: require('./testData/workPeriodPayment/create-workPeriodPayment-by-missing-field.json') + }, + { + folder: 'wait for es processor' + }, + { + folder: 'get work period payment successfully', + iterationData: require('./testData/workPeriodPayment/get-workPeriodPayment-successfully.json') + }, + { + folder: 'get work period payment successfully fromDb', + iterationData: require('./testData/workPeriodPayment/get-workPeriodPayment-successfully-fromDb.json') + }, + { + folder: 'get work period payment by invalid token', + iterationData: require('./testData/workPeriodPayment/get-workPeriodPayment-by-invalid-token.json') + }, + { + folder: 'get work period payment by no admin', + iterationData: require('./testData/workPeriodPayment/get-workPeriodPayment-by-no-admin.json') + }, + { + folder: 'get work period payment by invalid id', + iterationData: require('./testData/workPeriodPayment/get-workPeriodPayment-by-invalid-id.json') + }, + { + folder: 'search work period payment successfully', + iterationData: require('./testData/workPeriodPayment/search-workPeriodPayment-successfully.json') + }, + { + folder: 'search work period payment by invalid token', + iterationData: require('./testData/workPeriodPayment/search-workPeriodPayment-by-invalid-token.json') + }, + { + folder: 'search work period payment by no admin', + iterationData: require('./testData/workPeriodPayment/search-workPeriodPayment-by-no-admin.json') + }, + { + folder: 'search work period payment by invalid field', + iterationData: require('./testData/workPeriodPayment/search-workPeriodPayment-by-invalid-field.json') + }, + { + folder: 'fully update work period payment successfully', + iterationData: require('./testData/workPeriodPayment/fully-update-workPeriodPayment-successfully.json') + }, + { + folder: 'fully update work period payment by invalid token', + iterationData: require('./testData/workPeriodPayment/fully-update-workPeriodPayment-by-invalid-token.json') + }, + { + folder: 'fully update work period payment by no admin', + iterationData: require('./testData/workPeriodPayment/fully-update-workPeriodPayment-by-no-admin.json') + }, + { + folder: 'fully update work period payment by nonexistent ids', + iterationData: require('./testData/workPeriodPayment/fully-update-workPeriodPayment-by-nonexistent-ids.json') + }, + { + folder: 'fully update work period payment by invalid field', + iterationData: require('./testData/workPeriodPayment/fully-update-workPeriodPayment-by-invalid-field.json') + }, + { + folder: 'fully update work period payment by missing field', + iterationData: require('./testData/workPeriodPayment/fully-update-workPeriodPayment-by-missing-field.json') + }, + { + folder: 'partially update work period payment successfully', + iterationData: require('./testData/workPeriodPayment/partially-update-workPeriodPayment-successfully.json') + }, + { + folder: 'partially update work period payment by invalid token', + iterationData: require('./testData/workPeriodPayment/partially-update-workPeriodPayment-by-invalid-token.json') + }, + { + folder: 'partially update work period payment by no admin', + iterationData: require('./testData/workPeriodPayment/partially-update-workPeriodPayment-by-no-admin.json') + }, + { + folder: 'partially update work period payment by nonexistent ids', + iterationData: require('./testData/workPeriodPayment/partially-update-workPeriodPayment-by-nonexistent-ids.json') + }, + { + folder: 'partially update work period payment by invalid field', + iterationData: require('./testData/workPeriodPayment/partially-update-workPeriodPayment-by-invalid-field.json') + } +] + +const interviewRequests = [ + { + folder: 'request interview successfully', + iterationData: require('./testData/interview/request-interview-successfully.json') + }, + { + folder: 'request interview by invalid token', + iterationData: require('./testData/interview/request-interview-by-invalid-token.json') + }, + { + folder: 'request interview by non member of project', + iterationData: require('./testData/interview/request-interview-by-non-member-of-project.json') + }, + { + folder: 'request interview exceeded', + iterationData: require('./testData/interview/request-interview-exceeded.json') + }, + { + folder: 'request interview by nonexistent ids', + iterationData: require('./testData/interview/request-interview-by-nonexistent-ids.json') + }, + { + folder: 'request interview by invalid field', + iterationData: require('./testData/interview/request-interview-by-invalid-field.json') + }, + { + folder: 'request interview by missing field', + iterationData: require('./testData/interview/request-interview-by-missing-field.json') + }, + { + folder: 'wait for es processor' + }, + { + folder: 'get interview by id successfully', + iterationData: require('./testData/interview/get-interview-by-id-successfully.json') + }, + { + folder: 'get interview by id successfully fromDb', + iterationData: require('./testData/interview/get-interview-by-id-successfully-fromDb.json') + }, + { + folder: 'get interview by id by invalid token', + iterationData: require('./testData/interview/get-interview-by-id-by-invalid-token.json') + }, + { + folder: 'get interview by id by invalid id', + iterationData: require('./testData/interview/get-interview-by-id-by-invalid-id.json') + }, + { + folder: 'get interview by id by non member of project', + iterationData: require('./testData/interview/get-interview-by-id-by-non-member-of-project.json') + }, + { + folder: 'get interview by round successfully', + iterationData: require('./testData/interview/get-interview-by-round-successfully.json') + }, + { + folder: 'get interview by round successfully fromDb', + iterationData: require('./testData/interview/get-interview-by-round-successfully-fromDb.json') + }, + { + folder: 'get interview by round by invalid token', + iterationData: require('./testData/interview/get-interview-by-round-by-invalid-token.json') + }, + { + folder: 'get interview by round by invalid id', + iterationData: require('./testData/interview/get-interview-by-round-by-invalid-id.json') + }, + { + folder: 'get interview by round by non member of project', + iterationData: require('./testData/interview/get-interview-by-round-by-non-member-of-project.json') + }, + { + folder: 'search interviews successfully', + iterationData: require('./testData/interview/search-interviews-successfully.json') + }, + { + folder: 'search interviews by invalid token', + iterationData: require('./testData/interview/search-interviews-by-invalid-token.json') + }, + { + folder: 'search interviews by non member of project', + iterationData: require('./testData/interview/search-interviews-by-non-member-of-project.json') + }, + { + folder: 'search interviews by invalid field', + iterationData: require('./testData/interview/search-interviews-by-invalid-field.json') + }, + { + folder: 'update interview by id successfully', + iterationData: require('./testData/interview/update-interview-by-id-successfully.json') + }, + { + folder: 'update interview by id by invalid token', + iterationData: require('./testData/interview/update-interview-by-id-by-invalid-token.json') + }, + { + folder: 'update interview by id by nonexistent ids', + iterationData: require('./testData/interview/update-interview-by-id-by-nonexistent-ids.json') + }, + { + folder: 'update interview by id by invalid field', + iterationData: require('./testData/interview/update-interview-by-id-by-invalid-field.json') + }, + { + folder: 'update interview by id by missing field', + iterationData: require('./testData/interview/update-interview-by-id-by-missing-field.json') + }, + { + folder: 'update completed interview by id', + iterationData: require('./testData/interview/update-completed-interview-by-id.json') + }, + { + folder: 'update completed interview by round', + iterationData: require('./testData/interview/update-completed-interview-by-round.json') + }, + { + folder: 'update interview by round successfully', + iterationData: require('./testData/interview/update-interview-by-round-successfully.json') + }, + { + folder: 'update interview by round by invalid token', + iterationData: require('./testData/interview/update-interview-by-round-by-invalid-token.json') + }, + { + folder: 'update interview by round by non existent ids', + iterationData: require('./testData/interview/update-interview-by-round-by-nonexistent-ids.json') + }, + { + folder: 'update interview by round by invalid field', + iterationData: require('./testData/interview/update-interview-by-round-by-invalid-field.json') + }, + { + folder: 'update interview by round by missing field', + iterationData: require('./testData/interview/update-interview-by-round-by-missing-field.json') + } +] + +const taasTeamRequests = [ + { + folder: 'search teams successfully', + iterationData: require('./testData/taasTeam/search-taasTeams-successfully.json') + }, + { + folder: 'search teams by invalid token', + iterationData: require('./testData/taasTeam/search-taasTeams-by-invalid-token.json') + }, + { + folder: 'search teams by invalid field', + iterationData: require('./testData/taasTeam/search-taasTeams-by-invalid-field.json') + }, + { + folder: 'send email successfully', + iterationData: require('./testData/taasTeam/send-email-successfully.json') + }, + { + folder: 'send email by invalid token', + iterationData: require('./testData/taasTeam/send-email-by-invalid-token.json') + }, + { + folder: 'send email by invalid field', + iterationData: require('./testData/taasTeam/send-email-by-invalid-field.json') + }, + { + folder: 'send email by missing field', + iterationData: require('./testData/taasTeam/send-email-by-missing-field.json') + }, + { + folder: 'search skills successfully', + iterationData: require('./testData/taasTeam/search-skills-successfully.json') + }, + { + folder: 'search skills by invalid token', + iterationData: require('./testData/taasTeam/search-skills-by-invalid-token.json') + }, + { + folder: 'get me successfully', + iterationData: require('./testData/taasTeam/get-me-successfully.json') + }, + { + folder: 'get me by invalid token', + iterationData: require('./testData/taasTeam/get-me-by-invalid-token.json') + }, + { + folder: 'get team successfully', + iterationData: require('./testData/taasTeam/get-taasTeam-successfully.json') + }, + { + folder: 'get team by invalid token', + iterationData: require('./testData/taasTeam/get-taasTeam-by-invalid-token.json') + }, + { + folder: 'get team by invalid id', + iterationData: require('./testData/taasTeam/get-taasTeam-by-invalid-id.json') + }, + { + folder: 'get team job successfully', + iterationData: require('./testData/taasTeam/get-taasTeamJob-successfully.json') + }, + { + folder: 'get team job by invalid token', + iterationData: require('./testData/taasTeam/get-taasTeamJob-by-invalid-token.json') + }, + { + folder: 'get team job by invalid id', + iterationData: require('./testData/taasTeam/get-taasTeamJob-by-invalid-id.json') + }, + { + folder: 'add members successfully', + iterationData: require('./testData/taasTeam/add-members-successfully.json') + }, + { + folder: 'add members by invalid token', + iterationData: require('./testData/taasTeam/add-members-by-invalid-token.json') + }, + { + folder: 'add members by invalid id', + iterationData: require('./testData/taasTeam/add-members-by-invalid-id.json') + }, + { + folder: 'add members by invalid field', + iterationData: require('./testData/taasTeam/add-members-by-invalid-field.json') + }, + { + folder: 'search members successfully', + iterationData: require('./testData/taasTeam/search-members-successfully.json') + }, + { + folder: 'search members by invalid token', + iterationData: require('./testData/taasTeam/search-members-by-invalid-token.json') + }, + { + folder: 'search members by invalid id', + iterationData: require('./testData/taasTeam/search-members-by-invalid-id.json') + }, + { + folder: 'search invites successfully', + iterationData: require('./testData/taasTeam/search-invites-successfully.json') + }, + { + folder: 'search invites by invalid token', + iterationData: require('./testData/taasTeam/search-invites-by-invalid-token.json') + }, + { + folder: 'search invites by invalid id', + iterationData: require('./testData/taasTeam/search-invites-by-invalid-id.json') + }, + { + folder: 'delete member successfully', + iterationData: require('./testData/taasTeam/delete-member-successfully.json') + }, + { + folder: 'delete member by invalid token', + iterationData: require('./testData/taasTeam/delete-member-by-invalid-token.json') + }, + { + folder: 'delete member by invalid id', + iterationData: require('./testData/taasTeam/delete-member-by-invalid-id.json') + } +] + +const requests = [ + //...healthCheckRequests, + // ...jobRequests, + // ...jobCandidateRequests, + ...resourceBookingRequests, + // ...workPeriodRequests, + // ...workPeriodPaymentRequests, + // ...interviewRequests, + // ...taasTeamRequests +] + +/** + * Clear the test data. + * @return {Promise} + */ +async function clearTestData () { + logger.info('Clear the Postman test data.') + logger.info(`${config.API_BASE_URL}/${config.API_VERSION}/taas/internal/jobs/clean`); + await envHelper.postRequest(`${config.API_BASE_URL}/${config.API_VERSION}/taas/internal/jobs/clean`) + logger.info('Finished clear the Postman test data.') +} + +/** + * Run the postman tests. + */ +apiTestLib.runTests(requests, require.resolve('./topcoder-bookings-api.postman_collection.json'), + require.resolve('./topcoder-bookings-api.postman_environment.json')).then(async () => { + logger.info('newman test completed!') + await clearTestData() +}).catch(async (err) => { + logger.logFullError(err) + + // Only calling the clean up function when it is not validation error. + if (err.name !== 'ValidationError') { + await clearTestData() + } +}) diff --git a/test/postman/testData/health/health-check.json b/test/postman/testData/health/health-check.json new file mode 100644 index 00000000..007405d7 --- /dev/null +++ b/test/postman/testData/health/health-check.json @@ -0,0 +1,5 @@ +[ + { + "httpStatus": 200 + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/get-interview-by-id-by-invalid-id.json b/test/postman/testData/interview/get-interview-by-id-by-invalid-id.json new file mode 100644 index 00000000..83dd7a97 --- /dev/null +++ b/test/postman/testData/interview/get-interview-by-id-by-invalid-id.json @@ -0,0 +1,14 @@ +[ + { + "token": "m2m_token", + "interviewId": "missing_id", + "httpStatus": 404, + "message": "Interview doesn't exist with id/xaiId: [\\w\\W]+" + }, + { + "token": "m2m_token", + "interviewId": "invalid_id", + "httpStatus": 404, + "message": "Interview doesn't exist with id/xaiId: [\\w\\W]+" + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/get-interview-by-id-by-invalid-token.json b/test/postman/testData/interview/get-interview-by-id-by-invalid-token.json new file mode 100644 index 00000000..f05e2714 --- /dev/null +++ b/test/postman/testData/interview/get-interview-by-id-by-invalid-token.json @@ -0,0 +1,26 @@ +[ + { + "token": "invalid_token_1", + "interviewId": "InterviewId-1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "interviewId": "InterviewId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "interviewId": "InterviewId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "interviewId": "InterviewId-1", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/get-interview-by-id-by-non-member-of-project.json b/test/postman/testData/interview/get-interview-by-id-by-non-member-of-project.json new file mode 100644 index 00000000..c4649ab0 --- /dev/null +++ b/test/postman/testData/interview/get-interview-by-id-by-non-member-of-project.json @@ -0,0 +1,14 @@ +[ + { + "token": "user_token", + "interviewId": "InterviewId-1", + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + { + "token": "copilot_token", + "interviewId": "InterviewId-1", + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/get-interview-by-id-successfully-fromDb.json b/test/postman/testData/interview/get-interview-by-id-successfully-fromDb.json new file mode 100644 index 00000000..cc57ff3e --- /dev/null +++ b/test/postman/testData/interview/get-interview-by-id-successfully-fromDb.json @@ -0,0 +1,142 @@ +[ + { + "token": "admin_token", + "interviewId": "InterviewId-1", + "httpStatus": 200, + "responseBody": { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": null, + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-30", + "duration": 30, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 1, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Scheduling" + } + }, + { + "token": "m2m_token", + "interviewId": "InterviewId-2", + "httpStatus": 200, + "responseBody": { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": null, + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-30", + "duration": 30, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 1, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Scheduling" + } + }, + { + "token": "copilot_token", + "interviewId": "InterviewId-3", + "httpStatus": 200, + "responseBody": { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": null, + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-60", + "duration": 60, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 2, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Scheduling" + } + }, + { + "token": "user_token", + "interviewId": "InterviewId-4", + "httpStatus": 200, + "responseBody": { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": null, + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-30", + "duration": 30, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 3, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Completed" + } + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/get-interview-by-id-successfully.json b/test/postman/testData/interview/get-interview-by-id-successfully.json new file mode 100644 index 00000000..cc57ff3e --- /dev/null +++ b/test/postman/testData/interview/get-interview-by-id-successfully.json @@ -0,0 +1,142 @@ +[ + { + "token": "admin_token", + "interviewId": "InterviewId-1", + "httpStatus": 200, + "responseBody": { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": null, + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-30", + "duration": 30, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 1, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Scheduling" + } + }, + { + "token": "m2m_token", + "interviewId": "InterviewId-2", + "httpStatus": 200, + "responseBody": { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": null, + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-30", + "duration": 30, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 1, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Scheduling" + } + }, + { + "token": "copilot_token", + "interviewId": "InterviewId-3", + "httpStatus": 200, + "responseBody": { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": null, + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-60", + "duration": 60, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 2, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Scheduling" + } + }, + { + "token": "user_token", + "interviewId": "InterviewId-4", + "httpStatus": 200, + "responseBody": { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": null, + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-30", + "duration": 30, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 3, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Completed" + } + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/get-interview-by-round-by-invalid-id.json b/test/postman/testData/interview/get-interview-by-round-by-invalid-id.json new file mode 100644 index 00000000..10544269 --- /dev/null +++ b/test/postman/testData/interview/get-interview-by-round-by-invalid-id.json @@ -0,0 +1,30 @@ +[ + { + "token": "m2m_token", + "jobCandidateId": "missing_id", + "interviewRound": 1, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"JobCandidate\" not found" + }, + { + "token": "m2m_token", + "jobCandidateId": "invalid_id", + "interviewRound": 1, + "httpStatus": 400, + "message": "\"jobCandidateId\" must be a valid GUID" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 2, + "httpStatus": 404, + "message": "Interview doesn't exist with round: 2" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 0, + "httpStatus": 400, + "message": "\"round\" must be a positive number" + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/get-interview-by-round-by-invalid-token.json b/test/postman/testData/interview/get-interview-by-round-by-invalid-token.json new file mode 100644 index 00000000..103088ed --- /dev/null +++ b/test/postman/testData/interview/get-interview-by-round-by-invalid-token.json @@ -0,0 +1,30 @@ +[ + { + "token": "invalid_token_1", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/get-interview-by-round-by-non-member-of-project.json b/test/postman/testData/interview/get-interview-by-round-by-non-member-of-project.json new file mode 100644 index 00000000..d7f8b2ca --- /dev/null +++ b/test/postman/testData/interview/get-interview-by-round-by-non-member-of-project.json @@ -0,0 +1,16 @@ +[ + { + "token": "user_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + { + "token": "copilot_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/get-interview-by-round-successfully-fromDb.json b/test/postman/testData/interview/get-interview-by-round-successfully-fromDb.json new file mode 100644 index 00000000..5f1f2b2b --- /dev/null +++ b/test/postman/testData/interview/get-interview-by-round-successfully-fromDb.json @@ -0,0 +1,146 @@ +[ + { + "token": "admin_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "httpStatus": 200, + "responseBody": { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": null, + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-30", + "duration": 30, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 1, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Scheduling" + } + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-2", + "interviewRound": 1, + "httpStatus": 200, + "responseBody": { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": null, + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-30", + "duration": 30, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 1, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Scheduling" + } + }, + { + "token": "copilot_token", + "jobCandidateId": "JobCandidateId-2", + "interviewRound": 2, + "httpStatus": 200, + "responseBody": { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": null, + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-60", + "duration": 60, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 2, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Scheduling" + } + }, + { + "token": "user_token", + "jobCandidateId": "JobCandidateId-2", + "interviewRound": 3, + "httpStatus": 200, + "responseBody": { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": null, + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-30", + "duration": 30, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 3, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Completed" + } + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/get-interview-by-round-successfully.json b/test/postman/testData/interview/get-interview-by-round-successfully.json new file mode 100644 index 00000000..5f1f2b2b --- /dev/null +++ b/test/postman/testData/interview/get-interview-by-round-successfully.json @@ -0,0 +1,146 @@ +[ + { + "token": "admin_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "httpStatus": 200, + "responseBody": { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": null, + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-30", + "duration": 30, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 1, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Scheduling" + } + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-2", + "interviewRound": 1, + "httpStatus": 200, + "responseBody": { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": null, + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-30", + "duration": 30, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 1, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Scheduling" + } + }, + { + "token": "copilot_token", + "jobCandidateId": "JobCandidateId-2", + "interviewRound": 2, + "httpStatus": 200, + "responseBody": { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": null, + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-60", + "duration": 60, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 2, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Scheduling" + } + }, + { + "token": "user_token", + "jobCandidateId": "JobCandidateId-2", + "interviewRound": 3, + "httpStatus": 200, + "responseBody": { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": null, + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-30", + "duration": 30, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 3, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Completed" + } + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/request-interview-by-invalid-field.json b/test/postman/testData/interview/request-interview-by-invalid-field.json new file mode 100644 index 00000000..958b322a --- /dev/null +++ b/test/postman/testData/interview/request-interview-by-invalid-field.json @@ -0,0 +1,70 @@ +[ + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "templateUrl": "interview", + "hostEmail": "POSTMANE2E-@yopmail.com" + }, + "httpStatus": 400, + "message": "\"interview.templateUrl\" must be one of \\[interview-30, interview-60\\]" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "templateUrl": "interview-30", + "hostEmail": "com" + }, + "httpStatus": 400, + "message": "\"interview.hostEmail\" must be a valid email" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "templateUrl": "interview-30", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestEmails": "POSTMANE2E-@yopmail.com" + }, + "httpStatus": 400, + "message": "\"interview.guestEmails\" must be an array" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "templateUrl": "interview-30", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestEmails": [ + "" + ] + }, + "httpStatus": 400, + "message": "\"interview.guestEmails\\[0\\]\" is not allowed to be empty" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "templateUrl": "interview-30", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestEmails": [ + "com" + ] + }, + "httpStatus": 400, + "message": "\"interview.guestEmails\\[0\\]\" must be a valid email" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "templateUrl": "interview-30", + "hostEmail": "POSTMANE2E-@yopmail.com", + "status": "ended" + }, + "httpStatus": 400, + "message": "\"interview.status\" must be one of \\[Scheduling, Scheduled, Requested for reschedule, Rescheduled, Completed, Cancelled\\]" + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/request-interview-by-invalid-token.json b/test/postman/testData/interview/request-interview-by-invalid-token.json new file mode 100644 index 00000000..83b17bfa --- /dev/null +++ b/test/postman/testData/interview/request-interview-by-invalid-token.json @@ -0,0 +1,42 @@ +[ + { + "token": "invalid_token_1", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "templateUrl": "interview-30", + "hostEmail": "POSTMANE2E-@yopmail.com" + }, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "templateUrl": "interview-30", + "hostEmail": "POSTMANE2E-@yopmail.com" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "templateUrl": "interview-30", + "hostEmail": "POSTMANE2E-@yopmail.com" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "templateUrl": "interview-30", + "hostEmail": "POSTMANE2E-@yopmail.com" + }, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/request-interview-by-missing-field.json b/test/postman/testData/interview/request-interview-by-missing-field.json new file mode 100644 index 00000000..d604164a --- /dev/null +++ b/test/postman/testData/interview/request-interview-by-missing-field.json @@ -0,0 +1,20 @@ +[ + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "templateUrl": "interview-30" + }, + "httpStatus": 400, + "message": "\"interview.hostEmail\" is required" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "hostEmail": "POSTMANE2E-@yopmail.com" + }, + "httpStatus": 400, + "message": "\"interview.templateUrl\" is required" + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/request-interview-by-non-member-of-project.json b/test/postman/testData/interview/request-interview-by-non-member-of-project.json new file mode 100644 index 00000000..6ef0d296 --- /dev/null +++ b/test/postman/testData/interview/request-interview-by-non-member-of-project.json @@ -0,0 +1,22 @@ +[ + { + "token": "user_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "templateUrl": "interview-30", + "hostEmail": "POSTMANE2E-@yopmail.com" + }, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + { + "token": "copilot_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "templateUrl": "interview-30", + "hostEmail": "POSTMANE2E-@yopmail.com" + }, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/request-interview-by-nonexistent-ids.json b/test/postman/testData/interview/request-interview-by-nonexistent-ids.json new file mode 100644 index 00000000..d5f7f4dd --- /dev/null +++ b/test/postman/testData/interview/request-interview-by-nonexistent-ids.json @@ -0,0 +1,12 @@ +[ + { + "token": "m2m_token", + "jobCandidateId": "missing_id", + "requestBody": { + "templateUrl": "interview-30", + "hostEmail": "POSTMANE2E-@yopmail.com" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"JobCandidate\" doesn't exists." + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/request-interview-exceeded.json b/test/postman/testData/interview/request-interview-exceeded.json new file mode 100644 index 00000000..5ad1b885 --- /dev/null +++ b/test/postman/testData/interview/request-interview-exceeded.json @@ -0,0 +1,12 @@ +[ + { + "token": "admin_token", + "jobCandidateId": "JobCandidateId-2", + "requestBody": { + "templateUrl": "interview-30", + "hostEmail": "POSTMANE2E-@yopmail.com" + }, + "httpStatus": 409, + "message": "You've reached the maximum allowed number \\(3\\) of interviews for this candidate." + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/request-interview-successfully.json b/test/postman/testData/interview/request-interview-successfully.json new file mode 100644 index 00000000..39901da3 --- /dev/null +++ b/test/postman/testData/interview/request-interview-successfully.json @@ -0,0 +1,183 @@ +[ + { + "token": "admin_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "calendarEventId": "someid", + "templateUrl": "interview-30", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestEmails": [ + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ] + }, + "httpStatus": 200, + "responseBody": { + "templateUrl": "interview-30", + "calendarEventId": "someid", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "status": "Scheduling", + "round": 1, + "duration": 30, + "createdBy": "00000000-0000-0000-0000-000000000000", + "hostName": "firstName lastName", + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "xaiId": null, + "templateId": null, + "templateType": null, + "title": null, + "locationDetails": null, + "startTimestamp": null, + "endTimestamp": null, + "rescheduleUrl": null, + "updatedBy": null, + "deletedAt": null + }, + "saveId": "InterviewId-1" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-2", + "requestBody": { + "calendarEventId": "someid", + "templateUrl": "interview-30", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestEmails": [ + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ] + }, + "httpStatus": 200, + "responseBody": { + "templateUrl": "interview-30", + "calendarEventId": "someid", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "status": "Scheduling", + "round": 1, + "duration": 30, + "createdBy": "00000000-0000-0000-0000-000000000000", + "hostName": "firstName lastName", + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "xaiId": null, + "templateId": null, + "templateType": null, + "title": null, + "locationDetails": null, + "startTimestamp": null, + "endTimestamp": null, + "rescheduleUrl": null, + "updatedBy": null, + "deletedAt": null + }, + "saveId": "InterviewId-2" + }, + { + "token": "copilot_token", + "jobCandidateId": "JobCandidateId-2", + "requestBody": { + "calendarEventId": "someid", + "templateUrl": "interview-60", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestEmails": [ + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ] + }, + "httpStatus": 200, + "responseBody": { + "templateUrl": "interview-60", + "calendarEventId": "someid", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "status": "Scheduling", + "round": 2, + "duration": 60, + "createdBy": "00000000-0000-0000-0000-000000000000", + "hostName": "firstName lastName", + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "xaiId": null, + "templateId": null, + "templateType": null, + "title": null, + "locationDetails": null, + "startTimestamp": null, + "endTimestamp": null, + "rescheduleUrl": null, + "updatedBy": null, + "deletedAt": null + }, + "saveId": "InterviewId-3" + }, + { + "token": "user_token", + "jobCandidateId": "JobCandidateId-2", + "requestBody": { + "calendarEventId": "someid", + "templateUrl": "interview-30", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestEmails": [ + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "status": "Completed" + }, + "httpStatus": 200, + "responseBody": { + "templateUrl": "interview-30", + "calendarEventId": "someid", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "status": "Completed", + "round": 3, + "duration": 30, + "createdBy": "00000000-0000-0000-0000-000000000000", + "hostName": "firstName lastName", + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "xaiId": null, + "templateId": null, + "templateType": null, + "title": null, + "locationDetails": null, + "startTimestamp": null, + "endTimestamp": null, + "rescheduleUrl": null, + "updatedBy": null, + "deletedAt": null + }, + "saveId": "InterviewId-4" + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/search-interviews-by-invalid-field.json b/test/postman/testData/interview/search-interviews-by-invalid-field.json new file mode 100644 index 00000000..04058c1a --- /dev/null +++ b/test/postman/testData/interview/search-interviews-by-invalid-field.json @@ -0,0 +1,50 @@ +[ + { + "token": "admin_token", + "jobCandidateId": "JobCandidateId-1", + "requestParameters": { + "page": 2, + "perPage": 1, + "sortBy": "round", + "createdAt": "today" + }, + "httpStatus": 400, + "message": "\"criteria.createdAt\" must be a valid date" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestParameters": { + "page": 2, + "perPage": 1, + "sortBy": "round", + "updatedAt": "yesterday" + }, + "httpStatus": 400, + "message": "\"criteria.updatedAt\" must be a valid date" + }, + { + "token": "copilot_token", + "jobCandidateId": "JobCandidateId-2", + "requestParameters": { + "page": 2, + "perPage": 1, + "sortBy": "createdAt", + "status": "ready" + }, + "httpStatus": 400, + "message": "\"criteria.status\" must be one of \\[Scheduling, Scheduled, Requested for reschedule, Rescheduled, Completed, Cancelled\\]" + }, + { + "token": "user_token", + "jobCandidateId": "invalid_id", + "requestParameters": { + "page": 2, + "perPage": 1, + "sortBy": "updatedAt", + "status": "Completed" + }, + "httpStatus": 400, + "message": "\"jobCandidateId\" must be a valid GUID" + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/search-interviews-by-invalid-token.json b/test/postman/testData/interview/search-interviews-by-invalid-token.json new file mode 100644 index 00000000..ec03e5cc --- /dev/null +++ b/test/postman/testData/interview/search-interviews-by-invalid-token.json @@ -0,0 +1,26 @@ +[ + { + "token": "invalid_token_1", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/search-interviews-by-non-member-of-project.json b/test/postman/testData/interview/search-interviews-by-non-member-of-project.json new file mode 100644 index 00000000..04adeef7 --- /dev/null +++ b/test/postman/testData/interview/search-interviews-by-non-member-of-project.json @@ -0,0 +1,14 @@ +[ + { + "token": "user_token", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + { + "token": "copilot_token", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/search-interviews-successfully.json b/test/postman/testData/interview/search-interviews-successfully.json new file mode 100644 index 00000000..7386e3d3 --- /dev/null +++ b/test/postman/testData/interview/search-interviews-successfully.json @@ -0,0 +1,57 @@ +[ + { + "token": "admin_token", + "jobCandidateId": "JobCandidateId-1", + "requestParameters": { + "page": 2, + "perPage": 1, + "sortBy": "round", + "createdAt": "2021-05-23" + }, + "httpStatus": 200 + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestParameters": { + "page": 2, + "perPage": 1, + "sortBy": "round", + "updatedAt": "2021-05-23" + }, + "httpStatus": 200 + }, + { + "token": "copilot_token", + "jobCandidateId": "JobCandidateId-2", + "requestParameters": { + "page": 2, + "perPage": 1, + "sortBy": "createdAt", + "status": "Scheduling" + }, + "httpStatus": 200 + }, + { + "token": "user_token", + "jobCandidateId": "JobCandidateId-2", + "requestParameters": { + "page": 2, + "perPage": 1, + "sortBy": "updatedAt", + "status": "Completed" + }, + "httpStatus": 200 + }, + { + "token": "manager_token", + "jobCandidateId": "JobCandidateId-1", + "requestParameters": { + "page": 2, + "perPage": 1, + "sortBy": "round", + "createdAt": "2021-05-23" + }, + "httpStatus": 200 + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/update-completed-interview-by-id.json b/test/postman/testData/interview/update-completed-interview-by-id.json new file mode 100644 index 00000000..cb119612 --- /dev/null +++ b/test/postman/testData/interview/update-completed-interview-by-id.json @@ -0,0 +1,11 @@ +[ + { + "token": "m2m_token", + "interviewId": "InterviewId-4", + "requestBody": { + "xaiId": "someid" + }, + "httpStatus": 400, + "message": "Only the \"status\" can be updated for Completed interviews." + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/update-completed-interview-by-round.json b/test/postman/testData/interview/update-completed-interview-by-round.json new file mode 100644 index 00000000..e84dd249 --- /dev/null +++ b/test/postman/testData/interview/update-completed-interview-by-round.json @@ -0,0 +1,12 @@ +[ + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-2", + "interviewRound": 3, + "requestBody": { + "xaiId": "someid" + }, + "httpStatus": 400, + "message": "Only the \"status\" can be updated for Completed interviews." + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/update-interview-by-id-by-invalid-field.json b/test/postman/testData/interview/update-interview-by-id-by-invalid-field.json new file mode 100644 index 00000000..b275b0d8 --- /dev/null +++ b/test/postman/testData/interview/update-interview-by-id-by-invalid-field.json @@ -0,0 +1,66 @@ +[ + { + "token": "m2m_token", + "interviewId": "InterviewId-1", + "requestBody": { + "xaiId": "someid", + "templateUrl": "interview" + }, + "httpStatus": 400, + "message": "\"data.templateUrl\" must be one of \\[interview-30, interview-60\\]" + }, + { + "token": "m2m_token", + "interviewId": "InterviewId-1", + "requestBody": { + "xaiId": "someid", + "startTimestamp": "1900-01-01" + }, + "httpStatus": 400, + "message": "\"data.startTimestamp\" must be greater than \"now\"" + }, + { + "token": "m2m_token", + "interviewId": "InterviewId-1", + "requestBody": { + "xaiId": "someid", + "guestEmails": "POSTMANE2E-@yopmail.com" + }, + "httpStatus": 400, + "message": "\"data.guestEmails\" must be an array" + }, + { + "token": "m2m_token", + "interviewId": "InterviewId-1", + "requestBody": { + "xaiId": "someid", + "guestEmails": [ + "" + ] + }, + "httpStatus": 400, + "message": "\"data.guestEmails\\[0\\]\" is not allowed to be empty" + }, + { + "token": "m2m_token", + "interviewId": "InterviewId-1", + "requestBody": { + "xaiId": "someid", + "guestEmails": [ + "com" + ] + }, + "httpStatus": 400, + "message": "\"data.guestEmails\\[0\\]\" must be a valid email" + }, + { + "token": "m2m_token", + "interviewId": "InterviewId-1", + "requestBody": { + "xaiId": "someid", + "status": "ended" + }, + "httpStatus": 400, + "message": "\"data.status\" must be one of \\[Scheduling, Scheduled, Requested for reschedule, Rescheduled, Completed, Cancelled\\]" + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/update-interview-by-id-by-invalid-token.json b/test/postman/testData/interview/update-interview-by-id-by-invalid-token.json new file mode 100644 index 00000000..b9f39bac --- /dev/null +++ b/test/postman/testData/interview/update-interview-by-id-by-invalid-token.json @@ -0,0 +1,38 @@ +[ + { + "token": "invalid_token_1", + "interviewId": "InterviewId-1", + "requestBody": { + "xaiId": "someid" + }, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "interviewId": "InterviewId-1", + "requestBody": { + "xaiId": "someid" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "interviewId": "InterviewId-1", + "requestBody": { + "xaiId": "someid" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "interviewId": "InterviewId-1", + "requestBody": { + "xaiId": "someid" + }, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/update-interview-by-id-by-missing-field.json b/test/postman/testData/interview/update-interview-by-id-by-missing-field.json new file mode 100644 index 00000000..7fa7aafa --- /dev/null +++ b/test/postman/testData/interview/update-interview-by-id-by-missing-field.json @@ -0,0 +1,42 @@ +[ + { + "token": "m2m_token", + "interviewId": "InterviewId-1", + "requestBody": {}, + "httpStatus": 400, + "message": "\"data.xaiId\" is required" + }, + { + "token": "m2m_token", + "interviewId": "InterviewId-1", + "requestBody": { + "xaiId": "someid", + "status": "Scheduled" + }, + "httpStatus": 400, + "message": "\"data.calendarEventId\" is required" + }, + { + "token": "m2m_token", + "interviewId": "InterviewId-1", + "requestBody": { + "xaiId": "someid", + "status": "Scheduled", + "calendarEventId": "someid" + }, + "httpStatus": 400, + "message": "\"data.startTimestamp\" is required" + }, + { + "token": "m2m_token", + "interviewId": "InterviewId-1", + "requestBody": { + "xaiId": "someid", + "status": "Scheduled", + "calendarEventId": "someid", + "startTimestamp": "3000-01-01" + }, + "httpStatus": 400, + "message": "\"data.endTimestamp\" is required" + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/update-interview-by-id-by-nonexistent-ids.json b/test/postman/testData/interview/update-interview-by-id-by-nonexistent-ids.json new file mode 100644 index 00000000..58abb35e --- /dev/null +++ b/test/postman/testData/interview/update-interview-by-id-by-nonexistent-ids.json @@ -0,0 +1,11 @@ +[ + { + "token": "m2m_token", + "interviewId": "missing_id", + "requestBody": { + "xaiId": "someid" + }, + "httpStatus": 404, + "message": "Interview doesn't exist with id/xaiId: [\\w\\W]+" + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/update-interview-by-id-successfully.json b/test/postman/testData/interview/update-interview-by-id-successfully.json new file mode 100644 index 00000000..d14e9dab --- /dev/null +++ b/test/postman/testData/interview/update-interview-by-id-successfully.json @@ -0,0 +1,178 @@ +[ + { + "token": "admin_token", + "interviewId": "InterviewId-1", + "requestBody": { + "xaiId": "someid", + "calendarEventId": "someid", + "templateUrl": "interview-30", + "templateId": "someid", + "templateType": "sometype", + "title": "test", + "locationDetails": "details" + }, + "httpStatus": 200, + "responseBody": { + "xaiId": "someid", + "calendarEventId": "someid", + "templateUrl": "interview-30", + "templateId": "someid", + "templateType": "sometype", + "title": "test", + "locationDetails": "details", + "duration": 30, + "round": 1, + "startTimestamp": null, + "endTimestamp": null, + "hostName": "firstName lastName", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "status": "Scheduling", + "rescheduleUrl": null, + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000", + "deletedAt": null + } + }, + { + "token": "m2m_token", + "interviewId": "InterviewId-2", + "requestBody": { + "xaiId": "someid", + "calendarEventId": "someid", + "templateUrl": "interview-30", + "templateId": "someid", + "templateType": "sometype", + "title": "test", + "locationDetails": "details" + }, + "httpStatus": 200, + "responseBody": { + "xaiId": "someid", + "calendarEventId": "someid", + "templateUrl": "interview-30", + "templateId": "someid", + "templateType": "sometype", + "title": "test", + "locationDetails": "details", + "duration": 30, + "round": 1, + "startTimestamp": null, + "endTimestamp": null, + "hostName": "firstName lastName", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "status": "Scheduling", + "rescheduleUrl": null, + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000", + "deletedAt": null + } + }, + { + "token": "copilot_token", + "interviewId": "InterviewId-3", + "requestBody": { + "xaiId": "someid", + "calendarEventId": "someid", + "templateUrl": "interview-30", + "templateId": "someid", + "templateType": "sometype", + "title": "test", + "locationDetails": "details" + }, + "httpStatus": 200, + "responseBody": { + "xaiId": "someid", + "calendarEventId": "someid", + "templateUrl": "interview-30", + "templateId": "someid", + "templateType": "sometype", + "title": "test", + "locationDetails": "details", + "duration": 60, + "round": 2, + "startTimestamp": null, + "endTimestamp": null, + "hostName": "firstName lastName", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "status": "Scheduling", + "rescheduleUrl": null, + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000", + "deletedAt": null + } + }, + { + "token": "user_token", + "interviewId": "InterviewId-3", + "requestBody": { + "xaiId": "someid2", + "calendarEventId": "someid2", + "templateUrl": "interview-30", + "templateId": "someid2", + "templateType": "sometype2", + "title": "test", + "locationDetails": "details" + }, + "httpStatus": 200, + "responseBody": { + "xaiId": "someid2", + "calendarEventId": "someid2", + "templateUrl": "interview-30", + "templateId": "someid2", + "templateType": "sometype2", + "title": "test", + "locationDetails": "details", + "duration": 60, + "round": 2, + "startTimestamp": null, + "endTimestamp": null, + "hostName": "firstName lastName", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "status": "Scheduling", + "rescheduleUrl": null, + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000", + "deletedAt": null + } + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/update-interview-by-round-by-invalid-field.json b/test/postman/testData/interview/update-interview-by-round-by-invalid-field.json new file mode 100644 index 00000000..df2c67ab --- /dev/null +++ b/test/postman/testData/interview/update-interview-by-round-by-invalid-field.json @@ -0,0 +1,72 @@ +[ + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "requestBody": { + "xaiId": "someid", + "templateUrl": "interview" + }, + "httpStatus": 400, + "message": "\"data.templateUrl\" must be one of \\[interview-30, interview-60\\]" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "requestBody": { + "xaiId": "someid", + "startTimestamp": "1900-01-01" + }, + "httpStatus": 400, + "message": "\"data.startTimestamp\" must be greater than \"now\"" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "requestBody": { + "xaiId": "someid", + "guestEmails": "POSTMANE2E-@yopmail.com" + }, + "httpStatus": 400, + "message": "\"data.guestEmails\" must be an array" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "requestBody": { + "xaiId": "someid", + "guestEmails": [ + "" + ] + }, + "httpStatus": 400, + "message": "\"data.guestEmails\\[0\\]\" is not allowed to be empty" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "requestBody": { + "xaiId": "someid", + "guestEmails": [ + "com" + ] + }, + "httpStatus": 400, + "message": "\"data.guestEmails\\[0\\]\" must be a valid email" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "requestBody": { + "xaiId": "someid", + "status": "ended" + }, + "httpStatus": 400, + "message": "\"data.status\" must be one of \\[Scheduling, Scheduled, Requested for reschedule, Rescheduled, Completed, Cancelled\\]" + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/update-interview-by-round-by-invalid-token.json b/test/postman/testData/interview/update-interview-by-round-by-invalid-token.json new file mode 100644 index 00000000..2246b9ac --- /dev/null +++ b/test/postman/testData/interview/update-interview-by-round-by-invalid-token.json @@ -0,0 +1,42 @@ +[ + { + "token": "invalid_token_1", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "requestBody": { + "xaiId": "someid" + }, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "requestBody": { + "xaiId": "someid" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "requestBody": { + "xaiId": "someid" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "requestBody": { + "xaiId": "someid" + }, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/update-interview-by-round-by-missing-field.json b/test/postman/testData/interview/update-interview-by-round-by-missing-field.json new file mode 100644 index 00000000..6f56f3c2 --- /dev/null +++ b/test/postman/testData/interview/update-interview-by-round-by-missing-field.json @@ -0,0 +1,43 @@ +[ + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "requestBody": {}, + "httpStatus": 400, + "message": "\"data\" must have at least 1 key" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "requestBody": { + "status": "Scheduled" + }, + "httpStatus": 400, + "message": "\"data.calendarEventId\" is required" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "requestBody": { + "status": "Scheduled", + "calendarEventId": "someid" + }, + "httpStatus": 400, + "message": "\"data.startTimestamp\" is required" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "requestBody": { + "status": "Scheduled", + "calendarEventId": "someid", + "startTimestamp": "3000-01-01" + }, + "httpStatus": 400, + "message": "\"data.endTimestamp\" is required" + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/update-interview-by-round-by-nonexistent-ids.json b/test/postman/testData/interview/update-interview-by-round-by-nonexistent-ids.json new file mode 100644 index 00000000..7bc24ca7 --- /dev/null +++ b/test/postman/testData/interview/update-interview-by-round-by-nonexistent-ids.json @@ -0,0 +1,32 @@ +[ + { + "token": "m2m_token", + "jobCandidateId": "invalid_id", + "interviewRound": 1, + "requestBody": { + "xaiId": "someid" + }, + "httpStatus": 400, + "message": "\"jobCandidateId\" must be a valid GUID" + }, + { + "token": "m2m_token", + "jobCandidateId": "missing_id", + "interviewRound": 1, + "requestBody": { + "xaiId": "someid" + }, + "httpStatus": 404, + "message": "Interview doesn't exist with jobCandidateId: [\\w\\W]+ and round: 1" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 2, + "requestBody": { + "xaiId": "someid" + }, + "httpStatus": 404, + "message": "Interview doesn't exist with jobCandidateId: [\\w\\W]+ and round: 2" + } +] \ No newline at end of file diff --git a/test/postman/testData/interview/update-interview-by-round-successfully.json b/test/postman/testData/interview/update-interview-by-round-successfully.json new file mode 100644 index 00000000..ab335b19 --- /dev/null +++ b/test/postman/testData/interview/update-interview-by-round-successfully.json @@ -0,0 +1,176 @@ +[ + { + "token": "admin_token", + "jobCandidateId": "JobCandidateId-1", + "interviewRound": 1, + "requestBody": { + "xaiId": "someid", + "calendarEventId": "someid", + "templateUrl": "interview-30", + "templateId": "someid", + "templateType": "sometype", + "title": "test", + "locationDetails": "details" + }, + "httpStatus": 200, + "responseBody": { + "xaiId": "someid", + "calendarEventId": "someid", + "templateUrl": "interview-30", + "templateId": "someid", + "templateType": "sometype", + "title": "test", + "locationDetails": "details", + "duration": 30, + "round": 1, + "startTimestamp": null, + "endTimestamp": null, + "hostName": "firstName lastName", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "status": "Scheduling", + "rescheduleUrl": null, + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000", + "deletedAt": null + } + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-2", + "interviewRound": 1, + "requestBody": { + "xaiId": "someid", + "calendarEventId": "someid", + "templateUrl": "interview-30", + "templateId": "someid", + "templateType": "sometype", + "title": "test", + "locationDetails": "details" + }, + "httpStatus": 200, + "responseBody": { + "xaiId": "someid", + "calendarEventId": "someid", + "templateUrl": "interview-30", + "templateId": "someid", + "templateType": "sometype", + "title": "test", + "locationDetails": "details", + "duration": 30, + "round": 1, + "startTimestamp": null, + "endTimestamp": null, + "hostName": "firstName lastName", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "status": "Scheduling", + "rescheduleUrl": null, + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000", + "deletedAt": null + } + }, + { + "token": "copilot_token", + "jobCandidateId": "JobCandidateId-2", + "interviewRound": 2, + "requestBody": { + "xaiId": "someid", + "calendarEventId": "someid", + "templateUrl": "interview-30", + "templateId": "someid", + "templateType": "sometype", + "title": "test", + "locationDetails": "details" + }, + "httpStatus": 200, + "responseBody": { + "xaiId": "someid", + "calendarEventId": "someid", + "templateUrl": "interview-30", + "templateId": "someid", + "templateType": "sometype", + "title": "test", + "locationDetails": "details", + "duration": 60, + "round": 2, + "startTimestamp": null, + "endTimestamp": null, + "hostName": "firstName lastName", + "hostEmail": "POSTMANE2E-@yopmail.com", + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "status": "Scheduling", + "rescheduleUrl": null, + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000", + "deletedAt": null + } + }, + { + "token": "user_token", + "jobCandidateId": "JobCandidateId-2", + "interviewRound": 3, + "requestBody": { + "status": "Scheduling" + }, + "httpStatus": 200, + "responseBody": { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": "00000000-0000-0000-0000-000000000000", + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-30", + "duration": 30, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 3, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Scheduling" + } + } +] \ No newline at end of file diff --git a/test/postman/testData/job/create-job-by-invalid-field.json b/test/postman/testData/job/create-job-by-invalid-field.json new file mode 100644 index 00000000..012abfce --- /dev/null +++ b/test/postman/testData/job/create-job-by-invalid-field.json @@ -0,0 +1,287 @@ +[ + { + "token": "admin_token", + "requestBody": { + "isApplicationPageActive": true, + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 403, + "message": "You are not allowed to set/update the value of field \"isApplicationPageActive\"." + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "00000000-0000-0000-0000-000000000000" + ] + }, + "httpStatus": 400, + "message": "Invalid skills: \\[00000000-0000-0000-0000-000000000000\\]" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": true, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"job.projectId\" must be a number" + }, + { + "token": "manager_token", + "requestBody": { + "projectId": 111, + "externalId": 1212, + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"job.externalId\" must be a string" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": 111, + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"job.title\" must be a string" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": 111, + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"job.description\" must be a string" + }, + { + "token": "manager_token", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "today", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"job.startDate\" must be in YYYY-MM-DD format" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": -1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"job.duration\" must be greater than or equal to 1" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": -13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"job.numPositions\" must be greater than or equal to 1" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": 111, + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"job.resourceType\" must be a string" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "year", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"job.rateType\" must be one of \\[hourly, daily, weekly, monthly, annual, null\\]" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "never", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"job.workload\" must be one of \\[full-time, fractional, null\\]" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92" + ] + }, + "httpStatus": 400, + "message": "\"job.skills\\[0\\]\" must be a valid GUID" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ], + "other": "other" + }, + "httpStatus": 400, + "message": "\"job.other\" is not allowed" + } +] \ No newline at end of file diff --git a/test/postman/testData/job/create-job-by-invalid-token.json b/test/postman/testData/job/create-job-by-invalid-token.json new file mode 100644 index 00000000..9f2ce7fc --- /dev/null +++ b/test/postman/testData/job/create-job-by-invalid-token.json @@ -0,0 +1,94 @@ +[ + { + "token": "invalid_token_1", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27T04:17:23.131Z", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27T04:17:23.131Z", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27T04:17:23.131Z", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27T04:17:23.131Z", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/job/create-job-by-missing-field.json b/test/postman/testData/job/create-job-by-missing-field.json new file mode 100644 index 00000000..b9c3f563 --- /dev/null +++ b/test/postman/testData/job/create-job-by-missing-field.json @@ -0,0 +1,76 @@ +[ + { + "token": "m2m_token", + "requestBody": { + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"job.projectId\" is required" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"job.title\" is required" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"job.numPositions\" is required" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time" + }, + "httpStatus": 400, + "message": "\"job.skills\" is required" + } +] \ No newline at end of file diff --git a/test/postman/testData/job/create-job-by-non-member-of-project.json b/test/postman/testData/job/create-job-by-non-member-of-project.json new file mode 100644 index 00000000..8bbd4517 --- /dev/null +++ b/test/postman/testData/job/create-job-by-non-member-of-project.json @@ -0,0 +1,48 @@ +[ + { + "token": "copilot_token", + "requestBody": { + "projectId": 222, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + { + "token": "user_token", + "requestBody": { + "projectId": 222, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + } +] \ No newline at end of file diff --git a/test/postman/testData/job/create-job-successfully.json b/test/postman/testData/job/create-job-successfully.json new file mode 100644 index 00000000..21ab135f --- /dev/null +++ b/test/postman/testData/job/create-job-successfully.json @@ -0,0 +1,287 @@ +[ + { + "token": "admin_token", + "requestBody": { + "projectId": 222, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 200, + "responseBody": { + "isApplicationPageActive": false, + "projectId": 222, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "sourcing", + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": "Open", + "rcrmReason": null, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "updatedBy": null + }, + "saveId": "JobId-1" + }, + { + "token": "copilot_token", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 200, + "responseBody": { + "isApplicationPageActive": false, + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "sourcing", + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": "Open", + "rcrmReason": null, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "updatedBy": null + }, + "saveId": "JobId-2" + }, + { + "token": "user_token", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 200, + "responseBody": { + "isApplicationPageActive": false, + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "sourcing", + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": "Open", + "rcrmReason": null, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "updatedBy": null + }, + "saveId": "JobId-3" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 222, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 200, + "responseBody": { + "isApplicationPageActive": false, + "projectId": 222, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "sourcing", + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": "Open", + "rcrmReason": null, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "updatedBy": null + }, + "saveId": "JobId-4" + }, + { + "token": "manager_token", + "requestBody": { + "projectId": 222, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 200, + "responseBody": { + "isApplicationPageActive": false, + "projectId": 222, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "sourcing", + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": "Open", + "rcrmReason": null, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "updatedBy": null + }, + "saveId": "JobId-5" + } +] \ No newline at end of file diff --git a/test/postman/testData/job/delete-job-by-invalid-id.json b/test/postman/testData/job/delete-job-by-invalid-id.json new file mode 100644 index 00000000..b58f201a --- /dev/null +++ b/test/postman/testData/job/delete-job-by-invalid-id.json @@ -0,0 +1,14 @@ +[ + { + "token": "m2m_token", + "jobId": "missing_id", + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"Job\" doesn't exists." + }, + { + "token": "m2m_token", + "jobId": "invalid_id", + "httpStatus": 400, + "message": "\"id\" must be a valid GUID" + } +] \ No newline at end of file diff --git a/test/postman/testData/job/delete-job-by-invalid-token.json b/test/postman/testData/job/delete-job-by-invalid-token.json new file mode 100644 index 00000000..271624d2 --- /dev/null +++ b/test/postman/testData/job/delete-job-by-invalid-token.json @@ -0,0 +1,26 @@ +[ + { + "token": "invalid_token_1", + "jobId": "JobId-1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "jobId": "JobId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "jobId": "JobId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "jobId": "JobId-1", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/job/delete-job-by-no-admin.json b/test/postman/testData/job/delete-job-by-no-admin.json new file mode 100644 index 00000000..765be944 --- /dev/null +++ b/test/postman/testData/job/delete-job-by-no-admin.json @@ -0,0 +1,14 @@ +[ + { + "token": "copilot_token", + "jobId": "JobId-1", + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + }, + { + "token": "user_token", + "jobId": "JobId-1", + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + } +] \ No newline at end of file diff --git a/test/postman/testData/job/delete-job-successfully.json b/test/postman/testData/job/delete-job-successfully.json new file mode 100644 index 00000000..bb94c8a6 --- /dev/null +++ b/test/postman/testData/job/delete-job-successfully.json @@ -0,0 +1,17 @@ +[ + { + "token": "admin_token", + "jobId": "JobId-3", + "httpStatus": 204 + }, + { + "token": "m2m_token", + "jobId": "JobId-4", + "httpStatus": 204 + }, + { + "token": "manager_token", + "jobId": "JobId-5", + "httpStatus": 204 + } +] \ No newline at end of file diff --git a/test/postman/testData/job/fully-update-job-by-invalid-field.json b/test/postman/testData/job/fully-update-job-by-invalid-field.json new file mode 100644 index 00000000..4c55c891 --- /dev/null +++ b/test/postman/testData/job/fully-update-job-by-invalid-field.json @@ -0,0 +1,301 @@ +[ + { + "token": "admin_token", + "jobId": "JobId-1", + "requestBody": { + "isApplicationPageActive": true, + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 403, + "message": "You are not allowed to set/update the value of field \"isApplicationPageActive\"." + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "00000000-0000-0000-0000-000000000000" + ] + }, + "httpStatus": 400, + "message": "Invalid skills: \\[00000000-0000-0000-0000-000000000000\\]" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": true, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"data.projectId\" must be a number" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": 111, + "externalId": 1212, + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"data.externalId\" must be a string" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": 111, + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"data.title\" must be a string" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": 111, + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"data.description\" must be a string" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "today", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"data.startDate\" must be in YYYY-MM-DD format" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": -1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"data.duration\" must be greater than or equal to 1" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": -13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"data.numPositions\" must be greater than or equal to 1" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": 111, + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"data.resourceType\" must be a string" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "year", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"data.rateType\" must be one of \\[hourly, daily, weekly, monthly, annual, null\\]" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "never", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"data.workload\" must be one of \\[full-time, fractional, null\\]" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92" + ] + }, + "httpStatus": 400, + "message": "\"data.skills\\[0\\]\" must be a valid GUID" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ], + "other": "other" + }, + "httpStatus": 400, + "message": "\"data.other\" is not allowed" + } +] \ No newline at end of file diff --git a/test/postman/testData/job/fully-update-job-by-invalid-id.json b/test/postman/testData/job/fully-update-job-by-invalid-id.json new file mode 100644 index 00000000..e0f5f730 --- /dev/null +++ b/test/postman/testData/job/fully-update-job-by-invalid-id.json @@ -0,0 +1,48 @@ +[ + { + "token": "m2m_token", + "jobId": "missing_id", + "requestBody": { + "projectId": 111, + "status": "in-review", + "externalId": "1212", + "title": "POSTMANE2E-Dummy title edit", + "description": "Dummy Description Edit", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"Job\" doesn't exists." + }, + { + "token": "m2m_token", + "jobId": "invalid_id", + "requestBody": { + "projectId": 111, + "status": "in-review", + "externalId": "1212", + "title": "POSTMANE2E-Dummy title edit", + "description": "Dummy Description Edit", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 400, + "message": "\"id\" must be a valid GUID" + } +] \ No newline at end of file diff --git a/test/postman/testData/job/fully-update-job-by-invalid-token.json b/test/postman/testData/job/fully-update-job-by-invalid-token.json new file mode 100644 index 00000000..9b5327b8 --- /dev/null +++ b/test/postman/testData/job/fully-update-job-by-invalid-token.json @@ -0,0 +1,30 @@ +[ + { + "token": "invalid_token_1", + "jobId": "JobId-1", + "requestBody": {}, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "jobId": "JobId-2", + "requestBody": {}, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "jobId": "JobId-3", + "requestBody": {}, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "jobId": "JobId-4", + "requestBody": {}, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/job/fully-update-job-by-missing-field.json b/test/postman/testData/job/fully-update-job-by-missing-field.json new file mode 100644 index 00000000..2aa875e3 --- /dev/null +++ b/test/postman/testData/job/fully-update-job-by-missing-field.json @@ -0,0 +1,80 @@ +[ + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27T04:17:23.131Z", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"data.projectId\" is required" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "description": "Dummy Description", + "startDate": "2020-09-27T04:17:23.131Z", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"data.title\" is required" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27T04:17:23.131Z", + "duration": 1, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941" + ] + }, + "httpStatus": 400, + "message": "\"data.startDate\" must be in YYYY-MM-DD format" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": 111, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27T04:17:23.131Z", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time" + }, + "httpStatus": 400, + "message": "\"data.startDate\" must be in YYYY-MM-DD format" + } +] \ No newline at end of file diff --git a/test/postman/testData/job/fully-update-job-successfully.json b/test/postman/testData/job/fully-update-job-successfully.json new file mode 100644 index 00000000..f8b2bb9a --- /dev/null +++ b/test/postman/testData/job/fully-update-job-successfully.json @@ -0,0 +1,273 @@ +[ + { + "token": "admin_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": 222, + "status": "in-review", + "externalId": "1212", + "title": "POSTMANE2E-Dummy title edit", + "description": "Dummy Description Edit", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "externalId": "1212", + "description": "Dummy Description Edit", + "title": "POSTMANE2E-Dummy title edit", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "in-review", + "isApplicationPageActive": false, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": null, + "rcrmReason": null, + "candidates": [] + } + }, + { + "token": "copilot_token", + "jobId": "JobId-2", + "requestBody": { + "projectId": 111, + "status": "in-review", + "externalId": "1212", + "title": "POSTMANE2E-Dummy title edit", + "description": "Dummy Description Edit", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "externalId": "1212", + "description": "Dummy Description Edit", + "title": "POSTMANE2E-Dummy title edit", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "in-review", + "isApplicationPageActive": false, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": null, + "rcrmReason": null, + "candidates": [] + } + }, + { + "token": "user_token", + "jobId": "JobId-3", + "requestBody": { + "projectId": 111, + "status": "in-review", + "externalId": "1212", + "title": "POSTMANE2E-Dummy title edit", + "description": "Dummy Description Edit", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "externalId": "1212", + "description": "Dummy Description Edit", + "title": "POSTMANE2E-Dummy title edit", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "in-review", + "isApplicationPageActive": false, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": null, + "rcrmReason": null, + "candidates": [] + } + }, + { + "token": "m2m_token", + "jobId": "JobId-4", + "requestBody": { + "projectId": 222, + "status": "in-review", + "externalId": "1212", + "title": "POSTMANE2E-Dummy title edit", + "description": "Dummy Description Edit", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "isApplicationPageActive": true + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "externalId": "1212", + "description": "Dummy Description Edit", + "title": "POSTMANE2E-Dummy title edit", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "in-review", + "isApplicationPageActive": true, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": null, + "rcrmReason": null, + "candidates": [] + } + }, + { + "token": "manager_token", + "jobId": "JobId-5", + "requestBody": { + "projectId": 222, + "status": "in-review", + "externalId": "1212", + "title": "POSTMANE2E-Dummy title edit", + "description": "Dummy Description Edit", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ] + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "externalId": "1212", + "description": "Dummy Description Edit", + "title": "POSTMANE2E-Dummy title edit", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "in-review", + "isApplicationPageActive": false, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": null, + "rcrmReason": null, + "candidates": [] + } + } +] \ No newline at end of file diff --git a/test/postman/testData/job/get-job-by-invalid-id.json b/test/postman/testData/job/get-job-by-invalid-id.json new file mode 100644 index 00000000..09d4c88a --- /dev/null +++ b/test/postman/testData/job/get-job-by-invalid-id.json @@ -0,0 +1,14 @@ +[ + { + "token": "m2m_token", + "jobId": "missing_id", + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"Job\" not found" + }, + { + "token": "m2m_token", + "jobId": "invalid_id", + "httpStatus": 400, + "message": "\"id\" must be a valid GUID" + } +] \ No newline at end of file diff --git a/test/postman/testData/job/get-job-by-invalid-token.json b/test/postman/testData/job/get-job-by-invalid-token.json new file mode 100644 index 00000000..271624d2 --- /dev/null +++ b/test/postman/testData/job/get-job-by-invalid-token.json @@ -0,0 +1,26 @@ +[ + { + "token": "invalid_token_1", + "jobId": "JobId-1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "jobId": "JobId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "jobId": "JobId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "jobId": "JobId-1", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/job/get-job-by-non-member-of-project.json b/test/postman/testData/job/get-job-by-non-member-of-project.json new file mode 100644 index 00000000..67c40434 --- /dev/null +++ b/test/postman/testData/job/get-job-by-non-member-of-project.json @@ -0,0 +1,14 @@ +[ + { + "token": "user_token", + "jobId": "JobId-4", + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + { + "token": "copilot_token", + "jobId": "JobId-4", + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + } +] \ No newline at end of file diff --git a/test/postman/testData/job/get-job-successfully-fromDb.json b/test/postman/testData/job/get-job-successfully-fromDb.json new file mode 100644 index 00000000..36e7f596 --- /dev/null +++ b/test/postman/testData/job/get-job-successfully-fromDb.json @@ -0,0 +1,197 @@ +[ + { + "token": "admin_token", + "jobId": "JobId-1", + "httpStatus": 200, + "responseBody": { + "isApplicationPageActive": false, + "projectId": 222, + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "sourcing", + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": "Open", + "rcrmReason": null, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "updatedBy": "00000000-0000-0000-0000-000000000000", + "candidates": [] + } + }, + { + "token": "copilot_token", + "jobId": "JobId-2", + "httpStatus": 200, + "responseBody": { + "isApplicationPageActive": false, + "projectId": 111, + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "sourcing", + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": "Open", + "rcrmReason": null, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "updatedBy": "00000000-0000-0000-0000-000000000000", + "candidates": [] + } + }, + { + "token": "user_token", + "jobId": "JobId-3", + "httpStatus": 200, + "responseBody": { + "isApplicationPageActive": false, + "projectId": 111, + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "sourcing", + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": "Open", + "rcrmReason": null, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "updatedBy": "00000000-0000-0000-0000-000000000000", + "candidates": [] + } + }, + { + "token": "m2m_token", + "jobId": "JobId-4", + "httpStatus": 200, + "responseBody": { + "isApplicationPageActive": false, + "projectId": 222, + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "sourcing", + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": "Open", + "rcrmReason": null, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "updatedBy": "00000000-0000-0000-0000-000000000000", + "candidates": [] + } + }, + { + "token": "manager_token", + "jobId": "JobId-5", + "httpStatus": 200, + "responseBody": { + "isApplicationPageActive": false, + "projectId": 222, + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "sourcing", + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": "Open", + "rcrmReason": null, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "updatedBy": "00000000-0000-0000-0000-000000000000", + "candidates": [] + } + } +] \ No newline at end of file diff --git a/test/postman/testData/job/get-job-successfully.json b/test/postman/testData/job/get-job-successfully.json new file mode 100644 index 00000000..84e70aeb --- /dev/null +++ b/test/postman/testData/job/get-job-successfully.json @@ -0,0 +1,192 @@ +[ + { + "token": "admin_token", + "jobId": "JobId-1", + "httpStatus": 200, + "responseBody": { + "isApplicationPageActive": false, + "projectId": 222, + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "sourcing", + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": "Open", + "rcrmReason": null, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "copilot_token", + "jobId": "JobId-2", + "httpStatus": 200, + "responseBody": { + "isApplicationPageActive": false, + "projectId": 111, + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "sourcing", + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": "Open", + "rcrmReason": null, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "user_token", + "jobId": "JobId-3", + "httpStatus": 200, + "responseBody": { + "isApplicationPageActive": false, + "projectId": 111, + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "sourcing", + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": "Open", + "rcrmReason": null, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "m2m_token", + "jobId": "JobId-4", + "httpStatus": 200, + "responseBody": { + "isApplicationPageActive": false, + "projectId": 222, + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "sourcing", + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": "Open", + "rcrmReason": null, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "manager_token", + "jobId": "JobId-5", + "httpStatus": 200, + "responseBody": { + "isApplicationPageActive": false, + "projectId": 222, + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "sourcing", + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": "Open", + "rcrmReason": null, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + } +] \ No newline at end of file diff --git a/test/postman/testData/job/partially-update-job-by-invalid-field.json b/test/postman/testData/job/partially-update-job-by-invalid-field.json new file mode 100644 index 00000000..6b0eb739 --- /dev/null +++ b/test/postman/testData/job/partially-update-job-by-invalid-field.json @@ -0,0 +1,132 @@ +[ + { + "token": "admin_token", + "jobId": "JobId-1", + "requestBody": { + "isApplicationPageActive": true + }, + "httpStatus": 403, + "message": "You are not allowed to set/update the value of field \"isApplicationPageActive\"." + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "skills": [ + "00000000-0000-0000-0000-000000000000" + ] + }, + "httpStatus": 400, + "message": "Invalid skills: \\[00000000-0000-0000-0000-000000000000\\]" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "projectId": 111 + }, + "httpStatus": 400, + "message": "\"data.projectId\" is not allowed" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "externalId": 1212 + }, + "httpStatus": 400, + "message": "\"data.externalId\" must be a string" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "title": 111 + }, + "httpStatus": 400, + "message": "\"data.title\" must be a string" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "description": 111 + }, + "httpStatus": 400, + "message": "\"data.description\" must be a string" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "startDate": "today" + }, + "httpStatus": 400, + "message": "\"data.startDate\" must be in YYYY-MM-DD format" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "duration": -1 + }, + "httpStatus": 400, + "message": "\"data.duration\" must be greater than or equal to 1" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "numPositions": -13 + }, + "httpStatus": 400, + "message": "\"data.numPositions\" must be greater than or equal to 1" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "resourceType": 111 + }, + "httpStatus": 400, + "message": "\"data.resourceType\" must be a string" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "rateType": "year" + }, + "httpStatus": 400, + "message": "\"data.rateType\" must be one of \\[hourly, daily, weekly, monthly, annual, null\\]" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "workload": "never" + }, + "httpStatus": 400, + "message": "\"data.workload\" must be one of \\[full-time, fractional, null\\]" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "skills": [ + "23e00d92" + ] + }, + "httpStatus": 400, + "message": "\"data.skills\\[0\\]\" must be a valid GUID" + }, + { + "token": "m2m_token", + "jobId": "JobId-1", + "requestBody": { + "other": "other" + }, + "httpStatus": 400, + "message": "\"data.other\" is not allowed" + } +] \ No newline at end of file diff --git a/test/postman/testData/job/partially-update-job-by-invalid-id.json b/test/postman/testData/job/partially-update-job-by-invalid-id.json new file mode 100644 index 00000000..d0526276 --- /dev/null +++ b/test/postman/testData/job/partially-update-job-by-invalid-id.json @@ -0,0 +1,20 @@ +[ + { + "token": "m2m_token", + "jobId": "missing_id", + "requestBody": { + "status": "in-review" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"Job\" doesn't exists." + }, + { + "token": "m2m_token", + "jobId": "invalid_id", + "requestBody": { + "status": "in-review" + }, + "httpStatus": 400, + "message": "\"id\" must be a valid GUID" + } +] \ No newline at end of file diff --git a/test/postman/testData/job/partially-update-job-by-invalid-token.json b/test/postman/testData/job/partially-update-job-by-invalid-token.json new file mode 100644 index 00000000..9b5327b8 --- /dev/null +++ b/test/postman/testData/job/partially-update-job-by-invalid-token.json @@ -0,0 +1,30 @@ +[ + { + "token": "invalid_token_1", + "jobId": "JobId-1", + "requestBody": {}, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "jobId": "JobId-2", + "requestBody": {}, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "jobId": "JobId-3", + "requestBody": {}, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "jobId": "JobId-4", + "requestBody": {}, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/job/partially-update-job-successfully.json b/test/postman/testData/job/partially-update-job-successfully.json new file mode 100644 index 00000000..d18f4657 --- /dev/null +++ b/test/postman/testData/job/partially-update-job-successfully.json @@ -0,0 +1,203 @@ +[ + { + "token": "admin_token", + "jobId": "JobId-1", + "requestBody": { + "numPositions": 12 + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "externalId": "1212", + "description": "Dummy Description Edit", + "title": "POSTMANE2E-Dummy title edit", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 12, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "in-review", + "isApplicationPageActive": false, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": null, + "rcrmReason": null, + "candidates": [] + } + }, + { + "token": "copilot_token", + "jobId": "JobId-2", + "requestBody": { + "rateType": "weekly" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "externalId": "1212", + "description": "Dummy Description Edit", + "title": "POSTMANE2E-Dummy title edit", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "weekly", + "workload": "full-time", + "skills": [ + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "in-review", + "isApplicationPageActive": false, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": null, + "rcrmReason": null, + "candidates": [] + } + }, + { + "token": "user_token", + "jobId": "JobId-3", + "requestBody": { + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "externalId": "1212", + "description": "Dummy Description", + "title": "POSTMANE2E-Dummy title", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "in-review", + "isApplicationPageActive": false, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": null, + "rcrmReason": null, + "candidates": [] + } + }, + { + "token": "m2m_token", + "jobId": "JobId-4", + "requestBody": { + "workload": "fractional" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "externalId": "1212", + "description": "Dummy Description Edit", + "title": "POSTMANE2E-Dummy title edit", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "fractional", + "skills": [ + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "in-review", + "isApplicationPageActive": true, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": null, + "rcrmReason": null, + "candidates": [] + } + }, + { + "token": "manager_token", + "jobId": "JobId-5", + "requestBody": { + "numPositions": 12 + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "externalId": "1212", + "description": "Dummy Description Edit", + "title": "POSTMANE2E-Dummy title edit", + "startDate": "2020-09-27", + "duration": 1, + "numPositions": 12, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "in-review", + "isApplicationPageActive": false, + "minSalary": null, + "maxSalary": null, + "hoursPerWeek": null, + "jobLocation": null, + "jobTimezone": null, + "currency": null, + "roleIds": null, + "showInHotList": false, + "featured": false, + "hotListExcerpt": "", + "jobTag": "", + "rcrmStatus": null, + "rcrmReason": null, + "candidates": [] + } + } +] \ No newline at end of file diff --git a/test/postman/testData/job/search-jobs-by-invalid-field.json b/test/postman/testData/job/search-jobs-by-invalid-field.json new file mode 100644 index 00000000..c0cf6b5b --- /dev/null +++ b/test/postman/testData/job/search-jobs-by-invalid-field.json @@ -0,0 +1,100 @@ +[ + { + "token": "m2m_token", + "requestParameters": { + "page": 2, + "perPage": 1, + "sortBy": "title" + }, + "httpStatus": 400, + "message": "\"criteria.sortBy\" must be one of \\[id, createdAt, updatedAt, startDate, rateType, status\\]" + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "createdAt", + "projectId": true + }, + "httpStatus": 400, + "message": "\"criteria.projectId\" must be a number" + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "startDate", + "startDate": "tomorrow" + }, + "httpStatus": 400, + "message": "\"criteria.startDate\" must be in YYYY-MM-DD format" + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "startDate", + "skill": "cbac57a" + }, + "httpStatus": 400, + "message": "\"criteria.skill\" must be a valid GUID" + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "startDate", + "rateType": "whatever" + }, + "httpStatus": 400, + "message": "\"criteria.rateType\" must be one of \\[hourly, daily, weekly, monthly, annual\\]" + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "startDate", + "workload": "forever" + }, + "httpStatus": 400, + "message": "\"criteria.workload\" must be one of \\[full-time, fractional\\]" + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "startDate", + "status": "good" + }, + "httpStatus": 400, + "message": "\"criteria.status\" must be one of \\[sourcing, in-review, assigned, closed, cancelled\\]" + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "startDate", + "projectIds": "123,123" + }, + "httpStatus": 400, + "message": "\"criteria.projectIds\" must be a number" + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "startDate", + "other": "other" + }, + "httpStatus": 400, + "message": "\"criteria.other\" is not allowed" + } +] \ No newline at end of file diff --git a/test/postman/testData/job/search-jobs-by-invalid-token.json b/test/postman/testData/job/search-jobs-by-invalid-token.json new file mode 100644 index 00000000..b7b1a28e --- /dev/null +++ b/test/postman/testData/job/search-jobs-by-invalid-token.json @@ -0,0 +1,22 @@ +[ + { + "token": "invalid_token_1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/job/search-jobs-by-non-member-of-project.json b/test/postman/testData/job/search-jobs-by-non-member-of-project.json new file mode 100644 index 00000000..acc5c304 --- /dev/null +++ b/test/postman/testData/job/search-jobs-by-non-member-of-project.json @@ -0,0 +1,44 @@ +[ + { + "token": "user_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "startDate", + "projectId": 222 + }, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + { + "token": "user_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "startDate" + }, + "httpStatus": 403, + "message": "Not allowed without filtering by \"projectId\"" + }, + { + "token": "copilot_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "startDate", + "projectId": 222 + }, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + { + "token": "copilot_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "startDate" + }, + "httpStatus": 403, + "message": "Not allowed without filtering by \"projectId\"" + } +] \ No newline at end of file diff --git a/test/postman/testData/job/search-jobs-successfully.json b/test/postman/testData/job/search-jobs-successfully.json new file mode 100644 index 00000000..ad1819b4 --- /dev/null +++ b/test/postman/testData/job/search-jobs-successfully.json @@ -0,0 +1,91 @@ +[ + { + "token": "m2m_token", + "requestParameters": { + "page": 2, + "perPage": 1, + "sortBy": "id" + }, + "httpStatus": 200 + }, + { + "token": "user_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "createdAt", + "projectId": 111 + }, + "httpStatus": 200 + }, + { + "token": "manager_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "createdAt", + "title": "POSTMANE2E" + }, + "httpStatus": 200 + }, + { + "token": "admin_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "startDate", + "startDate": "2020-09-27" + }, + "httpStatus": 200 + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "startDate", + "resourceType": "Resource" + }, + "httpStatus": 200 + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "startDate", + "skill": "cbac57a3-7180-4316-8769-73af64893158" + }, + "httpStatus": 200 + }, + { + "token": "admin_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "startDate", + "rateType": "hourly" + }, + "httpStatus": 200 + }, + { + "token": "manager_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "startDate", + "workload": "full-time" + }, + "httpStatus": 200 + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "startDate", + "status": "sourcing" + }, + "httpStatus": 200 + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/create-jobCandidate-by-invalid-field.json b/test/postman/testData/jobCandidate/create-jobCandidate-by-invalid-field.json new file mode 100644 index 00000000..f432ace6 --- /dev/null +++ b/test/postman/testData/jobCandidate/create-jobCandidate-by-invalid-field.json @@ -0,0 +1,70 @@ +[ + { + "token": "m2m_token", + "requestBody": { + "jobId": "{{invalid_id}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 400, + "message": "\"jobCandidate.jobId\" must be a valid GUID" + }, + { + "token": "m2m_token", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "{{invalid_id}}", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 400, + "message": "\"jobCandidate.userId\" must be a valid GUID" + }, + { + "token": "m2m_token", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": [], + "resume": "http://example.com/" + }, + "httpStatus": 400, + "message": "\"jobCandidate.externalId\" must be a string" + }, + { + "token": "m2m_token", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": "300234321", + "resume": "url" + }, + "httpStatus": 400, + "message": "\"jobCandidate.resume\" must be a valid uri" + }, + { + "token": "m2m_token", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": "300234321", + "resume": "http://example.com/", + "other": "other" + }, + "httpStatus": 400, + "message": "\"jobCandidate.other\" is not allowed" + }, + { + "token": "m2m_token", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": "300234321", + "resume": "http://example.com/", + "status": "other" + }, + "httpStatus": 400, + "message": "\"jobCandidate.status\" must be one of \\[open, placed, selected, client rejected - screening, client rejected - interview, rejected - other, cancelled, interview, topcoder-rejected, applied, rejected-pre-screen, skills-test, phone-screen, job-closed, offered, withdrawn, withdrawn-prescreen\\]" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/create-jobCandidate-by-invalid-token.json b/test/postman/testData/jobCandidate/create-jobCandidate-by-invalid-token.json new file mode 100644 index 00000000..f3b36e36 --- /dev/null +++ b/test/postman/testData/jobCandidate/create-jobCandidate-by-invalid-token.json @@ -0,0 +1,46 @@ +[ + { + "token": "invalid_token_1", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/create-jobCandidate-by-missing-field.json b/test/postman/testData/jobCandidate/create-jobCandidate-by-missing-field.json new file mode 100644 index 00000000..03b7c548 --- /dev/null +++ b/test/postman/testData/jobCandidate/create-jobCandidate-by-missing-field.json @@ -0,0 +1,22 @@ +[ + { + "token": "m2m_token", + "requestBody": { + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 400, + "message": "\"jobCandidate.jobId\" is required" + }, + { + "token": "m2m_token", + "requestBody": { + "jobId": "{{JobId-1}}", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 400, + "message": "\"jobCandidate.userId\" is required" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/create-jobCandidate-by-no-admin.json b/test/postman/testData/jobCandidate/create-jobCandidate-by-no-admin.json new file mode 100644 index 00000000..26119cee --- /dev/null +++ b/test/postman/testData/jobCandidate/create-jobCandidate-by-no-admin.json @@ -0,0 +1,24 @@ +[ + { + "token": "copilot_token", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + }, + { + "token": "user_token", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/create-jobCandidate-by-nonexistent-ids.json b/test/postman/testData/jobCandidate/create-jobCandidate-by-nonexistent-ids.json new file mode 100644 index 00000000..cff8d7ee --- /dev/null +++ b/test/postman/testData/jobCandidate/create-jobCandidate-by-nonexistent-ids.json @@ -0,0 +1,24 @@ +[ + { + "token": "m2m_token", + "requestBody": { + "jobId": "{{missing_id}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"Job\" doesn't exists." + }, + { + "token": "m2m_token", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "{{missing_id}}", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"user\" not found" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/create-jobCandidate-successfully.json b/test/postman/testData/jobCandidate/create-jobCandidate-successfully.json new file mode 100644 index 00000000..24165fe2 --- /dev/null +++ b/test/postman/testData/jobCandidate/create-jobCandidate-successfully.json @@ -0,0 +1,102 @@ +[ + { + "token": "admin_token", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 200, + "responseBody": { + "viewedByCustomer": false, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234321", + "resume": "http://example.com/", + "status": "open", + "remark": null, + "updatedBy": null + }, + "saveId": "JobCandidateId-1" + }, + { + "token": "m2m_token", + "requestBody": { + "jobId": "{{JobId-2}}", + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234322", + "resume": "http://example.com/" + }, + "httpStatus": 200, + "responseBody": { + "viewedByCustomer": false, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234322", + "resume": "http://example.com/", + "status": "open", + "remark": null, + "updatedBy": null + }, + "saveId": "JobCandidateId-2" + }, + { + "token": "admin_token", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234323", + "resume": "http://example.com/" + }, + "httpStatus": 200, + "responseBody": { + "viewedByCustomer": false, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234323", + "resume": "http://example.com/", + "status": "open", + "remark": null, + "updatedBy": null + }, + "saveId": "JobCandidateId-3" + }, + { + "token": "m2m_token", + "requestBody": { + "jobId": "{{JobId-2}}", + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234324", + "resume": "http://example.com/" + }, + "httpStatus": 200, + "responseBody": { + "viewedByCustomer": false, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234324", + "resume": "http://example.com/", + "status": "open", + "remark": null, + "updatedBy": null + }, + "saveId": "JobCandidateId-4" + }, + { + "token": "manager_token", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 200, + "responseBody": { + "viewedByCustomer": false, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234321", + "resume": "http://example.com/", + "status": "open", + "remark": null, + "updatedBy": null + }, + "saveId": "JobCandidateId-5" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/delete-jobCandidate-by-invalid-id.json b/test/postman/testData/jobCandidate/delete-jobCandidate-by-invalid-id.json new file mode 100644 index 00000000..a21a0b92 --- /dev/null +++ b/test/postman/testData/jobCandidate/delete-jobCandidate-by-invalid-id.json @@ -0,0 +1,14 @@ +[ + { + "token": "m2m_token", + "jobCandidateId": "missing_id", + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"JobCandidate\" doesn't exists." + }, + { + "token": "m2m_token", + "jobCandidateId": "invalid_id", + "httpStatus": 400, + "message": "\"id\" must be a valid GUID" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/delete-jobCandidate-by-invalid-token.json b/test/postman/testData/jobCandidate/delete-jobCandidate-by-invalid-token.json new file mode 100644 index 00000000..ec03e5cc --- /dev/null +++ b/test/postman/testData/jobCandidate/delete-jobCandidate-by-invalid-token.json @@ -0,0 +1,26 @@ +[ + { + "token": "invalid_token_1", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/delete-jobCandidate-by-no-admin.json b/test/postman/testData/jobCandidate/delete-jobCandidate-by-no-admin.json new file mode 100644 index 00000000..18234d6e --- /dev/null +++ b/test/postman/testData/jobCandidate/delete-jobCandidate-by-no-admin.json @@ -0,0 +1,14 @@ +[ + { + "token": "copilot_token", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + }, + { + "token": "user_token", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/delete-jobCandidate-successfully.json b/test/postman/testData/jobCandidate/delete-jobCandidate-successfully.json new file mode 100644 index 00000000..2d6a7d0b --- /dev/null +++ b/test/postman/testData/jobCandidate/delete-jobCandidate-successfully.json @@ -0,0 +1,17 @@ +[ + { + "token": "admin_token", + "jobCandidateId": "JobCandidateId-3", + "httpStatus": 204 + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-4", + "httpStatus": 204 + }, + { + "token": "manager_token", + "jobCandidateId": "JobCandidateId-5", + "httpStatus": 204 + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/fully-update-jobCandidate-by-invalid-field.json b/test/postman/testData/jobCandidate/fully-update-jobCandidate-by-invalid-field.json new file mode 100644 index 00000000..ecf5f1d5 --- /dev/null +++ b/test/postman/testData/jobCandidate/fully-update-jobCandidate-by-invalid-field.json @@ -0,0 +1,76 @@ +[ + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "jobId": "{{invalid_id}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 400, + "message": "\"data.jobId\" must be a valid GUID" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "{{invalid_id}}", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 400, + "message": "\"data.userId\" must be a valid GUID" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": [], + "resume": "http://example.com/" + }, + "httpStatus": 400, + "message": "\"data.externalId\" must be a string" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": "300234321", + "resume": "url" + }, + "httpStatus": 400, + "message": "\"data.resume\" must be a valid uri" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": "300234321", + "resume": "http://example.com/", + "other": "other" + }, + "httpStatus": 400, + "message": "\"data.other\" is not allowed" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": "300234321", + "resume": "http://example.com/", + "status": "other" + }, + "httpStatus": 400, + "message": "\"data.status\" must be one of \\[open, placed, selected, client rejected - screening, client rejected - interview, rejected - other, cancelled, interview, topcoder-rejected, applied, rejected-pre-screen, skills-test, phone-screen, job-closed, offered, withdrawn, withdrawn-prescreen\\]" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/fully-update-jobCandidate-by-invalid-id.json b/test/postman/testData/jobCandidate/fully-update-jobCandidate-by-invalid-id.json new file mode 100644 index 00000000..598e8ae8 --- /dev/null +++ b/test/postman/testData/jobCandidate/fully-update-jobCandidate-by-invalid-id.json @@ -0,0 +1,50 @@ +[ + { + "token": "m2m_token", + "jobCandidateId": "missing_id", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234321", + "resume": "http://example2.com/" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"JobCandidate\" doesn't exists." + }, + { + "token": "m2m_token", + "jobCandidateId": "invalid_id", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "externalId": "300234321", + "resume": "http://example2.com/" + }, + "httpStatus": 400, + "message": "\"id\" must be a valid GUID" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-2", + "requestBody": { + "jobId": "{{missing_id}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "externalId": "300234321", + "resume": "http://example2.com/" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"Job\" doesn't exists." + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-2", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "{{missing_id}}", + "externalId": "300234321", + "resume": "http://example2.com/" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"user\" not found" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/fully-update-jobCandidate-by-invalid-token.json b/test/postman/testData/jobCandidate/fully-update-jobCandidate-by-invalid-token.json new file mode 100644 index 00000000..961f9738 --- /dev/null +++ b/test/postman/testData/jobCandidate/fully-update-jobCandidate-by-invalid-token.json @@ -0,0 +1,30 @@ +[ + { + "token": "invalid_token_1", + "jobCandidateId": "JobCandidateId-1", + "requestBody": {}, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "jobCandidateId": "JobCandidateId-2", + "requestBody": {}, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "jobCandidateId": "JobCandidateId-3", + "requestBody": {}, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "jobCandidateId": "JobCandidateId-4", + "requestBody": {}, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/fully-update-jobCandidate-by-missing-field.json b/test/postman/testData/jobCandidate/fully-update-jobCandidate-by-missing-field.json new file mode 100644 index 00000000..01ae0519 --- /dev/null +++ b/test/postman/testData/jobCandidate/fully-update-jobCandidate-by-missing-field.json @@ -0,0 +1,24 @@ +[ + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 400, + "message": "\"data.jobId\" is required" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "jobId": "{{JobId-1}}", + "externalId": "300234321", + "resume": "http://example.com/" + }, + "httpStatus": 400, + "message": "\"data.userId\" is required" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/fully-update-jobCandidate-by-non-member-of-project.json b/test/postman/testData/jobCandidate/fully-update-jobCandidate-by-non-member-of-project.json new file mode 100644 index 00000000..6bad4875 --- /dev/null +++ b/test/postman/testData/jobCandidate/fully-update-jobCandidate-by-non-member-of-project.json @@ -0,0 +1,26 @@ +[ + { + "token": "copilot_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234321", + "resume": "http://example2.com/" + }, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + { + "token": "user_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234321", + "resume": "http://example2.com/" + }, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/fully-update-jobCandidate-successfully.json b/test/postman/testData/jobCandidate/fully-update-jobCandidate-successfully.json new file mode 100644 index 00000000..114ebaa7 --- /dev/null +++ b/test/postman/testData/jobCandidate/fully-update-jobCandidate-successfully.json @@ -0,0 +1,97 @@ +[ + { + "token": "admin_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234321", + "resume": "http://example2.com/" + }, + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "viewedByCustomer":false, + "externalId": "300234321", + "resume": "http://example2.com/", + "status": "open", + "remark": null + } + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234321", + "resume": "http://example2.com/" + }, + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "viewedByCustomer":false, + "externalId": "300234321", + "resume": "http://example2.com/", + "status": "open", + "remark": null + } + }, + { + "token": "copilot_token", + "jobCandidateId": "JobCandidateId-2", + "requestBody": { + "jobId": "{{JobId-2}}", + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234322", + "resume": "http://example2.com/" + }, + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "viewedByCustomer":false, + "externalId": "300234322", + "resume": "http://example2.com/", + "status": "open", + "remark": null + } + }, + { + "token": "user_token", + "jobCandidateId": "JobCandidateId-2", + "requestBody": { + "jobId": "{{JobId-2}}", + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234322", + "resume": "http://example2.com/" + }, + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "viewedByCustomer":false, + "externalId": "300234322", + "resume": "http://example2.com/", + "status": "open", + "remark": null + } + }, + { + "token": "manager_token", + "jobCandidateId": "JobCandidateId-5", + "requestBody": { + "jobId": "{{JobId-1}}", + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234321", + "resume": "http://example2.com/" + }, + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "viewedByCustomer":false, + "externalId": "300234321", + "resume": "http://example2.com/", + "status": "open", + "remark": null + } + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/get-jobCandidate-by-invalid-id.json b/test/postman/testData/jobCandidate/get-jobCandidate-by-invalid-id.json new file mode 100644 index 00000000..6eed8dca --- /dev/null +++ b/test/postman/testData/jobCandidate/get-jobCandidate-by-invalid-id.json @@ -0,0 +1,14 @@ +[ + { + "token": "m2m_token", + "jobCandidateId": "missing_id", + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"JobCandidate\" not found" + }, + { + "token": "m2m_token", + "jobCandidateId": "invalid_id", + "httpStatus": 400, + "message": "\"id\" must be a valid GUID" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/get-jobCandidate-by-invalid-token.json b/test/postman/testData/jobCandidate/get-jobCandidate-by-invalid-token.json new file mode 100644 index 00000000..ec03e5cc --- /dev/null +++ b/test/postman/testData/jobCandidate/get-jobCandidate-by-invalid-token.json @@ -0,0 +1,26 @@ +[ + { + "token": "invalid_token_1", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/get-jobCandidate-by-non-member-of-project.json b/test/postman/testData/jobCandidate/get-jobCandidate-by-non-member-of-project.json new file mode 100644 index 00000000..04adeef7 --- /dev/null +++ b/test/postman/testData/jobCandidate/get-jobCandidate-by-non-member-of-project.json @@ -0,0 +1,14 @@ +[ + { + "token": "user_token", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + { + "token": "copilot_token", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/get-jobCandidate-successfully-fromDb.json b/test/postman/testData/jobCandidate/get-jobCandidate-successfully-fromDb.json new file mode 100644 index 00000000..03bd0ef3 --- /dev/null +++ b/test/postman/testData/jobCandidate/get-jobCandidate-successfully-fromDb.json @@ -0,0 +1,74 @@ +[ + { + "token": "admin_token", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "viewedByCustomer": false, + "externalId": "300234321", + "resume": "http://example.com/", + "status": "open", + "remark": null, + "updatedBy": null, + "interviews": [] + } + }, + { + "token": "copilot_token", + "jobCandidateId": "JobCandidateId-2", + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "viewedByCustomer": false, + "externalId": "300234322", + "resume": "http://example.com/", + "status": "open", + "remark": null, + "updatedBy": null + } + }, + { + "token": "user_token", + "jobCandidateId": "JobCandidateId-2", + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "viewedByCustomer": false, + "externalId": "300234322", + "resume": "http://example.com/", + "status": "open", + "remark": null, + "updatedBy": null + } + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "viewedByCustomer": false, + "externalId": "300234321", + "resume": "http://example.com/", + "status": "open", + "remark": null, + "updatedBy": null + } + }, + { + "token": "manager_token", + "jobCandidateId": "JobCandidateId-5", + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "viewedByCustomer": false, + "externalId": "300234321", + "resume": "http://example.com/", + "status": "open", + "remark": null, + "updatedBy": null, + "interviews": [] + } + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/get-jobCandidate-successfully.json b/test/postman/testData/jobCandidate/get-jobCandidate-successfully.json new file mode 100644 index 00000000..b1c58ee9 --- /dev/null +++ b/test/postman/testData/jobCandidate/get-jobCandidate-successfully.json @@ -0,0 +1,72 @@ +[ + { + "token": "admin_token", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "viewedByCustomer": false, + "externalId": "300234321", + "resume": "http://example.com/", + "status": "open", + "remark": null, + "updatedBy": null + } + }, + { + "token": "copilot_token", + "jobCandidateId": "JobCandidateId-2", + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "viewedByCustomer": false, + "externalId": "300234322", + "resume": "http://example.com/", + "status": "open", + "remark": null, + "updatedBy": null + } + }, + { + "token": "user_token", + "jobCandidateId": "JobCandidateId-2", + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "viewedByCustomer": false, + "externalId": "300234322", + "resume": "http://example.com/", + "status": "open", + "remark": null, + "updatedBy": null + } + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "viewedByCustomer": false, + "externalId": "300234321", + "resume": "http://example.com/", + "status": "open", + "remark": null, + "updatedBy": null + } + }, + { + "token": "manager_token", + "jobCandidateId": "JobCandidateId-5", + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "viewedByCustomer": false, + "externalId": "300234321", + "resume": "http://example.com/", + "status": "open", + "remark": null, + "updatedBy": null + } + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/partially-update-jobCandidate-by-invalid-field.json b/test/postman/testData/jobCandidate/partially-update-jobCandidate-by-invalid-field.json new file mode 100644 index 00000000..9614ceee --- /dev/null +++ b/test/postman/testData/jobCandidate/partially-update-jobCandidate-by-invalid-field.json @@ -0,0 +1,44 @@ +[ + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "externalId": [], + "resume": "http://example.com/" + }, + "httpStatus": 400, + "message": "\"data.externalId\" must be a string" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "externalId": "300234321", + "resume": "url" + }, + "httpStatus": 400, + "message": "\"data.resume\" must be a valid uri" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "externalId": "300234321", + "resume": "http://example.com/", + "other": "other" + }, + "httpStatus": 400, + "message": "\"data.other\" is not allowed" + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "externalId": "300234321", + "resume": "http://example.com/", + "status": "other" + }, + "httpStatus": 400, + "message": "\"data.status\" must be one of \\[open, placed, selected, client rejected - screening, client rejected - interview, rejected - other, cancelled, interview, topcoder-rejected, applied, rejected-pre-screen, skills-test, phone-screen, job-closed, offered, withdrawn, withdrawn-prescreen\\]" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/partially-update-jobCandidate-by-invalid-id.json b/test/postman/testData/jobCandidate/partially-update-jobCandidate-by-invalid-id.json new file mode 100644 index 00000000..a1500311 --- /dev/null +++ b/test/postman/testData/jobCandidate/partially-update-jobCandidate-by-invalid-id.json @@ -0,0 +1,22 @@ +[ + { + "token": "m2m_token", + "jobCandidateId": "missing_id", + "requestBody": { + "externalId": "300234321", + "resume": "http://example2.com/" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"JobCandidate\" doesn't exists." + }, + { + "token": "m2m_token", + "jobCandidateId": "invalid_id", + "requestBody": { + "externalId": "300234321", + "resume": "http://example2.com/" + }, + "httpStatus": 400, + "message": "\"id\" must be a valid GUID" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/partially-update-jobCandidate-by-invalid-token.json b/test/postman/testData/jobCandidate/partially-update-jobCandidate-by-invalid-token.json new file mode 100644 index 00000000..961f9738 --- /dev/null +++ b/test/postman/testData/jobCandidate/partially-update-jobCandidate-by-invalid-token.json @@ -0,0 +1,30 @@ +[ + { + "token": "invalid_token_1", + "jobCandidateId": "JobCandidateId-1", + "requestBody": {}, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "jobCandidateId": "JobCandidateId-2", + "requestBody": {}, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "jobCandidateId": "JobCandidateId-3", + "requestBody": {}, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "jobCandidateId": "JobCandidateId-4", + "requestBody": {}, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/partially-update-jobCandidate-by-non-member-of-project.json b/test/postman/testData/jobCandidate/partially-update-jobCandidate-by-non-member-of-project.json new file mode 100644 index 00000000..020c389d --- /dev/null +++ b/test/postman/testData/jobCandidate/partially-update-jobCandidate-by-non-member-of-project.json @@ -0,0 +1,22 @@ +[ + { + "token": "copilot_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "externalId": "300234321", + "resume": "http://example2.com/" + }, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + { + "token": "user_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "externalId": "300234321", + "resume": "http://example2.com/" + }, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/partially-update-jobCandidate-successfully.json b/test/postman/testData/jobCandidate/partially-update-jobCandidate-successfully.json new file mode 100644 index 00000000..8bb3b153 --- /dev/null +++ b/test/postman/testData/jobCandidate/partially-update-jobCandidate-successfully.json @@ -0,0 +1,92 @@ +[ + { + "token": "admin_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "status": "selected", + "externalId": "300234321", + "resume": "http://example2.com/" + }, + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234321", + "viewedByCustomer": false, + "resume": "http://example2.com/", + "remark": null, + "status": "selected" + } + }, + { + "token": "m2m_token", + "jobCandidateId": "JobCandidateId-1", + "requestBody": { + "status": "selected", + "externalId": "300234321", + "resume": "http://example2.com/" + }, + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234321", + "remark": null, + "viewedByCustomer": false, + "resume": "http://example2.com/", + "status": "selected" + } + }, + { + "token": "copilot_token", + "jobCandidateId": "JobCandidateId-2", + "requestBody": { + "status": "selected", + "externalId": "300234322", + "resume": "http://example2.com/" + }, + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234322", + "resume": "http://example2.com/", + "remark": null, + "viewedByCustomer": false, + "status": "selected" + } + }, + { + "token": "user_token", + "jobCandidateId": "JobCandidateId-2", + "requestBody": { + "status": "selected", + "externalId": "300234322", + "resume": "http://example2.com/" + }, + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234322", + "resume": "http://example2.com/", + "remark": null, + "viewedByCustomer": false, + "status": "selected" + } + }, + { + "token": "manager_token", + "jobCandidateId": "JobCandidateId-5", + "requestBody": { + "status": "selected", + "externalId": "300234321", + "resume": "http://example2.com/" + }, + "httpStatus": 200, + "responseBody": { + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "externalId": "300234321", + "resume": "http://example2.com/", + "status": "selected", + "remark": null, + "viewedByCustomer": false + } + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/search-jobCandidates-by-invalid-field.json b/test/postman/testData/jobCandidate/search-jobCandidates-by-invalid-field.json new file mode 100644 index 00000000..6b0eef76 --- /dev/null +++ b/test/postman/testData/jobCandidate/search-jobCandidates-by-invalid-field.json @@ -0,0 +1,56 @@ +[ + { + "token": "m2m_token", + "requestParameters": { + "page": 2, + "perPage": 1, + "sortBy": "createAt" + }, + "httpStatus": 400, + "message": "\"criteria.sortBy\" must be one of \\[id, status\\]" + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "jobId": "asd" + }, + "httpStatus": 400, + "message": "\"criteria.jobId\" must be a valid GUID" + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "userId": "asd" + }, + "httpStatus": 400, + "message": "\"criteria.userId\" must be a valid GUID" + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "status": "no-status" + }, + "httpStatus": 400, + "message": "\"criteria.status\" must be one of \\[open, placed, selected, client rejected - screening, client rejected - interview, rejected - other, cancelled, interview, topcoder-rejected, applied, rejected-pre-screen, skills-test, phone-screen, job-closed, offered, withdrawn, withdrawn-prescreen\\]" + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "other": "3002,34321" + }, + "httpStatus": 400, + "message": "\"criteria.other\" is not allowed" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/search-jobCandidates-by-invalid-token.json b/test/postman/testData/jobCandidate/search-jobCandidates-by-invalid-token.json new file mode 100644 index 00000000..b7b1a28e --- /dev/null +++ b/test/postman/testData/jobCandidate/search-jobCandidates-by-invalid-token.json @@ -0,0 +1,22 @@ +[ + { + "token": "invalid_token_1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/search-jobCandidates-by-non-member-of-project.json b/test/postman/testData/jobCandidate/search-jobCandidates-by-non-member-of-project.json new file mode 100644 index 00000000..f2568d86 --- /dev/null +++ b/test/postman/testData/jobCandidate/search-jobCandidates-by-non-member-of-project.json @@ -0,0 +1,44 @@ +[ + { + "token": "user_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "id", + "jobId": "{{JobId-1}}" + }, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + { + "token": "user_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "id" + }, + "httpStatus": 403, + "message": "Not allowed without filtering by \"jobId\"" + }, + { + "token": "copilot_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "id", + "jobId": "{{JobId-1}}" + }, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + { + "token": "copilot_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "id" + }, + "httpStatus": 403, + "message": "Not allowed without filtering by \"jobId\"" + } +] \ No newline at end of file diff --git a/test/postman/testData/jobCandidate/search-jobCandidates-successfully.json b/test/postman/testData/jobCandidate/search-jobCandidates-successfully.json new file mode 100644 index 00000000..dd17445e --- /dev/null +++ b/test/postman/testData/jobCandidate/search-jobCandidates-successfully.json @@ -0,0 +1,186 @@ +[ + { + "token": "m2m_token", + "requestParameters": { + "page": 2, + "perPage": 1, + "sortBy": "id" + }, + "httpStatus": 200 + }, + { + "token": "manager_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "jobId": "{{JobId-1}}" + }, + "httpStatus": 200 + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a" + }, + "httpStatus": 200 + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "status": "open" + }, + "httpStatus": 200 + }, + { + "token": "manager_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "externalId": "300234321" + }, + "httpStatus": 200 + }, + { + "token": "admin_token", + "requestParameters": { + "page": 2, + "perPage": 1, + "sortBy": "id" + }, + "httpStatus": 200 + }, + { + "token": "admin_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "jobId": "{{JobId-1}}" + }, + "httpStatus": 200 + }, + { + "token": "admin_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a" + }, + "httpStatus": 200 + }, + { + "token": "admin_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "status": "open" + }, + "httpStatus": 200 + }, + { + "token": "admin_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "externalId": "300234321" + }, + "httpStatus": 200 + }, + { + "token": "copilot_token", + "requestParameters": { + "page": 2, + "perPage": 1, + "sortBy": "id", + "jobId": "{{JobId-2}}" + }, + "httpStatus": 200 + }, + { + "token": "copilot_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "jobId": "{{JobId-2}}" + }, + "httpStatus": 200 + }, + { + "token": "manager_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "status": "open", + "jobId": "{{JobId-2}}" + }, + "httpStatus": 200 + }, + { + "token": "copilot_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "externalId": "300234321", + "jobId": "{{JobId-2}}" + }, + "httpStatus": 200 + }, + { + "token": "user_token", + "requestParameters": { + "page": 2, + "perPage": 1, + "sortBy": "id", + "jobId": "{{JobId-2}}" + }, + "httpStatus": 200 + }, + { + "token": "user_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "jobId": "{{JobId-2}}" + }, + "httpStatus": 200 + }, + { + "token": "user_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "status": "open", + "jobId": "{{JobId-2}}" + }, + "httpStatus": 200 + }, + { + "token": "user_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "externalId": "300234321", + "jobId": "{{JobId-2}}" + }, + "httpStatus": 200 + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/add-dates-to-resourceBooking.json b/test/postman/testData/resourceBooking/add-dates-to-resourceBooking.json new file mode 100644 index 00000000..2c2beaad --- /dev/null +++ b/test/postman/testData/resourceBooking/add-dates-to-resourceBooking.json @@ -0,0 +1,107 @@ +[ + { + "token": "admin_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "startDate": "2021-05-23", + "endDate": "2021-05-29" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "sendWeeklySurvey": true, + "status": "placed" + } + }, + { + "token": "admin_token", + "resourceBookingId": "ResourceBookingId-2", + "requestBody": { + "startDate": "2021-05-23", + "endDate": "2021-05-29" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "sendWeeklySurvey": true, + "status": "placed" + } + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-3", + "requestBody": { + "startDate": "2021-05-23", + "endDate": "2021-05-29" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "sendWeeklySurvey": true, + "status": "placed" + } + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-4", + "requestBody": { + "startDate": "2021-05-23", + "endDate": "2021-05-29" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "sendWeeklySurvey": true, + "status": "placed" + } + }, + { + "token": "manager_token", + "resourceBookingId": "ResourceBookingId-5", + "requestBody": { + "startDate": "2021-05-23", + "endDate": "2021-05-29" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "sendWeeklySurvey": true, + "status": "placed" + } + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/create-resourceBooking-by-invalid-field.json b/test/postman/testData/resourceBooking/create-resourceBooking-by-invalid-field.json new file mode 100644 index 00000000..80fef174 --- /dev/null +++ b/test/postman/testData/resourceBooking/create-resourceBooking-by-invalid-field.json @@ -0,0 +1,172 @@ +[ + { + "token": "m2m_token", + "requestBody": { + "status": "new", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{JobId-1}}", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "\"resourceBooking.status\" must be one of \\[placed, closed, cancelled\\]" + }, + { + "token": "m2m_token", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "{{invalid_id}}", + "jobId": "{{JobId-1}}", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "\"resourceBooking.userId\" must be a valid GUID" + }, + { + "token": "m2m_token", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{invalid_id}}", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "\"resourceBooking.jobId\" must be a valid GUID" + }, + { + "token": "m2m_token", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{JobId-1}}", + "startDate": "today", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "\"resourceBooking.startDate\" must be in YYYY-MM-DD format" + }, + { + "token": "m2m_token", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{JobId-1}}", + "startDate": "2021-05-23", + "endDate": "maybe tomorrow", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "\"resourceBooking.endDate\" must be in YYYY-MM-DD format" + }, + { + "token": "m2m_token", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{JobId-1}}", + "startDate": "2021-05-23", + "endDate": "2021-04-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "endDate cannot be earlier than startDate" + }, + { + "token": "m2m_token", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{JobId-1}}", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": "one", + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "\"resourceBooking.memberRate\" must be a number" + }, + { + "token": "m2m_token", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{JobId-1}}", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": "two", + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "\"resourceBooking.customerRate\" must be a number" + }, + { + "token": "m2m_token", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{JobId-1}}", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "every second", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "\"resourceBooking.rateType\" must be one of \\[hourly, daily, weekly, monthly, annual\\]" + }, + { + "token": "m2m_token", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{JobId-1}}", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": "some id" + }, + "httpStatus": 400, + "message": "\"resourceBooking.billingAccountId\" must be a number" + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/create-resourceBooking-by-invalid-token.json b/test/postman/testData/resourceBooking/create-resourceBooking-by-invalid-token.json new file mode 100644 index 00000000..8781c57f --- /dev/null +++ b/test/postman/testData/resourceBooking/create-resourceBooking-by-invalid-token.json @@ -0,0 +1,42 @@ +[ + { + "token": "invalid_token_1", + "requestBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "rateType": "hourly" + }, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "requestBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "rateType": "hourly" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "requestBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "rateType": "hourly" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "requestBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "rateType": "hourly" + }, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/create-resourceBooking-by-missing-field.json b/test/postman/testData/resourceBooking/create-resourceBooking-by-missing-field.json new file mode 100644 index 00000000..b29b3cbd --- /dev/null +++ b/test/postman/testData/resourceBooking/create-resourceBooking-by-missing-field.json @@ -0,0 +1,29 @@ +[ + { + "token": "m2m_token", + "requestBody": { + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "rateType": "hourly" + }, + "httpStatus": 400, + "message": "\"resourceBooking.projectId\" is required" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 222, + "rateType": "hourly" + }, + "httpStatus": 400, + "message": "\"resourceBooking.userId\" is required" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001" + }, + "httpStatus": 400, + "message": "\"resourceBooking.rateType\" is required" + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/create-resourceBooking-by-no-admin.json b/test/postman/testData/resourceBooking/create-resourceBooking-by-no-admin.json new file mode 100644 index 00000000..c697365a --- /dev/null +++ b/test/postman/testData/resourceBooking/create-resourceBooking-by-no-admin.json @@ -0,0 +1,22 @@ +[ + { + "token": "copilot_token", + "requestBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "rateType": "hourly" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + }, + { + "token": "user_token", + "requestBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "rateType": "hourly" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/create-resourceBooking-by-nonexistent-ids.json b/test/postman/testData/resourceBooking/create-resourceBooking-by-nonexistent-ids.json new file mode 100644 index 00000000..ce9f1010 --- /dev/null +++ b/test/postman/testData/resourceBooking/create-resourceBooking-by-nonexistent-ids.json @@ -0,0 +1,23 @@ +[ + { + "token": "m2m_token", + "requestBody": { + "jobId": "{{missing_id}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "projectId": 222, + "rateType": "hourly" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"Job\" doesn't exists." + }, + { + "token": "m2m_token", + "requestBody": { + "userId": "{{missing_id}}", + "projectId": 222, + "rateType": "hourly" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"user\" not found" + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/create-resourceBooking-successfully.json b/test/postman/testData/resourceBooking/create-resourceBooking-successfully.json new file mode 100644 index 00000000..56a5f6a9 --- /dev/null +++ b/test/postman/testData/resourceBooking/create-resourceBooking-successfully.json @@ -0,0 +1,137 @@ +[ + { + "token": "admin_token", + "requestBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "jobId": "{{JobId-1}}", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": null, + "endDate": null, + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed", + "sendWeeklySurvey": true, + "updatedBy": null + }, + "saveId": "ResourceBookingId-1" + }, + { + "token": "admin_token", + "requestBody": { + "projectId": 111, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "jobId": "{{JobId-2}}", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": null, + "endDate": null, + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed", + "sendWeeklySurvey": true, + "updatedBy": null + }, + "saveId": "ResourceBookingId-2" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 111, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "jobId": "{{JobId-1}}", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": null, + "endDate": null, + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed", + "sendWeeklySurvey": true, + "updatedBy": null + }, + "saveId": "ResourceBookingId-3" + }, + { + "token": "m2m_token", + "requestBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "jobId": "{{JobId-1}}", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": null, + "endDate": null, + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed", + "sendWeeklySurvey": true, + "updatedBy": null + }, + "saveId": "ResourceBookingId-4" + }, + { + "token": "manager_token", + "requestBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "jobId": "{{JobId-1}}", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": null, + "endDate": null, + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed", + "sendWeeklySurvey": true, + "updatedBy": null + }, + "saveId": "ResourceBookingId-5" + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/delete-resourceBooking-by-invalid-id.json b/test/postman/testData/resourceBooking/delete-resourceBooking-by-invalid-id.json new file mode 100644 index 00000000..e977fbbe --- /dev/null +++ b/test/postman/testData/resourceBooking/delete-resourceBooking-by-invalid-id.json @@ -0,0 +1,14 @@ +[ + { + "token": "m2m_token", + "resourceBookingId": "missing_id", + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"ResourceBooking\" doesn't exists." + }, + { + "token": "m2m_token", + "resourceBookingId": "invalid_id", + "httpStatus": 400, + "message": "\"id\" must be a valid GUID" + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/delete-resourceBooking-by-invalid-token.json b/test/postman/testData/resourceBooking/delete-resourceBooking-by-invalid-token.json new file mode 100644 index 00000000..e2cb4b63 --- /dev/null +++ b/test/postman/testData/resourceBooking/delete-resourceBooking-by-invalid-token.json @@ -0,0 +1,26 @@ +[ + { + "token": "invalid_token_1", + "resourceBookingId": "ResourceBookingId-1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "resourceBookingId": "ResourceBookingId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "resourceBookingId": "ResourceBookingId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "resourceBookingId": "ResourceBookingId-1", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/delete-resourceBooking-by-no-admin.json b/test/postman/testData/resourceBooking/delete-resourceBooking-by-no-admin.json new file mode 100644 index 00000000..388075dd --- /dev/null +++ b/test/postman/testData/resourceBooking/delete-resourceBooking-by-no-admin.json @@ -0,0 +1,14 @@ +[ + { + "token": "copilot_token", + "resourceBookingId": "ResourceBookingId-1", + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + }, + { + "token": "user_token", + "resourceBookingId": "ResourceBookingId-1", + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/delete-resourceBooking-successfully.json b/test/postman/testData/resourceBooking/delete-resourceBooking-successfully.json new file mode 100644 index 00000000..1debf87e --- /dev/null +++ b/test/postman/testData/resourceBooking/delete-resourceBooking-successfully.json @@ -0,0 +1,17 @@ +[ + { + "token": "admin_token", + "resourceBookingId": "ResourceBookingId-3", + "httpStatus": 204 + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-4", + "httpStatus": 204 + }, + { + "token": "manager_token", + "resourceBookingId": "ResourceBookingId-5", + "httpStatus": 204 + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/fully-update-resourceBooking-by-invalid-field.json b/test/postman/testData/resourceBooking/fully-update-resourceBooking-by-invalid-field.json new file mode 100644 index 00000000..69a519c3 --- /dev/null +++ b/test/postman/testData/resourceBooking/fully-update-resourceBooking-by-invalid-field.json @@ -0,0 +1,182 @@ +[ + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "status": "new", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{JobId-1}}", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "\"data.status\" must be one of \\[placed, closed, cancelled\\]" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "{{invalid_id}}", + "jobId": "{{JobId-1}}", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "\"data.userId\" must be a valid GUID" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{invalid_id}}", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "\"data.jobId\" must be a valid GUID" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{JobId-1}}", + "startDate": "today", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "\"data.startDate\" must be in YYYY-MM-DD format" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{JobId-1}}", + "startDate": "2021-05-23", + "endDate": "maybe tomorrow", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "\"data.endDate\" must be in YYYY-MM-DD format" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{JobId-1}}", + "startDate": "2021-05-23", + "endDate": "2021-04-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "endDate cannot be earlier than startDate" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{JobId-1}}", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": "one", + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "\"data.memberRate\" must be a number" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{JobId-1}}", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": "two", + "rateType": "hourly", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "\"data.customerRate\" must be a number" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{JobId-1}}", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "every second", + "billingAccountId": 80000071 + }, + "httpStatus": 400, + "message": "\"data.rateType\" must be one of \\[hourly, daily, weekly, monthly\\]" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "status": "placed", + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{JobId-1}}", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": "some id" + }, + "httpStatus": 400, + "message": "\"data.billingAccountId\" must be a number" + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/fully-update-resourceBooking-by-invalid-token.json b/test/postman/testData/resourceBooking/fully-update-resourceBooking-by-invalid-token.json new file mode 100644 index 00000000..b5e2f556 --- /dev/null +++ b/test/postman/testData/resourceBooking/fully-update-resourceBooking-by-invalid-token.json @@ -0,0 +1,50 @@ +[ + { + "token": "invalid_token_1", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "rateType": "hourly", + "status": "placed" + }, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "rateType": "hourly", + "status": "placed" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "rateType": "hourly", + "status": "placed" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "rateType": "hourly", + "status": "placed" + }, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/fully-update-resourceBooking-by-missing-field.json b/test/postman/testData/resourceBooking/fully-update-resourceBooking-by-missing-field.json new file mode 100644 index 00000000..e1a281ea --- /dev/null +++ b/test/postman/testData/resourceBooking/fully-update-resourceBooking-by-missing-field.json @@ -0,0 +1,46 @@ +[ + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "rateType": "hourly", + "status": "placed" + }, + "httpStatus": 400, + "message": "\"data.projectId\" is required" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "projectId": 222, + "rateType": "hourly", + "status": "placed" + }, + "httpStatus": 400, + "message": "\"data.userId\" is required" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "status": "placed" + }, + "httpStatus": 400, + "message": "\"data.rateType\" is required" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "projectId": 222, + "rateType": "hourly", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001" + }, + "httpStatus": 400, + "message": "\"data.status\" is required" + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/fully-update-resourceBooking-by-no-admin.json b/test/postman/testData/resourceBooking/fully-update-resourceBooking-by-no-admin.json new file mode 100644 index 00000000..676cf39c --- /dev/null +++ b/test/postman/testData/resourceBooking/fully-update-resourceBooking-by-no-admin.json @@ -0,0 +1,34 @@ +[ + { + "token": "user_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "jobId": "{{JobId-1}}", + "memberRate": 15, + "customerRate": 13, + "rateType": "weekly", + "billingAccountId": 80000071, + "status": "placed" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + }, + { + "token": "copilot_token", + "resourceBookingId": "ResourceBookingId-2", + "requestBody": { + "projectId": 111, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1002", + "jobId": "{{JobId-2}}", + "memberRate": 20, + "customerRate": 10, + "rateType": "weekly", + "billingAccountId": 80000071, + "status": "placed" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/fully-update-resourceBooking-by-nonexistent-ids.json b/test/postman/testData/resourceBooking/fully-update-resourceBooking-by-nonexistent-ids.json new file mode 100644 index 00000000..65a291b3 --- /dev/null +++ b/test/postman/testData/resourceBooking/fully-update-resourceBooking-by-nonexistent-ids.json @@ -0,0 +1,39 @@ +[ + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "jobId": "{{missing_id}}", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "projectId": 222, + "rateType": "hourly", + "status": "placed" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"Job\" doesn't exists." + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "userId": "{{missing_id}}", + "projectId": 222, + "rateType": "hourly", + "status": "placed" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"user\" not found" + }, + { + "token": "m2m_token", + "resourceBookingId": "missing_id", + "requestBody": { + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c377a", + "projectId": 222, + "rateType": "hourly", + "status": "placed" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"ResourceBooking\" doesn't exists." + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/fully-update-resourceBooking-successfully.json b/test/postman/testData/resourceBooking/fully-update-resourceBooking-successfully.json new file mode 100644 index 00000000..9aaa299b --- /dev/null +++ b/test/postman/testData/resourceBooking/fully-update-resourceBooking-successfully.json @@ -0,0 +1,152 @@ +[ + { + "token": "admin_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "jobId": "{{JobId-1}}", + "memberRate": 15, + "customerRate": 13, + "rateType": "weekly", + "billingAccountId": 80000071, + "status": "placed" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 15, + "customerRate": 13, + "rateType": "weekly", + "billingAccountId": 80000071, + "status": "placed", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "admin_token", + "resourceBookingId": "ResourceBookingId-2", + "requestBody": { + "projectId": 111, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1002", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "jobId": "{{JobId-2}}", + "memberRate": 20, + "customerRate": 10, + "rateType": "weekly", + "billingAccountId": 80000071, + "status": "placed" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1002", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 20, + "customerRate": 10, + "rateType": "weekly", + "billingAccountId": 80000071, + "status": "placed", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-3", + "requestBody": { + "projectId": 111, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1003", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "jobId": "{{JobId-1}}", + "memberRate": 8, + "customerRate": 5, + "rateType": "monthly", + "billingAccountId": 80000071, + "status": "placed" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1003", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 8, + "customerRate": 5, + "rateType": "monthly", + "billingAccountId": 80000071, + "status": "placed", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-4", + "requestBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1004", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "jobId": "{{JobId-1}}", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1004", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "manager_token", + "resourceBookingId": "ResourceBookingId-5", + "requestBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1005", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "jobId": "{{JobId-1}}", + "memberRate": 15, + "customerRate": 13, + "rateType": "weekly", + "billingAccountId": 80000071, + "status": "placed" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1005", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 15, + "customerRate": 13, + "rateType": "weekly", + "billingAccountId": 80000071, + "status": "placed", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/get-resourceBooking-by-invalid-id.json b/test/postman/testData/resourceBooking/get-resourceBooking-by-invalid-id.json new file mode 100644 index 00000000..7c28302d --- /dev/null +++ b/test/postman/testData/resourceBooking/get-resourceBooking-by-invalid-id.json @@ -0,0 +1,14 @@ +[ + { + "token": "m2m_token", + "resourceBookingId": "missing_id", + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"ResourceBooking\" not found" + }, + { + "token": "m2m_token", + "resourceBookingId": "invalid_id", + "httpStatus": 400, + "message": "\"id\" must be a valid GUID" + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/get-resourceBooking-by-invalid-parameters.json b/test/postman/testData/resourceBooking/get-resourceBooking-by-invalid-parameters.json new file mode 100644 index 00000000..dc19467b --- /dev/null +++ b/test/postman/testData/resourceBooking/get-resourceBooking-by-invalid-parameters.json @@ -0,0 +1,47 @@ +[ + { + "token": "user_token", + "resourceBookingId": "ResourceBookingId-2", + "requestParameters": { + "fields": "workPeriods" + }, + "httpStatus": 403, + "message": "Not allowed without including \"projectId\"" + }, + { + "token": "user_token", + "resourceBookingId": "ResourceBookingId-2", + "requestParameters": { + "fields": "projectId,memberRate" + }, + "httpStatus": 403, + "message": "You don't have access to view memberRate" + }, + { + "token": "copilot_token", + "resourceBookingId": "ResourceBookingId-2", + "requestParameters": { + "fields": "workPeriods" + }, + "httpStatus": 403, + "message": "Not allowed without including \"projectId\"" + }, + { + "token": "copilot_token", + "resourceBookingId": "ResourceBookingId-2", + "requestParameters": { + "fields": "projectId,memberRate" + }, + "httpStatus": 403, + "message": "You don't have access to view memberRate" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestParameters": { + "fields": "some" + }, + "httpStatus": 400, + "message": "some are not allowed" + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/get-resourceBooking-by-invalid-token.json b/test/postman/testData/resourceBooking/get-resourceBooking-by-invalid-token.json new file mode 100644 index 00000000..e2cb4b63 --- /dev/null +++ b/test/postman/testData/resourceBooking/get-resourceBooking-by-invalid-token.json @@ -0,0 +1,26 @@ +[ + { + "token": "invalid_token_1", + "resourceBookingId": "ResourceBookingId-1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "resourceBookingId": "ResourceBookingId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "resourceBookingId": "ResourceBookingId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "resourceBookingId": "ResourceBookingId-1", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/get-resourceBooking-by-non-member-of-project.json b/test/postman/testData/resourceBooking/get-resourceBooking-by-non-member-of-project.json new file mode 100644 index 00000000..b8e18a76 --- /dev/null +++ b/test/postman/testData/resourceBooking/get-resourceBooking-by-non-member-of-project.json @@ -0,0 +1,14 @@ +[ + { + "token": "user_token", + "resourceBookingId": "ResourceBookingId-1", + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + { + "token": "copilot_token", + "resourceBookingId": "ResourceBookingId-4", + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/get-resourceBooking-successfully-fromDb-with-parameters.json b/test/postman/testData/resourceBooking/get-resourceBooking-successfully-fromDb-with-parameters.json new file mode 100644 index 00000000..649b5e91 --- /dev/null +++ b/test/postman/testData/resourceBooking/get-resourceBooking-successfully-fromDb-with-parameters.json @@ -0,0 +1,105 @@ +[ + { + "token": "admin_token", + "resourceBookingId": "ResourceBookingId-1", + "requestParameters": { + "fields": "projectId,userId,startDate,endDate,memberRate,workPeriods.daysWorked,workPeriods.paymentStatus" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "workPeriods": [ + { + "daysWorked": 5, + "paymentStatus": "pending" + } + ] + } + }, + { + "token": "copilot_token", + "resourceBookingId": "ResourceBookingId-2", + "requestParameters": { + "fields": "projectId,userId,startDate,endDate,workPeriods.startDate,workPeriods.paymentStatus" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "workPeriods": [ + { + "startDate": "2021-05-23", + "paymentStatus": "pending" + } + ] + } + }, + { + "token": "user_token", + "resourceBookingId": "ResourceBookingId-3", + "requestParameters": { + "fields": "projectId,status,startDate,billingAccountId,customerRate,workPeriods.userHandle" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "status": "placed", + "startDate": "2021-05-23", + "billingAccountId": 80000071, + "customerRate": 13, + "workPeriods": [ + { + "userHandle": "lazybaer" + } + ] + } + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-4", + "requestParameters": { + "fields": "memberRate,status,startDate,billingAccountId,memberRate,workPeriods.userHandle,workPeriods.startDate,workPeriods.endDate" + }, + "httpStatus": 200, + "responseBody": { + "memberRate": 13.23, + "status": "placed", + "startDate": "2021-05-23", + "billingAccountId": 80000071, + "workPeriods": [ + { + "userHandle": "lazybaer", + "startDate": "2021-05-23", + "endDate": "2021-05-29" + } + ] + } + }, + { + "token": "manager_token", + "resourceBookingId": "ResourceBookingId-5", + "requestParameters": { + "fields": "projectId,userId,startDate,endDate,memberRate,workPeriods.daysWorked,workPeriods.paymentStatus" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "workPeriods": [ + { + "daysWorked": 5, + "paymentStatus": "pending" + } + ] + } + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/get-resourceBooking-successfully-fromDb.json b/test/postman/testData/resourceBooking/get-resourceBooking-successfully-fromDb.json new file mode 100644 index 00000000..2e7f4d3d --- /dev/null +++ b/test/postman/testData/resourceBooking/get-resourceBooking-successfully-fromDb.json @@ -0,0 +1,87 @@ +[ + { + "token": "admin_token", + "resourceBookingId": "ResourceBookingId-1", + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed", + "sendWeeklySurvey": true + } + }, + { + "token": "copilot_token", + "resourceBookingId": "ResourceBookingId-2", + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate":13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed", + "sendWeeklySurvey": true + } + }, + { + "token": "user_token", + "resourceBookingId": "ResourceBookingId-3", + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate":13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed", + "sendWeeklySurvey": true + } + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-4", + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed", + "sendWeeklySurvey": true + } + }, + { + "token": "manager_token", + "resourceBookingId": "ResourceBookingId-5", + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed", + "sendWeeklySurvey": true + } + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/get-resourceBooking-successfully-with-parameters.json b/test/postman/testData/resourceBooking/get-resourceBooking-successfully-with-parameters.json new file mode 100644 index 00000000..649b5e91 --- /dev/null +++ b/test/postman/testData/resourceBooking/get-resourceBooking-successfully-with-parameters.json @@ -0,0 +1,105 @@ +[ + { + "token": "admin_token", + "resourceBookingId": "ResourceBookingId-1", + "requestParameters": { + "fields": "projectId,userId,startDate,endDate,memberRate,workPeriods.daysWorked,workPeriods.paymentStatus" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "workPeriods": [ + { + "daysWorked": 5, + "paymentStatus": "pending" + } + ] + } + }, + { + "token": "copilot_token", + "resourceBookingId": "ResourceBookingId-2", + "requestParameters": { + "fields": "projectId,userId,startDate,endDate,workPeriods.startDate,workPeriods.paymentStatus" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "workPeriods": [ + { + "startDate": "2021-05-23", + "paymentStatus": "pending" + } + ] + } + }, + { + "token": "user_token", + "resourceBookingId": "ResourceBookingId-3", + "requestParameters": { + "fields": "projectId,status,startDate,billingAccountId,customerRate,workPeriods.userHandle" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "status": "placed", + "startDate": "2021-05-23", + "billingAccountId": 80000071, + "customerRate": 13, + "workPeriods": [ + { + "userHandle": "lazybaer" + } + ] + } + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-4", + "requestParameters": { + "fields": "memberRate,status,startDate,billingAccountId,memberRate,workPeriods.userHandle,workPeriods.startDate,workPeriods.endDate" + }, + "httpStatus": 200, + "responseBody": { + "memberRate": 13.23, + "status": "placed", + "startDate": "2021-05-23", + "billingAccountId": 80000071, + "workPeriods": [ + { + "userHandle": "lazybaer", + "startDate": "2021-05-23", + "endDate": "2021-05-29" + } + ] + } + }, + { + "token": "manager_token", + "resourceBookingId": "ResourceBookingId-5", + "requestParameters": { + "fields": "projectId,userId,startDate,endDate,memberRate,workPeriods.daysWorked,workPeriods.paymentStatus" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "workPeriods": [ + { + "daysWorked": 5, + "paymentStatus": "pending" + } + ] + } + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/get-resourceBooking-successfully.json b/test/postman/testData/resourceBooking/get-resourceBooking-successfully.json new file mode 100644 index 00000000..7cf727f2 --- /dev/null +++ b/test/postman/testData/resourceBooking/get-resourceBooking-successfully.json @@ -0,0 +1,87 @@ +[ + { + "token": "admin_token", + "resourceBookingId": "ResourceBookingId-1", + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed", + "sendWeeklySurvey":true + } + }, + { + "token": "copilot_token", + "resourceBookingId": "ResourceBookingId-2", + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed", + "sendWeeklySurvey":true + } + }, + { + "token": "user_token", + "resourceBookingId": "ResourceBookingId-3", + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed", + "sendWeeklySurvey":true + } + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-4", + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed", + "sendWeeklySurvey":true + } + }, + { + "token": "manager_token", + "resourceBookingId": "ResourceBookingId-5", + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "0bcb0d86-09bb-410a-b2b1-fba90d1a7699", + "startDate": "2021-05-23", + "endDate": "2021-05-29", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed", + "sendWeeklySurvey":true + } + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/partially-update-resourceBooking-by-invalid-field.json b/test/postman/testData/resourceBooking/partially-update-resourceBooking-by-invalid-field.json new file mode 100644 index 00000000..7e2358c4 --- /dev/null +++ b/test/postman/testData/resourceBooking/partially-update-resourceBooking-by-invalid-field.json @@ -0,0 +1,77 @@ +[ + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "status": "new" + }, + "httpStatus": 400, + "message": "\"data.status\" must be one of \\[placed, closed, cancelled\\]" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "startDate": "today", + "endDate": "2021-05-29" + }, + "httpStatus": 400, + "message": "\"data.startDate\" must be in YYYY-MM-DD format" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "startDate": "2021-05-23", + "endDate": "maybe tomorrow" + }, + "httpStatus": 400, + "message": "\"data.endDate\" must be in YYYY-MM-DD format" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "startDate": "2021-05-23", + "endDate": "2021-04-29" + }, + "httpStatus": 400, + "message": "endDate cannot be earlier than startDate" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "memberRate": "one" + }, + "httpStatus": 400, + "message": "\"data.memberRate\" must be a number" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "customerRate": "two" + }, + "httpStatus": 400, + "message": "\"data.customerRate\" must be a number" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "rateType": "every second" + }, + "httpStatus": 400, + "message": "\"data.rateType\" must be one of \\[hourly, daily, weekly, monthly\\]" + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "billingAccountId": "some id" + }, + "httpStatus": 400, + "message": "\"data.billingAccountId\" must be a number" + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/partially-update-resourceBooking-by-invalid-token.json b/test/postman/testData/resourceBooking/partially-update-resourceBooking-by-invalid-token.json new file mode 100644 index 00000000..05393a8e --- /dev/null +++ b/test/postman/testData/resourceBooking/partially-update-resourceBooking-by-invalid-token.json @@ -0,0 +1,42 @@ +[ + { + "token": "invalid_token_1", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "rateType": "hourly", + "status": "placed" + }, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "rateType": "hourly", + "status": "placed" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "rateType": "hourly", + "status": "placed" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "rateType": "hourly", + "status": "placed" + }, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/partially-update-resourceBooking-by-no-admin.json b/test/postman/testData/resourceBooking/partially-update-resourceBooking-by-no-admin.json new file mode 100644 index 00000000..3c48853e --- /dev/null +++ b/test/postman/testData/resourceBooking/partially-update-resourceBooking-by-no-admin.json @@ -0,0 +1,22 @@ +[ + { + "token": "user_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "startDate": "2021-05-24", + "endDate": "2021-05-28" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + }, + { + "token": "copilot_token", + "resourceBookingId": "ResourceBookingId-2", + "requestBody": { + "startDate": "2021-05-24", + "endDate": "2021-05-28" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/partially-update-resourceBooking-by-nonexistent-ids.json b/test/postman/testData/resourceBooking/partially-update-resourceBooking-by-nonexistent-ids.json new file mode 100644 index 00000000..1413894e --- /dev/null +++ b/test/postman/testData/resourceBooking/partially-update-resourceBooking-by-nonexistent-ids.json @@ -0,0 +1,11 @@ +[ + { + "token": "m2m_token", + "resourceBookingId": "missing_id", + "requestBody": { + "status": "placed" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"ResourceBooking\" doesn't exists." + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/partially-update-resourceBooking-successfully.json b/test/postman/testData/resourceBooking/partially-update-resourceBooking-successfully.json new file mode 100644 index 00000000..54b667c8 --- /dev/null +++ b/test/postman/testData/resourceBooking/partially-update-resourceBooking-successfully.json @@ -0,0 +1,113 @@ +[ + { + "token": "admin_token", + "resourceBookingId": "ResourceBookingId-1", + "requestBody": { + "startDate": "2021-05-24", + "endDate": "2021-05-28" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "startDate": "2021-05-24", + "endDate": "2021-05-28", + "memberRate": 15, + "customerRate": 13, + "rateType": "weekly", + "billingAccountId": 80000071, + "status": "placed", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "admin_token", + "resourceBookingId": "ResourceBookingId-2", + "requestBody": { + "startDate": "2021-05-24", + "endDate": "2021-05-28", + "billingAccountId": null + }, + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1002", + "startDate": "2021-05-24", + "endDate": "2021-05-28", + "memberRate": 20, + "customerRate": 10, + "rateType": "weekly", + "billingAccountId": null, + "status": "placed", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-3", + "requestBody": { + "startDate": "2021-05-24", + "endDate": "2021-05-28" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 111, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1003", + "startDate": "2021-05-24", + "endDate": "2021-05-28", + "memberRate": 8, + "customerRate": 5, + "rateType": "monthly", + "billingAccountId": 80000071, + "status": "placed", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "m2m_token", + "resourceBookingId": "ResourceBookingId-4", + "requestBody": { + "startDate": "2021-05-24", + "endDate": "2021-05-28" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1004", + "startDate": "2021-05-24", + "endDate": "2021-05-28", + "memberRate": 13.23, + "customerRate": 13, + "rateType": "hourly", + "billingAccountId": 80000071, + "status": "placed", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "manager_token", + "resourceBookingId": "ResourceBookingId-5", + "requestBody": { + "startDate": "2021-05-24", + "endDate": "2021-05-28" + }, + "httpStatus": 200, + "responseBody": { + "projectId": 222, + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1005", + "startDate": "2021-05-24", + "endDate": "2021-05-28", + "memberRate": 15, + "customerRate": 13, + "rateType": "weekly", + "billingAccountId": 80000071, + "status": "placed", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/search-resourceBooking-by-invalid-field.json b/test/postman/testData/resourceBooking/search-resourceBooking-by-invalid-field.json new file mode 100644 index 00000000..67e6d70a --- /dev/null +++ b/test/postman/testData/resourceBooking/search-resourceBooking-by-invalid-field.json @@ -0,0 +1,75 @@ +[ + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "status": "placed", + "projectId": "222", + "fields": "workPeriods" + }, + "httpStatus": 400, + "message": "Can not filter or sort by some field which is not included in fields" + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "startDate", + "fields": "projectId" + }, + "httpStatus": 400, + "message": "Can not filter or sort by some field which is not included in fields" + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "workPeriods.startDate": "2021-05-23" + }, + "httpStatus": 400, + "message": "Can not filter or sort by some field which is not included in fields" + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "fields": "workPeriods", + "sortBy": "workPeriods.daysWorked" + }, + "httpStatus": 400, + "message": "Can not sort by workPeriod field without filtering by workPeriods.startDate or workPeriods.endDate" + }, + { + "token": "user_token", + "requestParameters": { + "page": 1, + "perPage": 5 + }, + "httpStatus": 403, + "message": "Not allowed without filtering by \"projectId\"" + }, + { + "token": "copilot_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "fields": "memberRate" + }, + "httpStatus": 403, + "message": "You don't have access to view memberRate" + }, + { + "token": "admin_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "memberRate": 3 + }, + "httpStatus": 400, + "message": "\"criteria.memberRate\" is not allowed" + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/search-resourceBooking-by-invalid-token.json b/test/postman/testData/resourceBooking/search-resourceBooking-by-invalid-token.json new file mode 100644 index 00000000..b7b1a28e --- /dev/null +++ b/test/postman/testData/resourceBooking/search-resourceBooking-by-invalid-token.json @@ -0,0 +1,22 @@ +[ + { + "token": "invalid_token_1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/search-resourceBooking-by-non-member-of-project.json b/test/postman/testData/resourceBooking/search-resourceBooking-by-non-member-of-project.json new file mode 100644 index 00000000..c563190b --- /dev/null +++ b/test/postman/testData/resourceBooking/search-resourceBooking-by-non-member-of-project.json @@ -0,0 +1,26 @@ +[ + { + "token": "user_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "startDate", + "status": "placed", + "projectId": "222" + }, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + { + "token": "copilot_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "startDate", + "status": "placed", + "projectId": "222" + }, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + } +] \ No newline at end of file diff --git a/test/postman/testData/resourceBooking/search-resourceBooking-successfully.json b/test/postman/testData/resourceBooking/search-resourceBooking-successfully.json new file mode 100644 index 00000000..ab4f15f1 --- /dev/null +++ b/test/postman/testData/resourceBooking/search-resourceBooking-successfully.json @@ -0,0 +1,161 @@ +[ + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "startDate", + "status": "placed" + }, + "httpStatus": 200 + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "status", + "startDate": "2021-05-23" + }, + "httpStatus": 200 + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "startDate", + "endDate": "2021-05-29" + }, + "httpStatus": 200 + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "memberRate", + "rateType": "hourly" + }, + "httpStatus": 200 + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "startDate", + "jobId": "{{JobId-1}}" + }, + "httpStatus": 200 + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "customerRate", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001" + }, + "httpStatus": 200 + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "rateType", + "projectId": "111" + }, + "httpStatus": 200 + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "startDate", + "projectIds": "111,222" + }, + "httpStatus": 200 + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "id", + "fields": "workPeriods", + "workPeriods.paymentStatus": "pending" + }, + "httpStatus": 200 + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "startDate", + "fields": "workPeriods,startDate", + "workPeriods.startDate": "2021-05-23" + }, + "httpStatus": 200 + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "startDate", + "fields": "workPeriods,startDate", + "workPeriods.endDate": "2021-05-29" + }, + "httpStatus": 200 + }, + { + "token": "manager_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "startDate", + "fields": "workPeriods,startDate", + "workPeriods.userHandle": "userHandle" + }, + "httpStatus": 200 + }, + { + "token": "admin_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "startDate", + "fields": "projectId,userId,startDate,endDate,memberRate,workPeriods.daysWorked,workPeriods.paymentStatus" + }, + "httpStatus": 200 + }, + { + "token": "copilot_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "projectId": 111, + "sortBy": "workPeriods.daysWorked", + "fields": "projectId,userId,startDate,endDate,workPeriods.startDate,workPeriods.daysWorked,workPeriods.paymentStatus", + "workPeriods.startDate": "2021-05-23" + }, + "httpStatus": 200 + }, + { + "token": "user_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "workPeriods.paymentStatus", + "sortOrder": "asc", + "projectId": 111, + "fields": "projectId,userId,startDate,endDate,workPeriods.startDate,workPeriods.daysWorked,workPeriods.paymentStatus", + "workPeriods.startDate": "2021-05-23" + }, + "httpStatus": 200 + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/add-members-by-invalid-field.json b/test/postman/testData/taasTeam/add-members-by-invalid-field.json new file mode 100644 index 00000000..7f824238 --- /dev/null +++ b/test/postman/testData/taasTeam/add-members-by-invalid-field.json @@ -0,0 +1,40 @@ +[ + { + "token": "m2m_token", + "teamId": "111", + "httpStatus": 400, + "requestBody": {}, + "message": "\"data\" must contain at least one of \\[handles, emails\\]" + }, + { + "token": "m2m_token", + "teamId": "111", + "httpStatus": 400, + "requestBody": { + "emails": [ + "test", + "test" + ] + }, + "message": "\"data.emails\\[0\\]\" must be a valid email" + }, + { + "token": "m2m_token", + "teamId": "111", + "httpStatus": 400, + "requestBody": { + "handles": [ + "userhandle", + "user" + ], + "emails": [ + "test@test.com", + "test@gmail.com" + ], + "ids": [ + "id" + ] + }, + "message": "\"data.ids\" is not allowed" + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/add-members-by-invalid-id.json b/test/postman/testData/taasTeam/add-members-by-invalid-id.json new file mode 100644 index 00000000..3bad2289 --- /dev/null +++ b/test/postman/testData/taasTeam/add-members-by-invalid-id.json @@ -0,0 +1,34 @@ +[ + { + "token": "m2m_token", + "teamId": "150", + "requestBody": { + "handles": [ + "userhandle", + "user" + ], + "emails": [ + "test@test.com", + "test@gmail.com" + ] + }, + "httpStatus": 404, + "message": "id: 150 project not found" + }, + { + "token": "m2m_token", + "teamId": "id", + "requestBody": { + "handles": [ + "userhandle", + "user" + ], + "emails": [ + "test@test.com", + "test@gmail.com" + ] + }, + "httpStatus": 400, + "message": "\"id\" must be a number" + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/add-members-by-invalid-token.json b/test/postman/testData/taasTeam/add-members-by-invalid-token.json new file mode 100644 index 00000000..53b7c001 --- /dev/null +++ b/test/postman/testData/taasTeam/add-members-by-invalid-token.json @@ -0,0 +1,26 @@ +[ + { + "token": "invalid_token_1", + "teamId": "111", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "teamId": "111", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "teamId": "111", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "teamId": "111", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/add-members-successfully.json b/test/postman/testData/taasTeam/add-members-successfully.json new file mode 100644 index 00000000..917e06ff --- /dev/null +++ b/test/postman/testData/taasTeam/add-members-successfully.json @@ -0,0 +1,138 @@ +[ + { + "token": "admin_token", + "teamId": "111", + "httpStatus": 200, + "requestBody": { + "handles": [ + "userhandle" + ], + "emails": [ + "test@test.com" + ] + }, + "responseBody": { + "success": [ + { + "userId": 1, + "role": "customer", + "handle": "userhandle" + } + ], + "failed": [ + { + "error": "User doesn't exist", + "email": "test@test.com" + } + ] + } + }, + { + "token": "manager_token", + "teamId": "111", + "httpStatus": 200, + "requestBody": { + "handles": [ + "userhandle" + ], + "emails": [ + "test@test.com" + ] + }, + "responseBody": { + "success": [ + { + "userId": 1, + "role": "customer", + "handle": "userhandle" + } + ], + "failed": [ + { + "error": "User doesn't exist", + "email": "test@test.com" + } + ] + } + }, + { + "token": "m2m_token", + "teamId": "112", + "httpStatus": 200, + "requestBody": { + "handles": [ + "user" + ], + "emails": [ + "test@gmail.com" + ] + }, + "responseBody": { + "success": [ + { + "userId": 1, + "role": "customer", + "email": "test@gmail.com" + } + ], + "failed": [ + { + "error": "User doesn't exist", + "handle": "user" + } + ] + } + }, + { + "token": "copilot_token", + "teamId": "113", + "httpStatus": 200, + "requestBody": { + "handles": [ + "userhandle", + "user" + ] + }, + "responseBody": { + "success": [ + { + "userId": 1, + "role": "customer", + "handle": "userhandle" + } + ], + "failed": [ + { + "error": "User doesn't exist", + "handle": "user" + } + ] + } + }, + { + "token": "user_token", + "teamId": "222", + "httpStatus": 200, + "requestBody": { + "emails": [ + "test@test.com", + "test@gmail.com" + ] + }, + "responseBody": { + "success": [ + { + "userId": 1, + "role": "customer", + "email": "test@gmail.com" + } + ], + "failed": [ + { + "error": "User doesn't exist", + "email": "test@test.com" + } + ] + } + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/delete-member-by-invalid-id.json b/test/postman/testData/taasTeam/delete-member-by-invalid-id.json new file mode 100644 index 00000000..f4fc05b8 --- /dev/null +++ b/test/postman/testData/taasTeam/delete-member-by-invalid-id.json @@ -0,0 +1,23 @@ +[ + { + "token": "m2m_token", + "teamId": "111", + "memberId": 100, + "httpStatus": 404, + "message": "projectMemberId: 100 \"member\" doesn't exist in project 111" + }, + { + "token": "m2m_token", + "teamId": "id", + "memberId": 100, + "httpStatus": 400, + "message": "\"id\" must be a number" + }, + { + "token": "m2m_token", + "teamId": "111", + "memberId": "id", + "httpStatus": 400, + "message": "\"projectMemberId\" must be a number" + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/delete-member-by-invalid-token.json b/test/postman/testData/taasTeam/delete-member-by-invalid-token.json new file mode 100644 index 00000000..701f2c32 --- /dev/null +++ b/test/postman/testData/taasTeam/delete-member-by-invalid-token.json @@ -0,0 +1,30 @@ +[ + { + "token": "invalid_token_1", + "teamId": 111, + "memberId": 40158994, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "teamId": 111, + "memberId": 40158994, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "teamId": 111, + "memberId": 40158994, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "teamId": 111, + "memberId": 40158994, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/delete-member-successfully.json b/test/postman/testData/taasTeam/delete-member-successfully.json new file mode 100644 index 00000000..f470717d --- /dev/null +++ b/test/postman/testData/taasTeam/delete-member-successfully.json @@ -0,0 +1,32 @@ +[ + { + "token": "admin_token", + "teamId": 111, + "memberId": 40158994, + "httpStatus": 204 + }, + { + "token": "manager_token", + "teamId": 111, + "memberId": 88774634, + "httpStatus": 204 + }, + { + "token": "m2m_token", + "teamId": 112, + "memberId": 88774634, + "httpStatus": 204 + }, + { + "token": "copilot_token", + "teamId": 113, + "memberId": 40158994, + "httpStatus": 204 + }, + { + "token": "user_token", + "teamId": 111, + "memberId": 88774634, + "httpStatus": 204 + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/get-me-by-invalid-token.json b/test/postman/testData/taasTeam/get-me-by-invalid-token.json new file mode 100644 index 00000000..b7b1a28e --- /dev/null +++ b/test/postman/testData/taasTeam/get-me-by-invalid-token.json @@ -0,0 +1,22 @@ +[ + { + "token": "invalid_token_1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/get-me-successfully.json b/test/postman/testData/taasTeam/get-me-successfully.json new file mode 100644 index 00000000..71fe9c90 --- /dev/null +++ b/test/postman/testData/taasTeam/get-me-successfully.json @@ -0,0 +1,37 @@ +[ + { + "token": "admin_token", + "httpStatus": 200, + "responseBody": { + "id": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "manager_token", + "httpStatus": 200, + "responseBody": { + "id": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "copilot_token", + "httpStatus": 200, + "responseBody": { + "id": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "m2m_token", + "httpStatus": 200, + "responseBody": { + "id": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "user_token", + "httpStatus": 200, + "responseBody": { + "id": "00000000-0000-0000-0000-000000000000" + } + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/get-taasTeam-by-invalid-id.json b/test/postman/testData/taasTeam/get-taasTeam-by-invalid-id.json new file mode 100644 index 00000000..0294690e --- /dev/null +++ b/test/postman/testData/taasTeam/get-taasTeam-by-invalid-id.json @@ -0,0 +1,14 @@ +[ + { + "token": "m2m_token", + "teamId": "a", + "httpStatus": 400, + "message": "\"id\" must be a number" + }, + { + "token": "m2m_token", + "teamId": "0", + "httpStatus": 404, + "message": "id: 0 project not found" + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/get-taasTeam-by-invalid-token.json b/test/postman/testData/taasTeam/get-taasTeam-by-invalid-token.json new file mode 100644 index 00000000..0e41de33 --- /dev/null +++ b/test/postman/testData/taasTeam/get-taasTeam-by-invalid-token.json @@ -0,0 +1,26 @@ +[ + { + "token": "invalid_token_1", + "teamId": "113", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "teamId": "113", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "teamId": "113", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "teamId": "113", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/get-taasTeam-successfully.json b/test/postman/testData/taasTeam/get-taasTeam-successfully.json new file mode 100644 index 00000000..6176596d --- /dev/null +++ b/test/postman/testData/taasTeam/get-taasTeam-successfully.json @@ -0,0 +1,143 @@ +[ + { + "token": "admin_token", + "teamId": "111", + "httpStatus": 200, + "responseBody": { + "id": 111, + "name": "Project-111", + "invites": 1, + "members": [ + { + "userId": 40158994 + }, + { + "userId": 88774634 + } + ], + "weeklyCost": 10, + "resources": [ + { + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1002", + "handle": "userHandle", + "firstName": "firstName", + "lastName": "lastName", + "skills": [], + "customerRate": 10, + "startDate": "2021-05-24", + "endDate": "2021-05-28" + } + ], + "startDate": "2021-05-24T00:00:00.000Z", + "endDate": "2021-05-28T00:00:00.000Z", + "jobs": [ + { + "description": "Dummy Description Edit", + "startDate": "2020-09-27T04:17:23.131Z", + "duration": 1, + "numPositions": 13, + "rateType": "weekly", + "skills": [ + { + "id": "cbac57a3-7180-4316-8769-73af64893158", + "name": "NGINX" + }, + { + "id": "a2b4bc11-c641-4a19-9eb7-33980378f82e", + "name": "Machine Learning" + } + ], + "status": "in-review", + "title": "POSTMANE2E-Dummy title edit" + } + ] + } + }, + { + "token": "m2m_token", + "teamId": "112", + "httpStatus": 200, + "responseBody": { + "id": 112, + "name": "Project-112", + "invites": 1, + "members": [ + { + "userId": 40158994 + }, + { + "userId": 88774634 + } + ], + "weeklyCost": 0, + "resources": [] + } + }, + { + "token": "copilot_token", + "teamId": "113", + "httpStatus": 200, + "responseBody": { + "id": 113, + "name": "Project-113", + "invites": 1, + "members": [ + { + "userId": 40158994 + }, + { + "userId": 88774634 + } + ], + "weeklyCost": 0, + "resources": [] + } + }, + { + "token": "user_token", + "teamId": "222", + "httpStatus": 200, + "responseBody": { + "id": 222, + "name": "Project-222", + "invites": 1, + "members": [], + "weeklyCost": 13, + "resources": [ + { + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "handle": "userHandle", + "firstName": "firstName", + "lastName": "lastName", + "skills": [], + "customerRate": 13, + "startDate": "2021-05-24", + "endDate": "2021-05-28" + } + ], + "startDate": "2021-05-24T00:00:00.000Z", + "endDate": "2021-05-28T00:00:00.000Z", + "jobs": [ + { + "description": "Dummy Description Edit", + "startDate": "2020-09-27T04:17:23.131Z", + "duration": 1, + "numPositions": 12, + "rateType": "hourly", + "skills": [ + { + "id": "cbac57a3-7180-4316-8769-73af64893158", + "name": "NGINX" + }, + { + "id": "a2b4bc11-c641-4a19-9eb7-33980378f82e", + "name": "Machine Learning" + } + ], + "status": "in-review", + "title": "POSTMANE2E-Dummy title edit" + } + ] + } + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/get-taasTeamJob-by-invalid-id.json b/test/postman/testData/taasTeam/get-taasTeamJob-by-invalid-id.json new file mode 100644 index 00000000..779091c1 --- /dev/null +++ b/test/postman/testData/taasTeam/get-taasTeamJob-by-invalid-id.json @@ -0,0 +1,23 @@ +[ + { + "token": "m2m_token", + "teamId": "111", + "jobId": "JobId-1", + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"Job\" with Team id 111 doesn't exist" + }, + { + "token": "m2m_token", + "teamId": "222", + "jobId": "invalid_id", + "httpStatus": 400, + "message": "\"jobId\" must be a valid GUID" + }, + { + "token": "m2m_token", + "teamId": "id", + "jobId": "JobId-1", + "httpStatus": 400, + "message": "\"id\" must be a number" + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/get-taasTeamJob-by-invalid-token.json b/test/postman/testData/taasTeam/get-taasTeamJob-by-invalid-token.json new file mode 100644 index 00000000..ed1cfce7 --- /dev/null +++ b/test/postman/testData/taasTeam/get-taasTeamJob-by-invalid-token.json @@ -0,0 +1,30 @@ +[ + { + "token": "invalid_token_1", + "teamId": "111", + "jobId": "JobId-2", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "teamId": "111", + "jobId": "JobId-2", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "teamId": "111", + "jobId": "JobId-2", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "teamId": "111", + "jobId": "JobId-2", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/get-taasTeamJob-successfully.json b/test/postman/testData/taasTeam/get-taasTeamJob-successfully.json new file mode 100644 index 00000000..b958b55d --- /dev/null +++ b/test/postman/testData/taasTeam/get-taasTeamJob-successfully.json @@ -0,0 +1,186 @@ +[ + { + "token": "admin_token", + "teamId": "111", + "jobId": "JobId-2", + "httpStatus": 200, + "responseBody": { + "title": "POSTMANE2E-Dummy title edit", + "skills": [ + { + "id": "cbac57a3-7180-4316-8769-73af64893158", + "name": "NGINX" + }, + { + "id": "a2b4bc11-c641-4a19-9eb7-33980378f82e", + "name": "Machine Learning" + } + ], + "candidates": [ + { + "status": "interview", + "resume": "http://example2.com/", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1002", + "interviews": [ + { + "templateType": "sometype", + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": "00000000-0000-0000-0000-000000000000", + "rescheduleUrl": null, + "templateId": "someid", + "title": "test", + "templateUrl": "interview-30", + "duration": 30, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": "someid", + "round": 1, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": "details", + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Scheduling" + }, + { + "templateType": "sometype", + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": "00000000-0000-0000-0000-000000000000", + "rescheduleUrl": null, + "templateId": "someid", + "title": "test", + "templateUrl": "interview-30", + "duration": 60, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": "someid", + "round": 2, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": "details", + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Scheduling" + }, + { + "templateType": null, + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": "00000000-0000-0000-0000-000000000000", + "rescheduleUrl": null, + "templateId": null, + "title": null, + "templateUrl": "interview-30", + "duration": 30, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": null, + "round": 3, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": null, + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Scheduling" + } + ], + "handle": "userHandle", + "firstName": "firstName", + "lastName": "lastName", + "skills": [] + } + ] + } + }, + { + "token": "m2m_token", + "teamId": "222", + "jobId": "JobId-1", + "httpStatus": 200, + "responseBody": { + "title": "POSTMANE2E-Dummy title edit", + "skills": [ + { + "id": "cbac57a3-7180-4316-8769-73af64893158", + "name": "NGINX" + }, + { + "id": "a2b4bc11-c641-4a19-9eb7-33980378f82e", + "name": "Machine Learning" + } + ], + "candidates": [ + { + "status": "interview", + "resume": "http://example2.com/", + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "interviews": [ + { + "templateType": "sometype", + "calendarEventId": "someid", + "hostName": "firstName lastName", + "updatedBy": "00000000-0000-0000-0000-000000000000", + "rescheduleUrl": null, + "templateId": "someid", + "title": "test", + "templateUrl": "interview-30", + "duration": 30, + "guestNames": [ + "firstName lastName", + "attendee1", + "attendee2" + ], + "deletedAt": null, + "xaiId": "someid", + "round": 1, + "guestEmails": [ + "test@gmail.com", + "attendee1@yopmail.com", + "attendee2@yopmail.com" + ], + "createdBy": "00000000-0000-0000-0000-000000000000", + "locationDetails": "details", + "hostEmail": "POSTMANE2E-@yopmail.com", + "endTimestamp": null, + "startTimestamp": null, + "status": "Scheduling" + } + ], + "handle": "userHandle", + "firstName": "firstName", + "lastName": "lastName", + "skills": [] + } + ] + } + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/search-invites-by-invalid-id.json b/test/postman/testData/taasTeam/search-invites-by-invalid-id.json new file mode 100644 index 00000000..405b4d8d --- /dev/null +++ b/test/postman/testData/taasTeam/search-invites-by-invalid-id.json @@ -0,0 +1,8 @@ +[ + { + "token": "m2m_token", + "teamId": "id", + "httpStatus": 400, + "message": "\"id\" must be a number" + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/search-invites-by-invalid-token.json b/test/postman/testData/taasTeam/search-invites-by-invalid-token.json new file mode 100644 index 00000000..53b7c001 --- /dev/null +++ b/test/postman/testData/taasTeam/search-invites-by-invalid-token.json @@ -0,0 +1,26 @@ +[ + { + "token": "invalid_token_1", + "teamId": "111", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "teamId": "111", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "teamId": "111", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "teamId": "111", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/search-invites-successfully.json b/test/postman/testData/taasTeam/search-invites-successfully.json new file mode 100644 index 00000000..4213a547 --- /dev/null +++ b/test/postman/testData/taasTeam/search-invites-successfully.json @@ -0,0 +1,57 @@ +[ + { + "token": "admin_token", + "teamId": "111", + "requestParameters": { + "fields": "fields" + }, + "httpStatus": 200, + "responseBody": { + "invites": 1 + } + }, + { + "token": "copilot_token", + "teamId": "112", + "requestParameters": { + "fields": "fields" + }, + "httpStatus": 200, + "responseBody": { + "invites": 1 + } + }, + { + "token": "m2m_token", + "teamId": "113", + "requestParameters": { + "fields": "fields" + }, + "httpStatus": 200, + "responseBody": { + "invites": 1 + } + }, + { + "token": "user_token", + "teamId": "222", + "requestParameters": { + "fields": "fields" + }, + "httpStatus": 200, + "responseBody": { + "invites": 1 + } + }, + { + "token": "manager_token", + "teamId": "222", + "requestParameters": { + "fields": "fields" + }, + "httpStatus": 200, + "responseBody": { + "invites": 1 + } + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/search-members-by-invalid-id.json b/test/postman/testData/taasTeam/search-members-by-invalid-id.json new file mode 100644 index 00000000..405b4d8d --- /dev/null +++ b/test/postman/testData/taasTeam/search-members-by-invalid-id.json @@ -0,0 +1,8 @@ +[ + { + "token": "m2m_token", + "teamId": "id", + "httpStatus": 400, + "message": "\"id\" must be a number" + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/search-members-by-invalid-token.json b/test/postman/testData/taasTeam/search-members-by-invalid-token.json new file mode 100644 index 00000000..53b7c001 --- /dev/null +++ b/test/postman/testData/taasTeam/search-members-by-invalid-token.json @@ -0,0 +1,26 @@ +[ + { + "token": "invalid_token_1", + "teamId": "111", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "teamId": "111", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "teamId": "111", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "teamId": "111", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/search-members-successfully.json b/test/postman/testData/taasTeam/search-members-successfully.json new file mode 100644 index 00000000..6b5cca38 --- /dev/null +++ b/test/postman/testData/taasTeam/search-members-successfully.json @@ -0,0 +1,80 @@ +[ + { + "token": "admin_token", + "teamId": "111", + "requestParameters": { + "role": "role", + "fields": "fields" + }, + "httpStatus": 200, + "responseBody": [ + { + "userId": 40158994 + }, + { + "userId": 88774634 + } + ] + }, + { + "token": "copilot_token", + "teamId": "112", + "requestParameters": { + "role": "role", + "fields": "fields" + }, + "httpStatus": 200, + "responseBody": [ + { + "userId": 40158994 + }, + { + "userId": 88774634 + } + ] + }, + { + "token": "m2m_token", + "teamId": "113", + "requestParameters": { + "role": "role", + "fields": "fields" + }, + "httpStatus": 200, + "responseBody": [ + { + "userId": 40158994 + }, + { + "userId": 88774634 + } + ] + }, + { + "token": "user_token", + "teamId": "222", + "requestParameters": { + "role": "role", + "fields": "fields" + }, + "httpStatus": 200, + "responseBody": [] + }, + { + "token": "manager_token", + "teamId": "111", + "requestParameters": { + "role": "role", + "fields": "fields" + }, + "httpStatus": 200, + "responseBody": [ + { + "userId": 40158994 + }, + { + "userId": 88774634 + } + ] + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/search-skills-by-invalid-token.json b/test/postman/testData/taasTeam/search-skills-by-invalid-token.json new file mode 100644 index 00000000..b7b1a28e --- /dev/null +++ b/test/postman/testData/taasTeam/search-skills-by-invalid-token.json @@ -0,0 +1,22 @@ +[ + { + "token": "invalid_token_1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/search-skills-successfully.json b/test/postman/testData/taasTeam/search-skills-successfully.json new file mode 100644 index 00000000..0c095fa7 --- /dev/null +++ b/test/postman/testData/taasTeam/search-skills-successfully.json @@ -0,0 +1,112 @@ +[ + { + "token": "admin_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "orderBy": "id" + }, + "httpStatus": 200, + "responseBody": [ + { + "name": "EJB", + "id": "23e00d92-207a-4b5b-b3c9-4c5662644941" + }, + { + "name": "Dropwizard", + "id": "7d076384-ccf6-4e43-a45d-1b24b1e624aa" + }, + { + "name": "NGINX", + "id": "cbac57a3-7180-4316-8769-73af64893158" + }, + { + "name": "Machine Learning", + "id": "a2b4bc11-c641-4a19-9eb7-33980378f82e" + }, + { + "name": "Force.com", + "id": "94eae221-1158-4aa9-a6a4-50ecb0bbb8b6" + }, + { + "name": "Database", + "id": "2742759c-d0f9-4456-9482-e558aa960969" + }, + { + "name": "Winforms", + "id": "b81859b6-4c50-45d8-afcb-71b35d16ea1e" + }, + { + "name": "User Interface (Ui)", + "id": "17b61c7a-98dc-498d-ba8d-c52b6677d73c" + }, + { + "name": "Photoshop", + "id": "30d01540-ebed-46b6-88e7-4c210de63862" + }, + { + "name": "Docker", + "id": "bd417c10-d81a-45b6-85a9-d79efe86b9bb" + }, + { + "name": ".NET", + "id": "4fce6ced-3610-443c-92eb-3f6d76b34f5c" + } + ] + }, + { + "token": "manager_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "orderBy": "id" + }, + "httpStatus": 200, + "responseBody": [ + { + "name": "EJB", + "id": "23e00d92-207a-4b5b-b3c9-4c5662644941" + }, + { + "name": "Dropwizard", + "id": "7d076384-ccf6-4e43-a45d-1b24b1e624aa" + }, + { + "name": "NGINX", + "id": "cbac57a3-7180-4316-8769-73af64893158" + }, + { + "name": "Machine Learning", + "id": "a2b4bc11-c641-4a19-9eb7-33980378f82e" + }, + { + "name": "Force.com", + "id": "94eae221-1158-4aa9-a6a4-50ecb0bbb8b6" + }, + { + "name": "Database", + "id": "2742759c-d0f9-4456-9482-e558aa960969" + }, + { + "name": "Winforms", + "id": "b81859b6-4c50-45d8-afcb-71b35d16ea1e" + }, + { + "name": "User Interface (Ui)", + "id": "17b61c7a-98dc-498d-ba8d-c52b6677d73c" + }, + { + "name": "Photoshop", + "id": "30d01540-ebed-46b6-88e7-4c210de63862" + }, + { + "name": "Docker", + "id": "bd417c10-d81a-45b6-85a9-d79efe86b9bb" + }, + { + "name": ".NET", + "id": "4fce6ced-3610-443c-92eb-3f6d76b34f5c" + } + ] + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/search-taasTeams-by-invalid-field.json b/test/postman/testData/taasTeam/search-taasTeams-by-invalid-field.json new file mode 100644 index 00000000..e87c5f4e --- /dev/null +++ b/test/postman/testData/taasTeam/search-taasTeams-by-invalid-field.json @@ -0,0 +1,33 @@ +[ + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "best match", + "sortOrder": "asc" + }, + "httpStatus": 400, + "message": "\"sortOrder\\(with sortBy being `best match`\\)\" is not allowed" + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "best" + }, + "httpStatus": 400, + "message": "\"criteria.sortBy\" must be one of \\[createdAt, updatedAt, lastActivityAt, id, status, name, type, best match\\]" + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "members": "10" + }, + "httpStatus": 400, + "message": "\"criteria.members\" is not allowed" + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/search-taasTeams-by-invalid-token.json b/test/postman/testData/taasTeam/search-taasTeams-by-invalid-token.json new file mode 100644 index 00000000..b7b1a28e --- /dev/null +++ b/test/postman/testData/taasTeam/search-taasTeams-by-invalid-token.json @@ -0,0 +1,22 @@ +[ + { + "token": "invalid_token_1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/search-taasTeams-successfully.json b/test/postman/testData/taasTeam/search-taasTeams-successfully.json new file mode 100644 index 00000000..2d774383 --- /dev/null +++ b/test/postman/testData/taasTeam/search-taasTeams-successfully.json @@ -0,0 +1,207 @@ +[ + { + "token": "admin_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "id" + }, + "httpStatus": 200, + "responseBody": [ + { + "id": 111, + "name": "Project-111", + "invites": 1, + "members": [ + { + "userId": 40158994 + }, + { + "userId": 88774634 + } + ], + "weeklyCost": 10, + "resources": [ + { + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1002", + "handle": "userHandle", + "firstName": "firstName", + "lastName": "lastName", + "skills": [] + } + ], + "startDate": "2021-05-24T00:00:00.000Z", + "endDate": "2021-05-28T00:00:00.000Z", + "totalPositions": 13 + }, + { + "id": 112, + "name": "Project-112", + "invites": 1, + "members": [ + { + "userId": 40158994 + }, + { + "userId": 88774634 + } + ], + "weeklyCost": 0, + "resources": [] + }, + { + "id": 113, + "name": "Project-113", + "invites": 1, + "members": [ + { + "userId": 40158994 + }, + { + "userId": 88774634 + } + ], + "weeklyCost": 0, + "resources": [] + }, + { + "id": 222, + "name": "Project-222", + "invites": 1, + "members": [], + "weeklyCost": 13, + "resources": [ + { + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1001", + "handle": "userHandle", + "firstName": "firstName", + "lastName": "lastName", + "skills": [] + } + ], + "startDate": "2021-05-24T00:00:00.000Z", + "endDate": "2021-05-28T00:00:00.000Z", + "totalPositions": 12 + } + ] + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "id", + "name": "Project-111" + }, + "httpStatus": 200, + "responseBody": [ + { + "id": 111, + "name": "Project-111", + "invites": 1, + "members": [ + { + "userId": 40158994 + }, + { + "userId": 88774634 + } + ], + "weeklyCost": 10, + "resources": [ + { + "userId": "a55fe1bc-1754-45fa-9adc-cf3d6d7c1002", + "handle": "userHandle", + "firstName": "firstName", + "lastName": "lastName", + "skills": [] + } + ], + "startDate": "2021-05-24T00:00:00.000Z", + "endDate": "2021-05-28T00:00:00.000Z", + "totalPositions": 13 + } + ] + }, + { + "token": "copilot_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "lastActivityAt", + "name": "Project-112" + }, + "httpStatus": 200, + "responseBody": [ + { + "id": 112, + "name": "Project-112", + "invites": 1, + "members": [ + { + "userId": 40158994 + }, + { + "userId": 88774634 + } + ], + "weeklyCost": 0, + "resources": [] + } + ] + }, + { + "token": "user_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "name": "Project-113" + }, + "httpStatus": 200, + "responseBody": [ + { + "id": 113, + "name": "Project-113", + "invites": 1, + "members": [ + { + "userId": 40158994 + }, + { + "userId": 88774634 + } + ], + "weeklyCost": 0, + "resources": [] + } + ] + }, + { + "token": "manager_token", + "requestParameters": { + "page": 1, + "perPage": 10, + "sortBy": "status", + "name": "Project-113" + }, + "httpStatus": 200, + "responseBody": [ + { + "id": 113, + "name": "Project-113", + "invites": 1, + "members": [ + { + "userId": 40158994 + }, + { + "userId": 88774634 + } + ], + "weeklyCost": 0, + "resources": [] + } + ] + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/send-email-by-invalid-field.json b/test/postman/testData/taasTeam/send-email-by-invalid-field.json new file mode 100644 index 00000000..3c59a6d4 --- /dev/null +++ b/test/postman/testData/taasTeam/send-email-by-invalid-field.json @@ -0,0 +1,24 @@ +[ + { + "token": "m2m_token", + "requestBody": { + "template": "team", + "data": { + "data": "data", + "subject": "subject", + "body": "body" + } + }, + "httpStatus": 400, + "message": "\"data.template\" must be one of \\[team-issue-report, member-issue-report, extension-request, interview-invitation\\]" + }, + { + "token": "m2m_token", + "requestBody": { + "template": "team-issue-report", + "data": "{}" + }, + "httpStatus": 400, + "message": "\"data.data\" must be of type object" + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/send-email-by-invalid-token.json b/test/postman/testData/taasTeam/send-email-by-invalid-token.json new file mode 100644 index 00000000..2127a13a --- /dev/null +++ b/test/postman/testData/taasTeam/send-email-by-invalid-token.json @@ -0,0 +1,54 @@ +[ + { + "token": "invalid_token_1", + "requestBody": { + "template": "team-issue-report", + "data": { + "data": "data", + "subject": "subject", + "body": "body" + } + }, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "requestBody": { + "template": "team-issue-report", + "data": { + "data": "data", + "subject": "subject", + "body": "body" + } + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "requestBody": { + "template": "team-issue-report", + "data": { + "data": "data", + "subject": "subject", + "body": "body" + } + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "requestBody": { + "template": "team-issue-report", + "data": { + "data": "data", + "subject": "subject", + "body": "body" + } + }, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/send-email-by-missing-field.json b/test/postman/testData/taasTeam/send-email-by-missing-field.json new file mode 100644 index 00000000..23f23ac0 --- /dev/null +++ b/test/postman/testData/taasTeam/send-email-by-missing-field.json @@ -0,0 +1,22 @@ +[ + { + "token": "m2m_token", + "requestBody": { + "data": { + "data": "data", + "subject": "subject", + "body": "body" + } + }, + "httpStatus": 400, + "message": "\"data.template\" is required" + }, + { + "token": "m2m_token", + "requestBody": { + "template": "team-issue-report" + }, + "httpStatus": 400, + "message": "\"data.data\" is required" + } +] \ No newline at end of file diff --git a/test/postman/testData/taasTeam/send-email-successfully.json b/test/postman/testData/taasTeam/send-email-successfully.json new file mode 100644 index 00000000..21d5c5c1 --- /dev/null +++ b/test/postman/testData/taasTeam/send-email-successfully.json @@ -0,0 +1,62 @@ +[ + { + "token": "admin_token", + "requestBody": { + "template": "team-issue-report", + "data": { + "data": "data", + "subject": "subject", + "body": "body" + } + }, + "httpStatus": 204 + }, + { + "token": "m2m_token", + "requestBody": { + "template": "member-issue-report", + "data": { + "data": "data", + "subject": "subject", + "body": "body" + } + }, + "httpStatus": 204 + }, + { + "token": "copilot_token", + "requestBody": { + "template": "extension-request", + "data": { + "data": "data", + "subject": "subject", + "body": "body" + } + }, + "httpStatus": 204 + }, + { + "token": "user_token", + "requestBody": { + "template": "interview-invitation", + "data": { + "data": "data", + "subject": "subject", + "body": "body" + } + }, + "httpStatus": 204 + }, + { + "token": "manager_token", + "requestBody": { + "template": "team-issue-report", + "data": { + "data": "data", + "subject": "subject", + "body": "body" + } + }, + "httpStatus": 204 + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/create-workPeriod-by-invalid-field.json b/test/postman/testData/workPeriod/create-workPeriod-by-invalid-field.json new file mode 100644 index 00000000..21936e9c --- /dev/null +++ b/test/postman/testData/workPeriod/create-workPeriod-by-invalid-field.json @@ -0,0 +1,157 @@ +[ + { + "token": "admin_token", + "requestBody": { + "resourceBookingId": "{{invalid_id}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "\"workPeriod.resourceBookingId\" must be a valid GUID" + }, + { + "token": "admin_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "05-16-2021", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "\"workPeriod.startDate\" must be in YYYY-MM-DD format" + }, + { + "token": "admin_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-22-05", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "endDate should be always the next Saturday" + }, + { + "token": "admin_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-15", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "startDate should be always Sunday" + }, + { + "token": "admin_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-22", + "endDate": "2021-05-16", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "startDate should be always Sunday" + }, + { + "token": "admin_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-05-21", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "endDate should be always the next Saturday" + }, + { + "token": "admin_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": "none", + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "\"workPeriod.daysWorked\" must be a number" + }, + { + "token": "admin_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": "number", + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "\"workPeriod.memberRate\" must be a number" + }, + { + "token": "admin_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": "number", + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "\"workPeriod.customerRate\" must be a number" + }, + { + "token": "admin_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "wrong" + }, + "httpStatus": 400, + "message": "\"workPeriod.paymentStatus\" must be one of \\[pending, partially-completed, completed, cancelled\\]" + }, + { + "token": "admin_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending", + "period": "period" + }, + "httpStatus": 400, + "message": "\"workPeriod.period\" is not allowed" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/create-workPeriod-by-invalid-token.json b/test/postman/testData/workPeriod/create-workPeriod-by-invalid-token.json new file mode 100644 index 00000000..a1ed8119 --- /dev/null +++ b/test/postman/testData/workPeriod/create-workPeriod-by-invalid-token.json @@ -0,0 +1,38 @@ +[ + { + "token": "invalid_token_1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "paymentStatus": "pending" + }, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "paymentStatus": "pending" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "paymentStatus": "pending" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "paymentStatus": "pending" + }, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/create-workPeriod-by-missing-field.json b/test/postman/testData/workPeriod/create-workPeriod-by-missing-field.json new file mode 100644 index 00000000..4d98e9ed --- /dev/null +++ b/test/postman/testData/workPeriod/create-workPeriod-by-missing-field.json @@ -0,0 +1,31 @@ +[ + { + "token": "admin_token", + "requestBody": { + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "\"workPeriod.resourceBookingId\" is required" + }, + { + "token": "admin_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "\"workPeriod.endDate\" is required" + }, + { + "token": "admin_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22" + }, + "httpStatus": 400, + "message": "\"workPeriod.paymentStatus\" is required" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/create-workPeriod-by-no-admin.json b/test/postman/testData/workPeriod/create-workPeriod-by-no-admin.json new file mode 100644 index 00000000..ee06453a --- /dev/null +++ b/test/postman/testData/workPeriod/create-workPeriod-by-no-admin.json @@ -0,0 +1,22 @@ +[ + { + "token": "copilot_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "startDate": "2021-05-02", + "paymentStatus": "pending" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + }, + { + "token": "user_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "startDate": "2021-05-02", + "paymentStatus": "pending" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/create-workPeriod-by-nonexistent-ids.json b/test/postman/testData/workPeriod/create-workPeriod-by-nonexistent-ids.json new file mode 100644 index 00000000..7b987ae6 --- /dev/null +++ b/test/postman/testData/workPeriod/create-workPeriod-by-nonexistent-ids.json @@ -0,0 +1,12 @@ +[ + { + "token": "m2m_token", + "requestBody": { + "resourceBookingId": "{{missing_id}}", + "startDate": "2021-05-02", + "paymentStatus": "pending" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"ResourceBooking\" doesn't exists." + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/create-workPeriod-successfully.json b/test/postman/testData/workPeriod/create-workPeriod-successfully.json new file mode 100644 index 00000000..3736b1f3 --- /dev/null +++ b/test/postman/testData/workPeriod/create-workPeriod-successfully.json @@ -0,0 +1,132 @@ +[ + { + "token": "admin_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 222, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + }, + "saveId": "WorkPeriodId-1" + }, + { + "token": "admin_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 111, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + }, + "saveId": "WorkPeriodId-2" + }, + { + "token": "m2m_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-09", + "endDate": "2021-05-15", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-09", + "endDate": "2021-05-15", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 222, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + }, + "saveId": "WorkPeriodId-3" + }, + { + "token": "m2m_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "startDate": "2021-05-09", + "endDate": "2021-05-15", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-09", + "endDate": "2021-05-15", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 111, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + }, + "saveId": "WorkPeriodId-4" + }, + { + "token": "manager_token", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-04-25", + "endDate": "2021-05-01", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 200, + "responseBody": { + "startDate": "2021-04-25", + "endDate": "2021-05-01", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 222, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + }, + "saveId": "WorkPeriodId-5" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/delete-workPeriod-by-invalid-id.json b/test/postman/testData/workPeriod/delete-workPeriod-by-invalid-id.json new file mode 100644 index 00000000..10fec664 --- /dev/null +++ b/test/postman/testData/workPeriod/delete-workPeriod-by-invalid-id.json @@ -0,0 +1,14 @@ +[ + { + "token": "m2m_token", + "workPeriodId": "missing_id", + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"WorkPeriod\" doesn't exists." + }, + { + "token": "m2m_token", + "workPeriodId": "invalid_id", + "httpStatus": 400, + "message": "\"id\" must be a valid GUID" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/delete-workPeriod-by-invalid-token.json b/test/postman/testData/workPeriod/delete-workPeriod-by-invalid-token.json new file mode 100644 index 00000000..26b51aad --- /dev/null +++ b/test/postman/testData/workPeriod/delete-workPeriod-by-invalid-token.json @@ -0,0 +1,26 @@ +[ + { + "token": "invalid_token_1", + "workPeriodId": "WorkPeriodId-1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "workPeriodId": "WorkPeriodId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "workPeriodId": "WorkPeriodId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "workPeriodId": "WorkPeriodId-1", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/delete-workPeriod-by-no-admin.json b/test/postman/testData/workPeriod/delete-workPeriod-by-no-admin.json new file mode 100644 index 00000000..88d8b612 --- /dev/null +++ b/test/postman/testData/workPeriod/delete-workPeriod-by-no-admin.json @@ -0,0 +1,14 @@ +[ + { + "token": "copilot_token", + "workPeriodId": "WorkPeriodId-1", + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + }, + { + "token": "user_token", + "workPeriodId": "WorkPeriodId-1", + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/delete-workPeriod-by-with-paid-status.json b/test/postman/testData/workPeriod/delete-workPeriod-by-with-paid-status.json new file mode 100644 index 00000000..c39e3af0 --- /dev/null +++ b/test/postman/testData/workPeriod/delete-workPeriod-by-with-paid-status.json @@ -0,0 +1,14 @@ +[ + { + "token": "m2m_token", + "workPeriodId": "WorkPeriodId-1", + "httpStatus": 400, + "message": "Can't delete WorkPeriod with paymentStatus completed or partially-completed" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-2", + "httpStatus": 400, + "message": "Can't delete WorkPeriod with paymentStatus completed or partially-completed" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/delete-workPeriod-successfully.json b/test/postman/testData/workPeriod/delete-workPeriod-successfully.json new file mode 100644 index 00000000..eea8f308 --- /dev/null +++ b/test/postman/testData/workPeriod/delete-workPeriod-successfully.json @@ -0,0 +1,17 @@ +[ + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-3", + "httpStatus": 204 + }, + { + "token": "m2m_token", + "workPeriodId": "WorkPeriodId-4", + "httpStatus": 204 + }, + { + "token": "manager_token", + "workPeriodId": "WorkPeriodId-5", + "httpStatus": 204 + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/fully-update-workPeriod-already-exist.json b/test/postman/testData/workPeriod/fully-update-workPeriod-already-exist.json new file mode 100644 index 00000000..b13f58ff --- /dev/null +++ b/test/postman/testData/workPeriod/fully-update-workPeriod-already-exist.json @@ -0,0 +1,26 @@ +[ + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "Key \\(resource_booking_id, start_date, end_date\\)=\\([\\w\\W]+\\) already exists." + }, + { + "token": "m2m_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-09", + "endDate": "2021-05-15", + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "Key \\(resource_booking_id, start_date, end_date\\)=\\([\\w\\W]+\\) already exists." + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/fully-update-workPeriod-by-invalid-field.json b/test/postman/testData/workPeriod/fully-update-workPeriod-by-invalid-field.json new file mode 100644 index 00000000..4833f658 --- /dev/null +++ b/test/postman/testData/workPeriod/fully-update-workPeriod-by-invalid-field.json @@ -0,0 +1,168 @@ +[ + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{invalid_id}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "\"data.resourceBookingId\" must be a valid GUID" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "05-16-2021", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "\"data.startDate\" must be in YYYY-MM-DD format" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-22-05", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "endDate should be always the next Saturday" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-15", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "startDate should be always Sunday" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-22", + "endDate": "2021-05-16", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "startDate should be always Sunday" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-05-21", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "endDate should be always the next Saturday" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": "none", + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "\"data.daysWorked\" must be a number" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": "number", + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "\"data.memberRate\" must be a number" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": "number", + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "\"data.customerRate\" must be a number" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "wrong" + }, + "httpStatus": 400, + "message": "\"data.paymentStatus\" must be one of \\[pending, partially-completed, completed, cancelled\\]" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending", + "period": "period" + }, + "httpStatus": 400, + "message": "\"data.period\" is not allowed" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/fully-update-workPeriod-by-invalid-token.json b/test/postman/testData/workPeriod/fully-update-workPeriod-by-invalid-token.json new file mode 100644 index 00000000..4a4e88ef --- /dev/null +++ b/test/postman/testData/workPeriod/fully-update-workPeriod-by-invalid-token.json @@ -0,0 +1,42 @@ +[ + { + "token": "invalid_token_1", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "paymentStatus": "pending" + }, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "paymentStatus": "pending" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "paymentStatus": "pending" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "paymentStatus": "pending" + }, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/fully-update-workPeriod-by-missing-field.json b/test/postman/testData/workPeriod/fully-update-workPeriod-by-missing-field.json new file mode 100644 index 00000000..30f1135c --- /dev/null +++ b/test/postman/testData/workPeriod/fully-update-workPeriod-by-missing-field.json @@ -0,0 +1,34 @@ +[ + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "\"data.resourceBookingId\" is required" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "paymentStatus": "pending" + }, + "httpStatus": 400, + "message": "\"data.endDate\" is required" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22" + }, + "httpStatus": 400, + "message": "\"data.paymentStatus\" is required" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/fully-update-workPeriod-by-no-admin.json b/test/postman/testData/workPeriod/fully-update-workPeriod-by-no-admin.json new file mode 100644 index 00000000..9c169666 --- /dev/null +++ b/test/postman/testData/workPeriod/fully-update-workPeriod-by-no-admin.json @@ -0,0 +1,26 @@ +[ + { + "token": "copilot_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "paymentStatus": "pending" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + }, + { + "token": "user_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "paymentStatus": "pending" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/fully-update-workPeriod-by-nonexistent-ids.json b/test/postman/testData/workPeriod/fully-update-workPeriod-by-nonexistent-ids.json new file mode 100644 index 00000000..299197e8 --- /dev/null +++ b/test/postman/testData/workPeriod/fully-update-workPeriod-by-nonexistent-ids.json @@ -0,0 +1,26 @@ +[ + { + "token": "m2m_token", + "workPeriodId": "missing_id", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "paymentStatus": "pending" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"WorkPeriod\" doesn't exists." + }, + { + "token": "m2m_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{missing_id}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "paymentStatus": "pending" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"ResourceBooking\" doesn't exists." + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/fully-update-workPeriod-successfully.json b/test/postman/testData/workPeriod/fully-update-workPeriod-successfully.json new file mode 100644 index 00000000..8f726a13 --- /dev/null +++ b/test/postman/testData/workPeriod/fully-update-workPeriod-successfully.json @@ -0,0 +1,132 @@ +[ + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 3, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "completed" + }, + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 3, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "completed", + "projectId": 222, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-2", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 5, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "partially-completed" + }, + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 5, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "partially-completed", + "projectId": 111, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "m2m_token", + "workPeriodId": "WorkPeriodId-3", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-09", + "endDate": "2021-05-15", + "daysWorked": 1, + "memberRate": 15, + "customerRate": 15, + "paymentStatus": "pending" + }, + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-09", + "endDate": "2021-05-15", + "daysWorked": 1, + "memberRate": 15, + "customerRate": 15, + "paymentStatus": "pending", + "projectId": 222, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "m2m_token", + "workPeriodId": "WorkPeriodId-4", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "startDate": "2021-05-09", + "endDate": "2021-05-15", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-09", + "endDate": "2021-05-15", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 111, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-5", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-04-25", + "endDate": "2021-05-01", + "daysWorked": 3, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "completed" + }, + "httpStatus": 200, + "responseBody": { + "startDate": "2021-04-25", + "endDate": "2021-05-01", + "daysWorked": 3, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "completed", + "projectId": 222, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/get-workPeriod-by-invalid-id.json b/test/postman/testData/workPeriod/get-workPeriod-by-invalid-id.json new file mode 100644 index 00000000..10fec664 --- /dev/null +++ b/test/postman/testData/workPeriod/get-workPeriod-by-invalid-id.json @@ -0,0 +1,14 @@ +[ + { + "token": "m2m_token", + "workPeriodId": "missing_id", + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"WorkPeriod\" doesn't exists." + }, + { + "token": "m2m_token", + "workPeriodId": "invalid_id", + "httpStatus": 400, + "message": "\"id\" must be a valid GUID" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/get-workPeriod-by-invalid-token.json b/test/postman/testData/workPeriod/get-workPeriod-by-invalid-token.json new file mode 100644 index 00000000..26b51aad --- /dev/null +++ b/test/postman/testData/workPeriod/get-workPeriod-by-invalid-token.json @@ -0,0 +1,26 @@ +[ + { + "token": "invalid_token_1", + "workPeriodId": "WorkPeriodId-1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "workPeriodId": "WorkPeriodId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "workPeriodId": "WorkPeriodId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "workPeriodId": "WorkPeriodId-1", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/get-workPeriod-by-non-member-of-project.json b/test/postman/testData/workPeriod/get-workPeriod-by-non-member-of-project.json new file mode 100644 index 00000000..fa13cb11 --- /dev/null +++ b/test/postman/testData/workPeriod/get-workPeriod-by-non-member-of-project.json @@ -0,0 +1,14 @@ +[ + { + "token": "user_token", + "workPeriodId": "WorkPeriodId-1", + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + { + "token": "copilot_token", + "workPeriodId": "WorkPeriodId-3", + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/get-workPeriod-successfully-fromDb.json b/test/postman/testData/workPeriod/get-workPeriod-successfully-fromDb.json new file mode 100644 index 00000000..8d384f81 --- /dev/null +++ b/test/postman/testData/workPeriod/get-workPeriod-successfully-fromDb.json @@ -0,0 +1,88 @@ +[ + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 222, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null, + "payments": [] + } + }, + { + "token": "copilot_token", + "workPeriodId": "WorkPeriodId-2", + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 111, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + } + }, + { + "token": "m2m_token", + "workPeriodId": "WorkPeriodId-3", + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-09", + "endDate": "2021-05-15", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 222, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null, + "payments": [] + } + }, + { + "token": "user_token", + "workPeriodId": "WorkPeriodId-4", + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-09", + "endDate": "2021-05-15", + "daysWorked": 2, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 111, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + } + }, + { + "token": "manager_token", + "workPeriodId": "WorkPeriodId-5", + "httpStatus": 200, + "responseBody": { + "startDate": "2021-04-25", + "endDate": "2021-05-01", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 222, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null, + "payments": [] + } + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/get-workPeriod-successfully.json b/test/postman/testData/workPeriod/get-workPeriod-successfully.json new file mode 100644 index 00000000..8ab7bd71 --- /dev/null +++ b/test/postman/testData/workPeriod/get-workPeriod-successfully.json @@ -0,0 +1,85 @@ +[ + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 222, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + } + }, + { + "token": "copilot_token", + "workPeriodId": "WorkPeriodId-2", + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 2, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 111, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + } + }, + { + "token": "m2m_token", + "workPeriodId": "WorkPeriodId-3", + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-09", + "endDate": "2021-05-15", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 222, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + } + }, + { + "token": "user_token", + "workPeriodId": "WorkPeriodId-4", + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-09", + "endDate": "2021-05-15", + "daysWorked": 2, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 111, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + } + }, + { + "token": "manager_token", + "workPeriodId": "WorkPeriodId-5", + "httpStatus": 200, + "responseBody": { + "startDate": "2021-04-25", + "endDate": "2021-05-01", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 222, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + } + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/partially-update-workPeriod-already-exist.json b/test/postman/testData/workPeriod/partially-update-workPeriod-already-exist.json new file mode 100644 index 00000000..4bd72264 --- /dev/null +++ b/test/postman/testData/workPeriod/partially-update-workPeriod-already-exist.json @@ -0,0 +1,21 @@ +[ + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}" + }, + "httpStatus": 400, + "message": "Key \\(resource_booking_id, start_date, end_date\\)=\\([\\w\\W]+\\) already exists." + }, + { + "token": "m2m_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "startDate": "2021-05-09", + "endDate": "2021-05-15" + }, + "httpStatus": 400, + "message": "Key \\(resource_booking_id, start_date, end_date\\)=\\([\\w\\W]+\\) already exists." + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/partially-update-workPeriod-by-invalid-field.json b/test/postman/testData/workPeriod/partially-update-workPeriod-by-invalid-field.json new file mode 100644 index 00000000..3c86f787 --- /dev/null +++ b/test/postman/testData/workPeriod/partially-update-workPeriod-by-invalid-field.json @@ -0,0 +1,105 @@ +[ + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{invalid_id}}" + }, + "httpStatus": 400, + "message": "\"data.resourceBookingId\" must be a valid GUID" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "startDate": "05-16-2021" + }, + "httpStatus": 400, + "message": "\"data.startDate\" must be in YYYY-MM-DD format" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "startDate": "2021-05-16", + "endDate": "2021-22-05" + }, + "httpStatus": 400, + "message": "endDate should be always the next Saturday" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "startDate": "2021-05-15", + "endDate": "2021-05-22" + }, + "httpStatus": 400, + "message": "startDate should be always Sunday" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "startDate": "2021-05-22", + "endDate": "2021-05-16" + }, + "httpStatus": 400, + "message": "startDate should be always Sunday" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "startDate": "2021-05-16", + "endDate": "2021-05-21" + }, + "httpStatus": 400, + "message": "endDate should be always the next Saturday" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "daysWorked": "none" + }, + "httpStatus": 400, + "message": "\"data.daysWorked\" must be a number" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "memberRate": "number" + }, + "httpStatus": 400, + "message": "\"data.memberRate\" must be a number" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "customerRate": "number" + }, + "httpStatus": 400, + "message": "\"data.customerRate\" must be a number" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "paymentStatus": "wrong" + }, + "httpStatus": 400, + "message": "\"data.paymentStatus\" must be one of \\[pending, partially-completed, completed, cancelled\\]" + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "period": "period" + }, + "httpStatus": 400, + "message": "\"data.period\" is not allowed" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/partially-update-workPeriod-by-invalid-token.json b/test/postman/testData/workPeriod/partially-update-workPeriod-by-invalid-token.json new file mode 100644 index 00000000..4a4e88ef --- /dev/null +++ b/test/postman/testData/workPeriod/partially-update-workPeriod-by-invalid-token.json @@ -0,0 +1,42 @@ +[ + { + "token": "invalid_token_1", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "paymentStatus": "pending" + }, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "paymentStatus": "pending" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "paymentStatus": "pending" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "paymentStatus": "pending" + }, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/partially-update-workPeriod-by-no-admin.json b/test/postman/testData/workPeriod/partially-update-workPeriod-by-no-admin.json new file mode 100644 index 00000000..9c169666 --- /dev/null +++ b/test/postman/testData/workPeriod/partially-update-workPeriod-by-no-admin.json @@ -0,0 +1,26 @@ +[ + { + "token": "copilot_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "paymentStatus": "pending" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + }, + { + "token": "user_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "paymentStatus": "pending" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/partially-update-workPeriod-by-nonexistent-ids.json b/test/postman/testData/workPeriod/partially-update-workPeriod-by-nonexistent-ids.json new file mode 100644 index 00000000..299197e8 --- /dev/null +++ b/test/postman/testData/workPeriod/partially-update-workPeriod-by-nonexistent-ids.json @@ -0,0 +1,26 @@ +[ + { + "token": "m2m_token", + "workPeriodId": "missing_id", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "paymentStatus": "pending" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"WorkPeriod\" doesn't exists." + }, + { + "token": "m2m_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{missing_id}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "paymentStatus": "pending" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"ResourceBooking\" doesn't exists." + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/partially-update-workPeriod-successfully.json b/test/postman/testData/workPeriod/partially-update-workPeriod-successfully.json new file mode 100644 index 00000000..7591d95b --- /dev/null +++ b/test/postman/testData/workPeriod/partially-update-workPeriod-successfully.json @@ -0,0 +1,115 @@ +[ + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-1", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22" + }, + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 3, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "completed", + "projectId": 222, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "admin_token", + "workPeriodId": "WorkPeriodId-2", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-2}}", + "startDate": "2021-05-16", + "endDate": "2021-05-22" + }, + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-16", + "endDate": "2021-05-22", + "daysWorked": 5, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "partially-completed", + "projectId": 111, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "m2m_token", + "workPeriodId": "WorkPeriodId-3", + "requestBody": { + "daysWorked": 1, + "memberRate": 15, + "customerRate": 15, + "paymentStatus": "pending" + }, + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-09", + "endDate": "2021-05-15", + "daysWorked": 1, + "memberRate": 15, + "customerRate": 15, + "paymentStatus": "pending", + "projectId": 222, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "m2m_token", + "workPeriodId": "WorkPeriodId-4", + "requestBody": { + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending" + }, + "httpStatus": 200, + "responseBody": { + "startDate": "2021-05-09", + "endDate": "2021-05-15", + "daysWorked": 2, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 111, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "manager_token", + "workPeriodId": "WorkPeriodId-5", + "requestBody": { + "resourceBookingId": "{{ResourceBookingId-1}}", + "startDate": "2021-04-25", + "endDate": "2021-05-01", + "paymentStatus": "pending" + }, + "httpStatus": 200, + "responseBody": { + "startDate": "2021-04-25", + "endDate": "2021-05-01", + "daysWorked": 3, + "memberRate": 5, + "customerRate": 10, + "paymentStatus": "pending", + "projectId": 222, + "userHandle": "userHandle", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/search-workPeriod-by-invalid-field.json b/test/postman/testData/workPeriod/search-workPeriod-by-invalid-field.json new file mode 100644 index 00000000..06c31c25 --- /dev/null +++ b/test/postman/testData/workPeriod/search-workPeriod-by-invalid-field.json @@ -0,0 +1,58 @@ +[ + { + "token": "admin_token", + "requestParameters": { + "resourceBookingId": "{{invalid_id}}" + }, + "httpStatus": 400, + "message": "\"criteria.resourceBookingId\" must be a valid GUID" + }, + { + "token": "admin_token", + "requestParameters": { + "startDate": "05-16-2021" + }, + "httpStatus": 400, + "message": "\"criteria.startDate\" must be in YYYY-MM-DD format" + }, + { + "token": "admin_token", + "requestParameters": { + "daysWorked": 3 + }, + "httpStatus": 400, + "message": "\"criteria.daysWorked\" is not allowed" + }, + { + "token": "admin_token", + "requestParameters": { + "memberRate": 5 + }, + "httpStatus": 400, + "message": "\"criteria.memberRate\" is not allowed" + }, + { + "token": "admin_token", + "requestParameters": { + "customerRate": 5 + }, + "httpStatus": 400, + "message": "\"criteria.customerRate\" is not allowed" + }, + { + "token": "admin_token", + "requestParameters": { + "paymentStatus": "wrong" + }, + "httpStatus": 400, + "message": "\"criteria.paymentStatus\" must be one of \\[pending, partially-completed, completed, cancelled\\]" + }, + { + "token": "admin_token", + "requestParameters": { + "projectId": "five" + }, + "httpStatus": 400, + "message": "\"criteria.projectId\" must be a number" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/search-workPeriod-by-invalid-token.json b/test/postman/testData/workPeriod/search-workPeriod-by-invalid-token.json new file mode 100644 index 00000000..b7b1a28e --- /dev/null +++ b/test/postman/testData/workPeriod/search-workPeriod-by-invalid-token.json @@ -0,0 +1,22 @@ +[ + { + "token": "invalid_token_1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/search-workPeriod-by-non-member-of-project.json b/test/postman/testData/workPeriod/search-workPeriod-by-non-member-of-project.json new file mode 100644 index 00000000..9279caef --- /dev/null +++ b/test/postman/testData/workPeriod/search-workPeriod-by-non-member-of-project.json @@ -0,0 +1,22 @@ +[ + { + "token": "user_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "projectId": "222" + }, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + { + "token": "copilot_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "projectId": "222" + }, + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriod/search-workPeriod-successfully.json b/test/postman/testData/workPeriod/search-workPeriod-successfully.json new file mode 100644 index 00000000..b6c0eac6 --- /dev/null +++ b/test/postman/testData/workPeriod/search-workPeriod-successfully.json @@ -0,0 +1,92 @@ +[ + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "startDate", + "paymentStatus": "pending" + }, + "httpStatus": 200 + }, + { + "token": "admin_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "userHandle", + "startDate": "2021-05-23" + }, + "httpStatus": 200 + }, + { + "token": "manager_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "daysWorked", + "endDate": "2021-05-22" + }, + "httpStatus": 200 + }, + { + "token": "admin_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "startDate", + "userHandle": "userHandle" + }, + "httpStatus": 200 + }, + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "endDate", + "projectId": 111 + }, + "httpStatus": 200 + }, + { + "token": "admin_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "id", + "resourceBookingId": "{{ResourceBookingId-1}}" + }, + "httpStatus": 200 + }, + { + "token": "manager_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "startDate", + "resourceBookingIds": "{{ResourceBookingId-1}},{{ResourceBookingId-2}}" + }, + "httpStatus": 200 + }, + { + "token": "user_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "startDate", + "projectId": 111 + }, + "httpStatus": 200 + }, + { + "token": "copilot_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "startDate", + "projectId": 111 + }, + "httpStatus": 200 + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/create-workPeriodPayment-by-invalid-field.json b/test/postman/testData/workPeriodPayment/create-workPeriodPayment-by-invalid-field.json new file mode 100644 index 00000000..05e19ea8 --- /dev/null +++ b/test/postman/testData/workPeriodPayment/create-workPeriodPayment-by-invalid-field.json @@ -0,0 +1,28 @@ +[ + { + "token": "m2m_token", + "requestBody": { + "workPeriodId": "{{invalid_id}}" + }, + "httpStatus": 400, + "message": "\"workPeriodPayment.workPeriodId\" must be a valid GUID" + }, + { + "token": "m2m_token", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}", + "amount": -100 + }, + "httpStatus": 400, + "message": "\"workPeriodPayment.amount\" must be greater than 0" + }, + { + "token": "m2m_token", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}", + "status": "ready" + }, + "httpStatus": 400, + "message": "\"workPeriodPayment.status\" must be one of \\[completed, cancelled\\]" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/create-workPeriodPayment-by-invalid-token.json b/test/postman/testData/workPeriodPayment/create-workPeriodPayment-by-invalid-token.json new file mode 100644 index 00000000..3b70368a --- /dev/null +++ b/test/postman/testData/workPeriodPayment/create-workPeriodPayment-by-invalid-token.json @@ -0,0 +1,34 @@ +[ + { + "token": "invalid_token_1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/create-workPeriodPayment-by-missing-field.json b/test/postman/testData/workPeriodPayment/create-workPeriodPayment-by-missing-field.json new file mode 100644 index 00000000..84332461 --- /dev/null +++ b/test/postman/testData/workPeriodPayment/create-workPeriodPayment-by-missing-field.json @@ -0,0 +1,10 @@ +[ + { + "token": "m2m_token", + "requestBody": { + "amount": 100 + }, + "httpStatus": 400, + "message": "\"workPeriodPayment.workPeriodId\" is required" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/create-workPeriodPayment-by-no-admin.json b/test/postman/testData/workPeriodPayment/create-workPeriodPayment-by-no-admin.json new file mode 100644 index 00000000..46465293 --- /dev/null +++ b/test/postman/testData/workPeriodPayment/create-workPeriodPayment-by-no-admin.json @@ -0,0 +1,18 @@ +[ + { + "token": "copilot_token", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + }, + { + "token": "user_token", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/create-workPeriodPayment-by-nonexistent-ids.json b/test/postman/testData/workPeriodPayment/create-workPeriodPayment-by-nonexistent-ids.json new file mode 100644 index 00000000..59ba3b16 --- /dev/null +++ b/test/postman/testData/workPeriodPayment/create-workPeriodPayment-by-nonexistent-ids.json @@ -0,0 +1,10 @@ +[ + { + "token": "m2m_token", + "requestBody": { + "workPeriodId": "{{missing_id}}" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"WorkPeriod\" doesn't exists." + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/create-workPeriodPayment-successfully.json b/test/postman/testData/workPeriodPayment/create-workPeriodPayment-successfully.json new file mode 100644 index 00000000..f6480f3a --- /dev/null +++ b/test/postman/testData/workPeriodPayment/create-workPeriodPayment-successfully.json @@ -0,0 +1,92 @@ +[ + { + "token": "admin_token", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}", + "amount": 100, + "status": "completed" + }, + "httpStatus": 200, + "responseBody": { + "amount": 100, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + }, + "saveId": "WorkPeriodPaymentId-1" + }, + { + "token": "admin_token", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}", + "amount": 200, + "status": "completed" + }, + "httpStatus": 200, + "responseBody": { + "amount": 200, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + }, + "saveId": "WorkPeriodPaymentId-2" + }, + { + "token": "m2m_token", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}", + "amount": 300, + "status": "completed" + }, + "httpStatus": 200, + "responseBody": { + "amount": 300, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + }, + "saveId": "WorkPeriodPaymentId-3" + }, + { + "token": "m2m_token", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}", + "amount": 400, + "status": "completed" + }, + "httpStatus": 200, + "responseBody": { + "amount": 400, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + }, + "saveId": "WorkPeriodPaymentId-4" + }, + { + "token": "manager_token", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}", + "amount": 100, + "status": "completed" + }, + "httpStatus": 200, + "responseBody": { + "amount": 100, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + }, + "saveId": "WorkPeriodPaymentId-5" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/create-workPeriodPayment-without-billing-account.json b/test/postman/testData/workPeriodPayment/create-workPeriodPayment-without-billing-account.json new file mode 100644 index 00000000..ee8e43c8 --- /dev/null +++ b/test/postman/testData/workPeriodPayment/create-workPeriodPayment-without-billing-account.json @@ -0,0 +1,10 @@ +[ + { + "token": "m2m_token", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-2}}" + }, + "httpStatus": 409, + "message": "id: [\\w\\W]+ \"ResourceBooking\" Billing account is not assigned to the resource booking" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-by-invalid-field.json b/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-by-invalid-field.json new file mode 100644 index 00000000..7f797f59 --- /dev/null +++ b/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-by-invalid-field.json @@ -0,0 +1,31 @@ +[ + { + "token": "m2m_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{invalid_id}}" + }, + "httpStatus": 400, + "message": "\"data.workPeriodId\" must be a valid GUID" + }, + { + "token": "m2m_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}", + "amount": -100 + }, + "httpStatus": 400, + "message": "\"data.amount\" must be greater than 0" + }, + { + "token": "m2m_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}", + "status": "ready" + }, + "httpStatus": 400, + "message": "\"data.status\" must be one of \\[completed, cancelled\\]" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-by-invalid-token.json b/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-by-invalid-token.json new file mode 100644 index 00000000..5e8f01c4 --- /dev/null +++ b/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-by-invalid-token.json @@ -0,0 +1,38 @@ +[ + { + "token": "invalid_token_1", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-by-missing-field.json b/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-by-missing-field.json new file mode 100644 index 00000000..3fc7a456 --- /dev/null +++ b/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-by-missing-field.json @@ -0,0 +1,11 @@ +[ + { + "token": "m2m_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "amount": 100 + }, + "httpStatus": 400, + "message": "\"data.workPeriodId\" is required" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-by-no-admin.json b/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-by-no-admin.json new file mode 100644 index 00000000..7f31b2bd --- /dev/null +++ b/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-by-no-admin.json @@ -0,0 +1,20 @@ +[ + { + "token": "copilot_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + }, + { + "token": "user_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-by-nonexistent-ids.json b/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-by-nonexistent-ids.json new file mode 100644 index 00000000..3347437a --- /dev/null +++ b/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-by-nonexistent-ids.json @@ -0,0 +1,20 @@ +[ + { + "token": "m2m_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{missing_id}}" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"WorkPeriod\" doesn't exists." + }, + { + "token": "m2m_token", + "workPeriodPaymentId": "missing_id", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"WorkPeriodPayment\" doesn't exists" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-successfully.json b/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-successfully.json new file mode 100644 index 00000000..def80923 --- /dev/null +++ b/test/postman/testData/workPeriodPayment/fully-update-workPeriodPayment-successfully.json @@ -0,0 +1,92 @@ +[ + { + "token": "admin_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}", + "amount": 150, + "status": "completed" + }, + "httpStatus": 200, + "responseBody": { + "amount": 150, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "admin_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-2", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}", + "amount": 250, + "status": "completed" + }, + "httpStatus": 200, + "responseBody": { + "amount": 250, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "m2m_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-3", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}", + "amount": 350, + "status": "completed" + }, + "httpStatus": 200, + "responseBody": { + "amount": 350, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "m2m_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-4", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}", + "amount": 450, + "status": "completed" + }, + "httpStatus": 200, + "responseBody": { + "amount": 450, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "manager_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-5", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}", + "amount": 150, + "status": "completed" + }, + "httpStatus": 200, + "responseBody": { + "amount": 150, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/get-workPeriodPayment-by-invalid-id.json b/test/postman/testData/workPeriodPayment/get-workPeriodPayment-by-invalid-id.json new file mode 100644 index 00000000..0e39a19a --- /dev/null +++ b/test/postman/testData/workPeriodPayment/get-workPeriodPayment-by-invalid-id.json @@ -0,0 +1,14 @@ +[ + { + "token": "m2m_token", + "workPeriodPaymentId": "missing_id", + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"WorkPeriodPayment\" not found" + }, + { + "token": "m2m_token", + "workPeriodPaymentId": "invalid_id", + "httpStatus": 400, + "message": "\"id\" must be a valid GUID" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/get-workPeriodPayment-by-invalid-token.json b/test/postman/testData/workPeriodPayment/get-workPeriodPayment-by-invalid-token.json new file mode 100644 index 00000000..281f6256 --- /dev/null +++ b/test/postman/testData/workPeriodPayment/get-workPeriodPayment-by-invalid-token.json @@ -0,0 +1,26 @@ +[ + { + "token": "invalid_token_1", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/get-workPeriodPayment-by-no-admin.json b/test/postman/testData/workPeriodPayment/get-workPeriodPayment-by-no-admin.json new file mode 100644 index 00000000..4a24f12f --- /dev/null +++ b/test/postman/testData/workPeriodPayment/get-workPeriodPayment-by-no-admin.json @@ -0,0 +1,14 @@ +[ + { + "token": "user_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + }, + { + "token": "copilot_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/get-workPeriodPayment-successfully-fromDb.json b/test/postman/testData/workPeriodPayment/get-workPeriodPayment-successfully-fromDb.json new file mode 100644 index 00000000..4967501c --- /dev/null +++ b/test/postman/testData/workPeriodPayment/get-workPeriodPayment-successfully-fromDb.json @@ -0,0 +1,67 @@ +[ + { + "token": "admin_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "httpStatus": 200, + "responseBody": { + "amount": 100, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + } + }, + { + "token": "m2m_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-2", + "httpStatus": 200, + "responseBody": { + "amount": 200, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + } + }, + { + "token": "admin_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-3", + "httpStatus": 200, + "responseBody": { + "amount": 300, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + } + }, + { + "token": "m2m_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-4", + "httpStatus": 200, + "responseBody": { + "amount": 400, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + } + }, + { + "token": "manager_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-5", + "httpStatus": 200, + "responseBody": { + "amount": 100, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + } + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/get-workPeriodPayment-successfully.json b/test/postman/testData/workPeriodPayment/get-workPeriodPayment-successfully.json new file mode 100644 index 00000000..4967501c --- /dev/null +++ b/test/postman/testData/workPeriodPayment/get-workPeriodPayment-successfully.json @@ -0,0 +1,67 @@ +[ + { + "token": "admin_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "httpStatus": 200, + "responseBody": { + "amount": 100, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + } + }, + { + "token": "m2m_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-2", + "httpStatus": 200, + "responseBody": { + "amount": 200, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + } + }, + { + "token": "admin_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-3", + "httpStatus": 200, + "responseBody": { + "amount": 300, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + } + }, + { + "token": "m2m_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-4", + "httpStatus": 200, + "responseBody": { + "amount": 400, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + } + }, + { + "token": "manager_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-5", + "httpStatus": 200, + "responseBody": { + "amount": 100, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + } + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/partially-update-workPeriodPayment-by-invalid-field.json b/test/postman/testData/workPeriodPayment/partially-update-workPeriodPayment-by-invalid-field.json new file mode 100644 index 00000000..7f797f59 --- /dev/null +++ b/test/postman/testData/workPeriodPayment/partially-update-workPeriodPayment-by-invalid-field.json @@ -0,0 +1,31 @@ +[ + { + "token": "m2m_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{invalid_id}}" + }, + "httpStatus": 400, + "message": "\"data.workPeriodId\" must be a valid GUID" + }, + { + "token": "m2m_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}", + "amount": -100 + }, + "httpStatus": 400, + "message": "\"data.amount\" must be greater than 0" + }, + { + "token": "m2m_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}", + "status": "ready" + }, + "httpStatus": 400, + "message": "\"data.status\" must be one of \\[completed, cancelled\\]" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/partially-update-workPeriodPayment-by-invalid-token.json b/test/postman/testData/workPeriodPayment/partially-update-workPeriodPayment-by-invalid-token.json new file mode 100644 index 00000000..5e8f01c4 --- /dev/null +++ b/test/postman/testData/workPeriodPayment/partially-update-workPeriodPayment-by-invalid-token.json @@ -0,0 +1,38 @@ +[ + { + "token": "invalid_token_1", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/partially-update-workPeriodPayment-by-no-admin.json b/test/postman/testData/workPeriodPayment/partially-update-workPeriodPayment-by-no-admin.json new file mode 100644 index 00000000..7f31b2bd --- /dev/null +++ b/test/postman/testData/workPeriodPayment/partially-update-workPeriodPayment-by-no-admin.json @@ -0,0 +1,20 @@ +[ + { + "token": "copilot_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + }, + { + "token": "user_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/partially-update-workPeriodPayment-by-nonexistent-ids.json b/test/postman/testData/workPeriodPayment/partially-update-workPeriodPayment-by-nonexistent-ids.json new file mode 100644 index 00000000..3347437a --- /dev/null +++ b/test/postman/testData/workPeriodPayment/partially-update-workPeriodPayment-by-nonexistent-ids.json @@ -0,0 +1,20 @@ +[ + { + "token": "m2m_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "workPeriodId": "{{missing_id}}" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"WorkPeriod\" doesn't exists." + }, + { + "token": "m2m_token", + "workPeriodPaymentId": "missing_id", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 404, + "message": "id: [\\w\\W]+ \"WorkPeriodPayment\" doesn't exists" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/partially-update-workPeriodPayment-successfully.json b/test/postman/testData/workPeriodPayment/partially-update-workPeriodPayment-successfully.json new file mode 100644 index 00000000..163d22a9 --- /dev/null +++ b/test/postman/testData/workPeriodPayment/partially-update-workPeriodPayment-successfully.json @@ -0,0 +1,86 @@ +[ + { + "token": "admin_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-1", + "requestBody": { + "amount": 200 + }, + "httpStatus": 200, + "responseBody": { + "amount": 200, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "admin_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-2", + "requestBody": { + "amount": 300, + "status": "cancelled" + }, + "httpStatus": 200, + "responseBody": { + "amount": 300, + "status": "cancelled", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "m2m_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-3", + "requestBody": { + "amount": 350, + "status": "cancelled" + }, + "httpStatus": 200, + "responseBody": { + "amount": 350, + "status": "cancelled", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "m2m_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-4", + "requestBody": { + "workPeriodId": "{{WorkPeriodId-1}}", + "amount": 450, + "status": "cancelled" + }, + "httpStatus": 200, + "responseBody": { + "amount": 450, + "status": "cancelled", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + }, + { + "token": "manager_token", + "workPeriodPaymentId": "WorkPeriodPaymentId-5", + "requestBody": { + "amount": 200 + }, + "httpStatus": 200, + "responseBody": { + "amount": 200, + "status": "completed", + "billingAccountId": 80000071, + "challengeId": "00000000-0000-0000-0000-000000000000", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": "00000000-0000-0000-0000-000000000000" + } + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/search-workPeriodPayment-by-invalid-field.json b/test/postman/testData/workPeriodPayment/search-workPeriodPayment-by-invalid-field.json new file mode 100644 index 00000000..3cafb6d8 --- /dev/null +++ b/test/postman/testData/workPeriodPayment/search-workPeriodPayment-by-invalid-field.json @@ -0,0 +1,58 @@ +[ + { + "token": "admin_token", + "requestParameters": { + "page": 0 + }, + "httpStatus": 400, + "message": "\"criteria.page\" must be greater than or equal to 1" + }, + { + "token": "admin_token", + "requestParameters": { + "perPage": 0 + }, + "httpStatus": 400, + "message": "\"criteria.perPage\" must be greater than or equal to 1" + }, + { + "token": "admin_token", + "requestParameters": { + "sortBy": "id" + }, + "httpStatus": 400, + "message": "\"criteria.sortBy\" must be one of \\[status, amount, createdAt, updatedAt\\]" + }, + { + "token": "admin_token", + "requestParameters": { + "sortOrder": "normal" + }, + "httpStatus": 400, + "message": "\"criteria.sortOrder\" must be one of \\[desc, asc\\]" + }, + { + "token": "admin_token", + "requestParameters": { + "status": "started" + }, + "httpStatus": 400, + "message": "\"criteria.status\" must be one of \\[completed, cancelled\\]" + }, + { + "token": "admin_token", + "requestParameters": { + "workPeriodId": "wrong" + }, + "httpStatus": 400, + "message": "\"criteria.workPeriodId\" must be a valid GUID" + }, + { + "token": "admin_token", + "requestParameters": { + "workPeriodIds": "id" + }, + "httpStatus": 400, + "message": "workPeriodId id is not a valid uuid" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/search-workPeriodPayment-by-invalid-token.json b/test/postman/testData/workPeriodPayment/search-workPeriodPayment-by-invalid-token.json new file mode 100644 index 00000000..b7b1a28e --- /dev/null +++ b/test/postman/testData/workPeriodPayment/search-workPeriodPayment-by-invalid-token.json @@ -0,0 +1,22 @@ +[ + { + "token": "invalid_token_1", + "httpStatus": 401, + "message": "Invalid Token." + }, + { + "token": "invalid_token_2", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_3", + "httpStatus": 401, + "message": "No token provided." + }, + { + "token": "invalid_token_4", + "httpStatus": 401, + "message": "Failed to authenticate token." + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/search-workPeriodPayment-by-no-admin.json b/test/postman/testData/workPeriodPayment/search-workPeriodPayment-by-no-admin.json new file mode 100644 index 00000000..46766da6 --- /dev/null +++ b/test/postman/testData/workPeriodPayment/search-workPeriodPayment-by-no-admin.json @@ -0,0 +1,12 @@ +[ + { + "token": "user_token", + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + }, + { + "token": "copilot_token", + "httpStatus": 403, + "message": "You are not allowed to perform this action!" + } +] \ No newline at end of file diff --git a/test/postman/testData/workPeriodPayment/search-workPeriodPayment-successfully.json b/test/postman/testData/workPeriodPayment/search-workPeriodPayment-successfully.json new file mode 100644 index 00000000..75626ea5 --- /dev/null +++ b/test/postman/testData/workPeriodPayment/search-workPeriodPayment-successfully.json @@ -0,0 +1,32 @@ +[ + { + "token": "m2m_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "amount", + "workPeriodId": "{{WorkPeriodId-1}}" + }, + "httpStatus": 200 + }, + { + "token": "admin_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "status", + "workPeriodIds": "{{WorkPeriodId-1}},{{WorkPeriodId-2}}" + }, + "httpStatus": 200 + }, + { + "token": "manager_token", + "requestParameters": { + "page": 1, + "perPage": 5, + "sortBy": "createdAt", + "status": "completed" + }, + "httpStatus": 200 + } +] \ No newline at end of file diff --git a/test/postman/testHelper.js b/test/postman/testHelper.js new file mode 100644 index 00000000..1fb1cdb7 --- /dev/null +++ b/test/postman/testHelper.js @@ -0,0 +1,141 @@ +/** + * This file defines methods for getting access tokens + */ + +const _ = require('lodash') +const axios = require('axios') +const config = require('config') +const m2mAuth = require('tc-core-library-js').auth.m2m +const m2m = m2mAuth(_.pick(config, ['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME', 'AUTH0_PROXY_SERVER_URL'])) + +/** + * Get m2mToken + * @returns {String} the M2MToken + */ +async function getM2MToken () { + return m2m.getMachineToken(config.AUTH0_CLIENT_ID, config.AUTH0_CLIENT_SECRET) +} + +/** + * Get user tokens from V2 API + * @param {String} userName the user name + * @param {String} userPassword the user password + * @returns {Object} the user tokens + */ +async function getUserTokenV2 (userName, userPassword) { + const { data } = await axios({ + method: 'post', + url: config.AUTH_V2_URL, + data: { + username: userName, + password: userPassword, + client_id: config.AUTH_V2_CLIENT_ID, + sso: false, + scope: 'openid profile offline_access', + response_type: 'token', + connection: 'TC-User-Database', + grant_type: 'password', + device: 'Browser' + }, + headers: { + 'cache-control': 'no-cache', + 'content-type': 'application/json' + } + }) + return data +} + +/** + * Get user token from V3 API + * @param {String} idToken the id_token + * @param {String} refreshToken the refresh_token + * @returns {String} the user token + */ +async function getUserTokenV3 (idToken, refreshToken) { + const { data } = await axios({ + method: 'post', + url: config.AUTH_V3_URL, + data: { + param: { + externalToken: idToken, + refreshToken: refreshToken + } + }, + headers: { + 'cache-control': 'no-cache', + authorization: `Bearer ${this.v2_token}`, + 'content-type': 'application/json;charset=UTF-8' + } + }) + return data +} + +/** + * Get admin token from V3 API + * @returns {String} The admin token + */ +async function getAdminToken () { + const v2 = await getUserTokenV2(config.ADMIN_CREDENTIALS_USERNAME, config.ADMIN_CREDENTIALS_PASSWORD) + const v3 = await getUserTokenV3(v2.id_token, v2.refresh_token) + return _.get(v3, 'result.content.token') +} + +/** + * Get manager token from V3 API + * @returns {String} The manager token + */ +async function getManagerToken () { + const v2 = await getUserTokenV2(config.MANAGER_CREDENTIALS_USERNAME, config.MANAGER_CREDENTIALS_PASSWORD) + const v3 = await getUserTokenV3(v2.id_token, v2.refresh_token) + return _.get(v3, 'result.content.token') +} + +/** + * Get copilot token from V3 API + * @returns {String} The copilot token + */ +async function getCopilotToken () { + const v2 = await getUserTokenV2(config.COPILOT_CREDENTIALS_USERNAME, config.COPILOT_CREDENTIALS_PASSWORD) + const v3 = await getUserTokenV3(v2.id_token, v2.refresh_token) + return _.get(v3, 'result.content.token') +} + +/** + * Get regular user token from V3 API + * @returns {String} The user token + */ +async function getUserToken () { + const v2 = await getUserTokenV2(config.USER_CREDENTIALS_USERNAME, config.USER_CREDENTIALS_PASSWORD) + const v3 = await getUserTokenV3(v2.id_token, v2.refresh_token) + return _.get(v3, 'result.content.token') +} + +/** + * Uses superagent to proxy post request + * @param {String} url the url + * @param {Object} body the request body, optional + * @returns {Object} the response + */ +async function postRequest (url, data = {}) { + const m2mToken = await getM2MToken() + const { data: response } = await axios({ + method: 'post', + url: url, + data, + headers: { + Accept: 'application/json', + Authorization: `Bearer ${m2mToken}`, + 'Content-Type': 'application/json' + } + }) + return response +} + +module.exports = { + getM2MToken, + getAdminToken, + getManagerToken, + getCopilotToken, + getUserToken, + postRequest +} diff --git a/test/postman/topcoder-bookings-api.postman_collection.json b/test/postman/topcoder-bookings-api.postman_collection.json new file mode 100644 index 00000000..838d0962 --- /dev/null +++ b/test/postman/topcoder-bookings-api.postman_collection.json @@ -0,0 +1,12416 @@ +{ + "info": { + "_postman_id": "fe3226aa-80f8-4009-8dfa-5db4bf3788b9", + "name": "Topcoder-bookings-api", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "Health", + "item": [ + { + "name": "health check", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{URL}}/health", + "host": [ + "{{URL}}" + ], + "path": [ + "health" + ] + } + }, + "response": [] + }, + { + "name": "wait for es processor", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "function sleep (ms) {\r", + " return new Promise(resolve => setTimeout(resolve, ms))\r", + "}\r", + "sleep(10000)" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/health", + "host": [ + "{{URL}}" + ], + "path": [ + "health" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Jobs", + "item": [ + { + "name": "Create Job", + "item": [ + { + "name": "create job successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " if(pm.response.status === \"OK\"){\r", + " const response = pm.response.json()\r", + " pm.environment.set(iterationData.get('saveId'), response.id);\r", + " delete response.id\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " delete response.createdBy\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + " }\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs" + ] + } + }, + "response": [] + }, + { + "name": "create job by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs" + ] + } + }, + "response": [] + }, + { + "name": "create job by non member of project", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs" + ] + } + }, + "response": [] + }, + { + "name": "create job by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs" + ] + } + }, + "response": [] + }, + { + "name": "create job by missing field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Get Job", + "item": [ + { + "name": "get job successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.externalId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " delete response.createdBy\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get job successfully fromDb", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.externalId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " delete response.createdBy\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}?fromDb=true", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ], + "query": [ + { + "key": "fromDb", + "value": "true" + } + ] + } + }, + "response": [] + }, + { + "name": "get job by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get job by non member of project", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get job by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "search jobs successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs" + ] + } + }, + "response": [] + }, + { + "name": "search jobs by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs" + ] + } + }, + "response": [] + }, + { + "name": "search jobs by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs" + ] + } + }, + "response": [] + }, + { + "name": "search jobs by non member of project", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Update Job", + "item": [ + { + "name": "fully update job successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " delete response.createdBy\r", + " delete response.updatedBy\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update job by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update job by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update job by missing field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update job by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update job successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " delete response.createdBy\r", + " delete response.updatedBy\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update job by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update job by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update job by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Delete Job", + "item": [ + { + "name": "delete job by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "delete job by no admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "delete job by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "delete job successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + } + ] + } + ] + }, + { + "name": "Job Candidate", + "item": [ + { + "name": "Create Job Candidate", + "item": [ + { + "name": "create job candidate successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " if(pm.response.status === \"OK\"){\r", + " const response = pm.response.json()\r", + " pm.environment.set(iterationData.get('saveId'), response.id);\r", + " delete response.id\r", + " delete response.jobId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " delete response.createdBy\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + " }\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates" + ] + } + }, + "response": [] + }, + { + "name": "create job candidate by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates" + ] + } + }, + "response": [] + }, + { + "name": "create job candidate by no admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates" + ] + } + }, + "response": [] + }, + { + "name": "create job candidate by nonexistent ids", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates" + ] + } + }, + "response": [] + }, + { + "name": "create job candidate by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates" + ] + } + }, + "response": [] + }, + { + "name": "create job candidate by missing field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Get Job Candidate", + "item": [ + { + "name": "get job candidate successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.jobId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " delete response.createdBy\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get job candidate successfully fromDb", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.jobId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " delete response.createdBy\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}?fromDb=true", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ], + "query": [ + { + "key": "fromDb", + "value": "true" + } + ] + } + }, + "response": [] + }, + { + "name": "get job candidate by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get job candidate by non member of project", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get job candidate by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "search job candidates successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates" + ] + } + }, + "response": [] + }, + { + "name": "search job candidates by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates" + ] + } + }, + "response": [] + }, + { + "name": "search job candidates by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates" + ] + } + }, + "response": [] + }, + { + "name": "search job candidates by non member of project", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Update Job Candidate", + "item": [ + { + "name": "fully update job candidate successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.jobId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " delete response.createdBy\r", + " delete response.updatedBy\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update job candidate by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update job candidate by non member of project", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update job candidate by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update job candidate by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update job candidate by missing field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update job candidate successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.jobId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " delete response.createdBy\r", + " delete response.updatedBy\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update job candidate by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update job candidate by no member of project", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update job candidate by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update job candidate by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Delete Job Candidate", + "item": [ + { + "name": "delete job candidate by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "delete job candidate by no admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "delete job candidate by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "delete job candidate successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}" + ] + } + }, + "response": [] + } + ] + } + ] + }, + { + "name": "Resource Booking", + "item": [ + { + "name": "Create Resource Booking", + "item": [ + { + "name": "create resource booking successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " if(pm.response.status === \"OK\"){\r", + " const response = pm.response.json()\r", + " pm.environment.set(iterationData.get('saveId'), response.id);\r", + " delete response.id\r", + " delete response.jobId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " delete response.createdBy\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + " }\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings" + ] + } + }, + "response": [] + }, + { + "name": "create resource booking by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings" + ] + } + }, + "response": [] + }, + { + "name": "create resource booking by no admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings" + ] + } + }, + "response": [] + }, + { + "name": "create resource booking by nonexistent ids", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings" + ] + } + }, + "response": [] + }, + { + "name": "create resource booking by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings" + ] + } + }, + "response": [] + }, + { + "name": "create resource booking by missing field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Get Resource Booking", + "item": [ + { + "name": "add dates to resource booking", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.jobId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " delete response.createdBy\r", + " delete response.updatedBy\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get resource booking successfully fromDb", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.jobId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " delete response.createdBy\r", + " delete response.updatedBy\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}?fromDb=true", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ], + "query": [ + { + "key": "fromDb", + "value": "true" + } + ] + } + }, + "response": [] + }, + { + "name": "get resource booking successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.jobId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " delete response.createdBy\r", + " delete response.updatedBy\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get resource booking successfully fromDb with parameters", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}?fromDb=true", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ], + "query": [ + { + "key": "fromDb", + "value": "true" + } + ] + } + }, + "response": [] + }, + { + "name": "get resource booking successfully with parameters", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get resource booking by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get resource booking by non member of project", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get resource booking by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get resource booking by invalid parameters", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "search resource booking successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings" + ] + } + }, + "response": [] + }, + { + "name": "search resource booking by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings" + ] + } + }, + "response": [] + }, + { + "name": "search resource booking by non member of project", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings" + ] + } + }, + "response": [] + }, + { + "name": "search resource booking by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Update Resource Booking", + "item": [ + { + "name": "fully update resource booking successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.jobId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update resource booking by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update resource booking by no admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update resource booking by nonexistent ids", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update resource booking by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update resource booking by missing field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update resource booking successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.jobId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update resource booking by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update resource booking by no admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update resource booking by nonexistent ids", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update resource booking by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Delete Resource Booking", + "item": [ + { + "name": "delete resource booking by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "delete resource booking by no admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "delete resource booking by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "delete resource booking successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/resourceBookings/{{{{resourceBookingId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "resourceBookings", + "{{{{resourceBookingId}}}}" + ] + } + }, + "response": [] + } + ] + } + ] + }, + { + "name": "Work Period", + "item": [ + { + "name": "Create Work Period", + "item": [ + { + "name": "create work period successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " if(pm.response.status === \"OK\"){\r", + " const response = pm.response.json()\r", + " pm.environment.set(iterationData.get('saveId'), response.id);\r", + " delete response.id\r", + " delete response.resourceBookingId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + " }\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods" + ] + } + }, + "response": [] + }, + { + "name": "create work period by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods" + ] + } + }, + "response": [] + }, + { + "name": "create work period by no admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods" + ] + } + }, + "response": [] + }, + { + "name": "create work period by nonexistent ids", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods" + ] + } + }, + "response": [] + }, + { + "name": "create work period by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods" + ] + } + }, + "response": [] + }, + { + "name": "create work period by missing field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Get Work Period", + "item": [ + { + "name": "get work period successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.resourceBookingId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get work period successfully fomDb", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.resourceBookingId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}?fromDb=true", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ], + "query": [ + { + "key": "fromDb", + "value": "true" + } + ] + } + }, + "response": [] + }, + { + "name": "get work period by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get work period by non member of project", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get work period by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "search work period successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods" + ] + } + }, + "response": [] + }, + { + "name": "search work period by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods" + ] + } + }, + "response": [] + }, + { + "name": "search work period by non member of project", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods" + ] + } + }, + "response": [] + }, + { + "name": "search work period by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Update Work Period", + "item": [ + { + "name": "fully update work period successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.resourceBookingId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update work period by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update work period by no admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update work period already exists", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update work period by nonexistent ids", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update work period by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update work period by missing field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update work period successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.resourceBookingId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update work period by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update work period by no admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update work period already exists", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update work period by nonexistent ids", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update work period by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Delete Work Period", + "item": [ + { + "name": "delete work period by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "delete work period by no admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "delete work period by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "delete work period with paid status", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "delete work period successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-periods/{{{{workPeriodId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-periods", + "{{{{workPeriodId}}}}" + ] + } + }, + "response": [] + } + ] + } + ] + }, + { + "name": "Work Period Payment", + "item": [ + { + "name": "Create Work Period Payment", + "item": [ + { + "name": "create work period payment successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " if(pm.response.status === \"OK\"){\r", + " const response = pm.response.json()\r", + " pm.environment.set(iterationData.get('saveId'), response.id);\r", + " delete response.id\r", + " delete response.workPeriodId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + " }\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments" + ] + } + }, + "response": [] + }, + { + "name": "create work period payment by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments" + ] + } + }, + "response": [] + }, + { + "name": "create work period payment by no admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments" + ] + } + }, + "response": [] + }, + { + "name": "create work period payment by nonexistent ids", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments" + ] + } + }, + "response": [] + }, + { + "name": "create work period payment without billing account", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments" + ] + } + }, + "response": [] + }, + { + "name": "create work period payment by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments" + ] + } + }, + "response": [] + }, + { + "name": "create work period payment by missing field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Get Work Period Payment", + "item": [ + { + "name": "get work period payment successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "console.log(JSON.stringify(pm.response.json()))", + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.workPeriodId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments/{{{{workPeriodPaymentId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments", + "{{{{workPeriodPaymentId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get work period payment successfully fromDb", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.workPeriodId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments/{{{{workPeriodPaymentId}}}}?fromDb=true", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments", + "{{{{workPeriodPaymentId}}}}" + ], + "query": [ + { + "key": "fromDb", + "value": "true" + } + ] + } + }, + "response": [] + }, + { + "name": "get work period payment by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments/{{{{workPeriodPaymentId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments", + "{{{{workPeriodPaymentId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get work period payment by no admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments/{{{{workPeriodPaymentId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments", + "{{{{workPeriodPaymentId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get work period payment by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments/{{{{workPeriodPaymentId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments", + "{{{{workPeriodPaymentId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "search work period payment successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments" + ] + } + }, + "response": [] + }, + { + "name": "search work period payment by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments" + ] + } + }, + "response": [] + }, + { + "name": "search work period payment by no admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments" + ] + } + }, + "response": [] + }, + { + "name": "search work period payment by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Update Work Period Payment", + "item": [ + { + "name": "fully update work period payment successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.workPeriodId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments/{{{{workPeriodPaymentId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments", + "{{{{workPeriodPaymentId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update work period payment by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments/{{{{workPeriodPaymentId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments", + "{{{{workPeriodPaymentId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update work period payment by no admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments/{{{{workPeriodPaymentId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments", + "{{{{workPeriodPaymentId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update work period payment by nonexistent ids", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments/{{{{workPeriodPaymentId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments", + "{{{{workPeriodPaymentId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update work period payment by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments/{{{{workPeriodPaymentId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments", + "{{{{workPeriodPaymentId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "fully update work period payment by missing field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments/{{{{workPeriodPaymentId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments", + "{{{{workPeriodPaymentId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update work period payment successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.workPeriodId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments/{{{{workPeriodPaymentId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments", + "{{{{workPeriodPaymentId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update work period payment by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments/{{{{workPeriodPaymentId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments", + "{{{{workPeriodPaymentId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update work period payment by no admin", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments/{{{{workPeriodPaymentId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments", + "{{{{workPeriodPaymentId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update work period payment by nonexistent ids", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments/{{{{workPeriodPaymentId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments", + "{{{{workPeriodPaymentId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "partially update work period payment by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/work-period-payments/{{{{workPeriodPaymentId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "work-period-payments", + "{{{{workPeriodPaymentId}}}}" + ] + } + }, + "response": [] + } + ] + } + ] + }, + { + "name": "Interview", + "item": [ + { + "name": "Request Interview", + "item": [ + { + "name": "request interview successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " if(pm.response.status === \"OK\"){\r", + " const response = pm.response.json()\r", + " pm.environment.set(iterationData.get('saveId'), response.id);\r", + " delete response.id\r", + " delete response.jobCandidateId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + " }\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/requestInterview", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "requestInterview" + ] + } + }, + "response": [] + }, + { + "name": "request interview by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/requestInterview", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "requestInterview" + ] + } + }, + "response": [] + }, + { + "name": "request interview by non member of project", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/requestInterview", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "requestInterview" + ] + } + }, + "response": [] + }, + { + "name": "request interview exceeded", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/requestInterview", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "requestInterview" + ] + } + }, + "response": [] + }, + { + "name": "request interview by nonexistent ids", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/requestInterview", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "requestInterview" + ] + } + }, + "response": [] + }, + { + "name": "request interview by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/requestInterview", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "requestInterview" + ] + } + }, + "response": [] + }, + { + "name": "request interview by missing field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/requestInterview", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "requestInterview" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Get Interview", + "item": [ + { + "name": "get interview by id successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.jobCandidateId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/getInterview/{{{{interviewId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "getInterview", + "{{{{interviewId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get interview by id successfully fromDb", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.jobCandidateId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/getInterview/{{{{interviewId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "getInterview", + "{{{{interviewId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get interview by id by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/getInterview/{{{{interviewId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "getInterview", + "{{{{interviewId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get interview by id by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/getInterview/{{{{interviewId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "getInterview", + "{{{{interviewId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get interview by id by non member of project", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/getInterview/{{{{interviewId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "getInterview", + "{{{{interviewId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get interview by round successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.jobCandidateId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/interviews/{{interviewRound}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "interviews", + "{{interviewRound}}" + ] + } + }, + "response": [] + }, + { + "name": "get interview by round successfully fromDb", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.jobCandidateId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/interviews/{{interviewRound}}?fromDb=true", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "interviews", + "{{interviewRound}}" + ], + "query": [ + { + "key": "fromDb", + "value": "true" + } + ] + } + }, + "response": [] + }, + { + "name": "get interview by round by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/interviews/{{interviewRound}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "interviews", + "{{interviewRound}}" + ] + } + }, + "response": [] + }, + { + "name": "get interview by round by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/interviews/{{interviewRound}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "interviews", + "{{interviewRound}}" + ] + } + }, + "response": [] + }, + { + "name": "get interview by round by non member of project", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/interviews/{{interviewRound}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "interviews", + "{{interviewRound}}" + ] + } + }, + "response": [] + }, + { + "name": "search interviews successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/interviews", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "interviews" + ] + } + }, + "response": [] + }, + { + "name": "search interviews by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/interviews", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "interviews" + ] + } + }, + "response": [] + }, + { + "name": "search interviews by non member of project", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/interviews", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "interviews" + ] + } + }, + "response": [] + }, + { + "name": "search interviews by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/interviews", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "interviews" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Update Interview", + "item": [ + { + "name": "update interview by id successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.jobCandidateId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/updateInterview/{{{{interviewId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "updateInterview", + "{{{{interviewId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "update interview by id by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/updateInterview/{{{{interviewId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "updateInterview", + "{{{{interviewId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "update interview by id by nonexistent ids", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/updateInterview/{{{{interviewId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "updateInterview", + "{{{{interviewId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "update interview by id by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/updateInterview/{{{{interviewId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "updateInterview", + "{{{{interviewId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "update interview by id by missing field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/updateInterview/{{{{interviewId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "updateInterview", + "{{{{interviewId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "update completed interview by id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/updateInterview/{{{{interviewId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "updateInterview", + "{{{{interviewId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "update completed interview by round", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/updateInterview/{{interviewRound}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "updateInterview", + "{{interviewRound}}" + ] + } + }, + "response": [] + }, + { + "name": "update interview by round successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " delete response.jobCandidateId\r", + " delete response.createdAt\r", + " delete response.updatedAt\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/updateInterview/{{interviewRound}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "updateInterview", + "{{interviewRound}}" + ] + } + }, + "response": [] + }, + { + "name": "update interview by round by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/updateInterview/{{interviewRound}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "updateInterview", + "{{interviewRound}}" + ] + } + }, + "response": [] + }, + { + "name": "update interview by round by non existent ids", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/updateInterview/{{interviewRound}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "updateInterview", + "{{interviewRound}}" + ] + } + }, + "response": [] + }, + { + "name": "update interview by round by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/updateInterview/{{interviewRound}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "updateInterview", + "{{interviewRound}}" + ] + } + }, + "response": [] + }, + { + "name": "update interview by round by missing field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/jobCandidates/{{{{jobCandidateId}}}}/updateInterview/{{interviewRound}}", + "host": [ + "{{URL}}" + ], + "path": [ + "jobCandidates", + "{{{{jobCandidateId}}}}", + "updateInterview", + "{{interviewRound}}" + ] + } + }, + "response": [] + } + ] + } + ] + }, + { + "name": "Taas Teams", + "item": [ + { + "name": "search teams successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " _.each(response, project => {\r", + " _.each(project.resources, resource => {\r", + " delete resource.id\r", + " })\r", + " })\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams" + ] + } + }, + "response": [] + }, + { + "name": "search teams by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams" + ] + } + }, + "response": [] + }, + { + "name": "search teams by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams" + ] + } + }, + "response": [] + }, + { + "name": "send email successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/email", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "email" + ] + } + }, + "response": [] + }, + { + "name": "send email by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/email", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "email" + ] + } + }, + "response": [] + }, + { + "name": "send email by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/email", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "email" + ] + } + }, + "response": [] + }, + { + "name": "send email by missing field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/email", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "email" + ] + } + }, + "response": [] + }, + { + "name": "search skills successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/skills", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "skills" + ] + } + }, + "response": [] + }, + { + "name": "search skills by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/skills", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "skills" + ] + } + }, + "response": [] + }, + { + "name": "get me successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/me", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "me" + ] + } + }, + "response": [] + }, + { + "name": "get me by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/me", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "me" + ] + } + }, + "response": [] + }, + { + "name": "get team successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " _.each(response.resources, resource => {\r", + " delete resource.id\r", + " delete resource.jobId\r", + " })\r", + " _.each(response.jobs, job => {\r", + " delete job.id\r", + " })\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}" + ] + } + }, + "response": [] + }, + { + "name": "get team by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}" + ] + } + }, + "response": [] + }, + { + "name": "get team by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}" + ] + } + }, + "response": [] + }, + { + "name": "get team job successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " delete response.id\r", + " _.each(response.candidates, candidate => {\r", + " delete candidate.id\r", + " _.each(candidate.interviews, interview => {\r", + " delete interview.createdAt\r", + " delete interview.updatedAt\r", + " delete interview.jobCandidateId\r", + " delete interview.id\r", + " })\r", + " })\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}", + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get team job by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}", + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "get team job by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}/jobs/{{{{jobId}}}}", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}", + "jobs", + "{{{{jobId}}}}" + ] + } + }, + "response": [] + }, + { + "name": "add members successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}/members", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}", + "members" + ] + } + }, + "response": [] + }, + { + "name": "add members by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}/members", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}", + "members" + ] + } + }, + "response": [] + }, + { + "name": "add members by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}/members", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}", + "members" + ] + } + }, + "response": [] + }, + { + "name": "add members by invalid field", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{{requestBody}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}/members", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}", + "members" + ] + } + }, + "response": [] + }, + { + "name": "search members successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}/members", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}", + "members" + ] + } + }, + "response": [] + }, + { + "name": "search members by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}/members", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}", + "members" + ] + } + }, + "response": [] + }, + { + "name": "search members by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}/members", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}", + "members" + ] + } + }, + "response": [] + }, + { + "name": "search invites successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " pm.expect(response).to.deep.eq(iterationData.get('responseBody'));\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const params = iterationData.get('requestParameters')\r", + "Object.keys(params).forEach(param => {\r", + " pm.request.addQueryParams(`${param}=${params[param]}`) \r", + "})" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}/invites", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}", + "invites" + ] + } + }, + "response": [] + }, + { + "name": "search invites by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}/invites", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}", + "invites" + ] + } + }, + "response": [] + }, + { + "name": "search invites by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}/invites", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}", + "invites" + ] + } + }, + "response": [] + }, + { + "name": "delete member successfully", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}/members/{{memberId}}", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}", + "members", + "{{memberId}}" + ] + } + }, + "response": [] + }, + { + "name": "delete member by invalid token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}/members/{{memberId}}", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}", + "members", + "{{memberId}}" + ] + } + }, + "response": [] + }, + { + "name": "delete member by invalid id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const iterationData = pm.iterationData;\r", + "const httpStatus = iterationData.get('httpStatus');\r", + "pm.test(`Status code is ${httpStatus}`, function () {\r", + " pm.response.to.have.status(httpStatus);\r", + " const response = pm.response.json()\r", + " const rg = new RegExp(iterationData.get('message'))\r", + " pm.expect(rg.test(response.message)).to.be.true\r", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "{{{{token}}}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{URL}}/taas-teams/{{teamId}}/members/{{memberId}}", + "host": [ + "{{URL}}" + ], + "path": [ + "taas-teams", + "{{teamId}}", + "members", + "{{memberId}}" + ] + } + }, + "response": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/test/postman/topcoder-bookings-api.postman_environment.json b/test/postman/topcoder-bookings-api.postman_environment.json new file mode 100644 index 00000000..d388270a --- /dev/null +++ b/test/postman/topcoder-bookings-api.postman_environment.json @@ -0,0 +1,296 @@ +{ + "_": { + "postman_variable_scope": "environment", + "postman_exported_at": "2021-07-30T12:20:16.788Z", + "postman_exported_using": "Newman/5.2.3" + }, + "id": "75189678-8c38-43fa-b120-2578537bfc5e", + "name": "topcoder-bookings-api", + "values": [ + { + "type": "any", + "value": "https://api.topcoder-dev.com/v5", + "key": "URL" + }, + { + "type": "any", + "value": "Bearer eyJ", + "key": "invalid_token_1" + }, + { + "type": "any", + "value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJjb3BpbG90IiwiQ29ubmVjdCBTdXBwb3J0Il0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJHaG9zdGFyIiwiZXhwIjoxNTQ5ODAwMDc3LCJ1c2VySWQiOiIxNTE3NDMiLCJpYXQiOjE1NDk3OTk0NzcsImVtYWlsIjoiZW1haWxAZG9tYWluLmNvbS56IiwianRpIjoiMTJjMWMxMGItOTNlZi00NTMxLTgzMDUtYmE2NjVmYzRlMWI0In0.2n8k9pb16sE7LOLF_7mjAvEVKgggzS-wS3_8n2-R4RU", + "key": "invalid_token_2" + }, + { + "type": "any", + "value": "Bearer", + "key": "invalid_token_3" + }, + { + "type": "any", + "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJjb3BpbG90IiwiQ29ubmVjdCBTdXBwb3J0Il0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJHaG9zdGFyIiwiZXhwIjoxNTQ5ODAwMDc3LCJ1c2VySWQiOiIxNTE3NDMiLCJpYXQiOjE1NDk3OTk0NzcsImVtYWlsIjoiZW1haWxAZG9tYWluLmNvbS56IiwianRpIjoiMTJjMWMxMGItOTNlZi00NTMxLTgzMDUtYmE2NjVmYzRlMWI0In0.2n8k9pb16sE7LOLF_7mjAvEVKgggzS-wS3_8n2-R4RU", + "key": "invalid_token_4" + }, + { + "type": "any", + "value": "99999999-9999-9999-9999-999999999999", + "key": "missing_id" + }, + { + "type": "any", + "value": "00000000", + "key": "invalid_id" + }, + { + "type": "any", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik5VSkZORGd4UlRVME5EWTBOVVkzTlRkR05qTXlRamxETmpOQk5UYzVRVUV3UlRFeU56TTJRUSJ9.eyJpc3MiOiJodHRwczovL3RvcGNvZGVyLWRldi5hdXRoMC5jb20vIiwic3ViIjoiZ1o2anQ1MEhZSExCZjR2aHhqVWhYUFpPUjdRNWxrNGtAY2xpZW50cyIsImF1ZCI6Imh0dHBzOi8vbTJtLnRvcGNvZGVyLWRldi5jb20vIiwiaWF0IjoxNjI3NjQ3NTUyLCJleHAiOjE2Mjc3MzM5NTIsImF6cCI6ImdaNmp0NTBIWUhMQmY0dmh4alVoWFBaT1I3UTVsazRrIiwic2NvcGUiOiJyZWFkOnVzZXJfaWRwX3Rva2VucyByZWFkOmNoYWxsZW5nZXMgd3JpdGU6Y2hhbGxlbmdlcyBhbGw6Z3JvdXBzIHdyaXRlOmdyb3VwcyByZWFkOmdyb3VwcyByZWFkOnJldmlld190eXBlIHJlYWQ6cmV2aWV3IHdyaXRlOnByb2plY3QgcmVhZDpwcm9qZWN0IHJlYWQ6YnVzX3RvcGljcyB3cml0ZTpidXNfYXBpIHJlYWQ6ZW1haWxfdGVtcGxhdGVzIHJlYWQ6dXNlcl9wcm9maWxlcyByZWFkOnJvbGVzIHJlYWQ6cHJlZmVyZW5jZXMgcmVhZDpwcm9qZWN0LXVzZXIgcmVhZDpwcm9qZWN0LXBlcm1pc3Npb24gcmVhZDpsb29rdXBzIHJlYWQ6cmVzb3VyY2VzIHdyaXRlOnJlc291cmNlcyB1cGRhdGU6cmVzb3VyY2VzIHJlYWQ6dGVybXMgcmVhZDpwcm9qZWN0cyB3cml0ZTpwcm9qZWN0cyByZWFkOnByb2plY3QtbWVtYmVycyB3cml0ZTpwcm9qZWN0LW1lbWJlcnMgcmVhZDphY2hpZXZlbWVudCByZWFkOmFjaGlldmVtZW50c1Byb3ZpZGVyIHJlYWQ6YXR0cmlidXRlIHJlYWQ6YXR0cmlidXRlR3JvdXAgYWxsOmF0dHJpYnV0ZUdyb3VwIGNyZWF0ZTphdHRyaWJ1dGVHcm91cCB1cGRhdGU6YXR0cmlidXRlR3JvdXAgcmVhZDpvcmdhbml6YXRpb24gcmVhZDpyb2xlIHJlYWQ6c2tpbGwgcmVhZDpza2lsbHNQcm92aWRlciByZWFkOnVzZXJBdHRyaWJ1dGUgcmVhZDp1c2Vyc1JvbGUgcmVhZDp1c2Vyc1NraWxsIHJlYWQ6Z3JvdXAgYWxsOmdyb3VwIHVwZGF0ZTpncm91cCBjcmVhdGU6Z3JvdXAgY3JlYXRlOmNoYWxsZW5nZXMgY3JlYXRlOnJlc291cmNlcyByZWFkOnVzZXIgcmVhZDp0YWFzLXRlYW1zIHJlYWQ6dGFhcy1qb2JzIGFsbDp0YWFzLWpvYnMgcmVhZDp0YWFzLWpvYkNhbmRpZGF0ZXMgYWxsOnRhYXMtam9iQ2FuZGlkYXRlcyBhbGw6dGFhcy1yZXNvdXJjZUJvb2tpbmdzIHJlYWQ6cHJvamVjdC1pbnZpdGVzIHdyaXRlOnByb2plY3QtaW52aXRlcyB1cGRhdGU6Y2hhbGxlbmdlcyByZWFkOnRhYXMtd29ya1BlcmlvZFBheW1lbnRzIGNyZWF0ZTp0YWFzLXdvcmtQZXJpb2RQYXltZW50cyB1cGRhdGU6dGFhcy13b3JrUGVyaW9kUGF5bWVudHMgYWxsOnRhYXMtd29ya1BlcmlvZFBheW1lbnRzIHJlYWQ6dGFhcy1pbnRlcnZpZXdzIGNyZWF0ZTp0YWFzLWludGVydmlld3MgdXBkYXRlOnRhYXMtaW50ZXJ2aWV3cyBhbGw6dGFhcy1pbnRlcnZpZXdzIHJlYWQ6dGFhcy13b3JrUGVyaW9kcyBjcmVhdGU6dGFhcy13b3JrUGVyaW9kcyB1cGRhdGU6dGFhcy13b3JrUGVyaW9kcyBhbGw6dGFhcy13b3JrUGVyaW9kcyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyJ9.iKdHjEzj6QtWvh_CwaDzL3CM7-qmGdmwNW--4jq74M1c5Io_nSPcvjtyHelq9QloDj8qi1-61KXOAy4RHWQTnsg3QebIGES3toiAyE69qlRtuzS15CK8xQpChuRvP6teSNrqKmUv8pfqMiPIv1hepxwLab-0dfIVAKuKLBhSkkc9afehx025mdlDhF_h7XphLD8XGf9II3cxjag1M2qcrsGs8rYy1Fk8JzE0YVnnDppcQ3ovwPy4gGkATnYeqqdoGkXNyJi68-INXZalDoPZHlSQvMfDTVs_ew5TiUlYW50y1seK3fIdUP2o2YWrOn7gNRi2Q13ziJXNdu-9pvZSjQ", + "key": "m2m_token" + }, + { + "type": "any", + "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJjb3BpbG90IiwiYWRtaW5pc3RyYXRvciIsIkNvbm5lY3QgQWRtaW4iLCJUb3Bjb2RlciBVc2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJqY29yaSIsImV4cCI6MTYyNzY0ODE2NywidXNlcklkIjoiNDAwMjk0ODQiLCJpYXQiOjE2Mjc2NDc1NjcsImVtYWlsIjoiamNvcmkrZGV2QHRvcGNvZGVyLmNvbSIsImp0aSI6IjBkMWRmMDM1LWJjMDQtNDM3OS04ODBiLWYyNzIyOTE2NjQwMiJ9.d42A4xb62_ELhWbwVq0f0Q0YLxwIFksJVEOupLIWJcY", + "key": "admin_token" + }, + { + "type": "any", + "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJDb25uZWN0IFN1cHBvcnQiLCJ0ZXN0Um9sZSIsImFhYSIsInRvbnlfdGVzdF8xIiwiQ29ubmVjdCBNYW5hZ2VyIiwiQ29ubmVjdCBBZG1pbiIsImNvcGlsb3QiLCJDb25uZWN0IENvcGlsb3QgTWFuYWdlciIsIlRvcGNvZGVyIFVzZXIiLCJhZG1pbmlzdHJhdG9yIiwidS1iYWhuIiwiYm9va2luZ21hbmFnZXIiXSwiaXNzIjoiaHR0cHM6Ly9hcGkudG9wY29kZXItZGV2LmNvbSIsImhhbmRsZSI6IlRvbnlKIiwiZXhwIjoxNjI3NjQ4MTczLCJ1c2VySWQiOiI4NTQ3ODk5IiwiaWF0IjoxNjI3NjQ3NTczLCJlbWFpbCI6ImFqZWZ0c0B0b3Bjb2Rlci5jb20iLCJqdGkiOiIyNTA1ZjU1OS1kOTc0LTRjMDctYWE2OS05MDg4ZTI5OThjYzUifQ.-uORCLhkljRxz8WkZOgkTMbFxXCZYcS-flI7q7R33t8", + "key": "manager_token" + }, + { + "type": "any", + "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJDb25uZWN0IENvcGlsb3QiLCJjb3BpbG90IiwiVG9wY29kZXIgVXNlciJdLCJpc3MiOiJodHRwczovL2FwaS50b3Bjb2Rlci1kZXYuY29tIiwiaGFuZGxlIjoiVENDb25uQ29waWxvdCIsImV4cCI6MTYyNzY0ODE3OCwidXNlcklkIjoiNDAxNTg5OTQiLCJpYXQiOjE2Mjc2NDc1NzgsImVtYWlsIjoidG9wY29kZXJjb25uZWN0K0NvcGlsb3RAZ21haWwuY29tIiwianRpIjoiZWFmNTdjODItMWE1Ny00NjlkLWI2MGYtMDI1NGFiNmU2YTYzIn0.d-kslqblfxa30wRMKuaHhSXW7I8lut0G4x6vgGddHpQ", + "key": "copilot_token" + }, + { + "type": "any", + "value": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJpc2JpbGlyIiwiZXhwIjoxNjI3NjQ4MTgzLCJ1c2VySWQiOiI4ODc3NDYzNCIsImlhdCI6MTYyNzY0NzU4MywiZW1haWwiOiJlbXJlLmlzYmlsaXJAZ21haWwuY29tIiwianRpIjoiOTk2YjFlMTktZDBmNy00MDg5LTkzNzUtZGIyYTlmZTU5NzU2In0.o5jbYciSlrflR0v0VOwwN8Vy9keQQBdsCzHMscqA6Iw", + "key": "user_token" + }, + { + "type": "any", + "value": "98c266be-e848-4d99-b73b-25e4d9408424", + "key": "JobId-1" + }, + { + "type": "any", + "value": "935123af-5820-4eb5-9fe2-49c98cf8da2a", + "key": "JobId-2" + }, + { + "type": "any", + "value": "6f99f114-31d2-4192-8b5b-13991e810c8a", + "key": "JobId-3" + }, + { + "type": "any", + "value": "2c8e85d6-c744-4ac6-ba4a-08adeb55a6db", + "key": "JobId-4" + }, + { + "type": "any", + "value": "ec9736f1-ac13-4cae-9757-51803b88eabe", + "key": "JobCandidateId-1" + }, + { + "type": "any", + "value": "57485537-ffd6-41f9-a979-76c470cdbfbc", + "key": "JobCandidateId-2" + }, + { + "type": "any", + "value": "1cd77bce-1319-4b4a-8f6f-236820d6ed2f", + "key": "JobCandidateId-3" + }, + { + "type": "any", + "value": "599ec33a-c5b2-433b-93f1-39e1e25b8503", + "key": "JobCandidateId-4" + }, + { + "type": "any", + "value": "4859d41d-dc81-4383-ac12-a939f0a93725", + "key": "ResourceBookingId-1" + }, + { + "type": "any", + "value": "4e14a024-260b-47b1-a73e-5f0948e5eedf", + "key": "ResourceBookingId-2" + }, + { + "type": "any", + "value": "be19465a-5685-46c7-967a-4b8712eb1710", + "key": "ResourceBookingId-3" + }, + { + "type": "any", + "value": "1f996f5d-59d4-4c46-9428-ef130581e135", + "key": "ResourceBookingId-4" + }, + { + "type": "any", + "value": "b782d900-232c-413e-aacb-b0a55c88c071", + "key": "WorkPeriodId-1" + }, + { + "type": "any", + "value": "61efd4ac-d1e1-4ed4-b438-7112b0f3b892", + "key": "WorkPeriodId-2" + }, + { + "type": "any", + "value": "5d04e5de-fc84-425d-8c47-4ba03f25ce7e", + "key": "WorkPeriodId-3" + }, + { + "type": "any", + "value": "db72f392-572d-4115-8688-4cd7b803cddc", + "key": "WorkPeriodId-4" + }, + { + "type": "any", + "value": "1bdd3366-f8da-4d90-8542-a9942219d557", + "key": "WorkPeriodPaymentId-1" + }, + { + "type": "any", + "value": "28bc4b28-a132-47b9-bf75-1fc7232bf836", + "key": "WorkPeriodPaymentId-2" + }, + { + "type": "any", + "value": "a0936141-8a51-47b6-a1c5-d0c8d31e568a", + "key": "WorkPeriodPaymentId-3" + }, + { + "type": "any", + "value": "29213035-fd59-4f0c-9fad-db1f90747b4d", + "key": "WorkPeriodPaymentId-4" + }, + { + "type": "any", + "value": "0d0d92c8-28f6-4d7a-855d-501d473a00a1", + "key": "InterviewId-1" + }, + { + "type": "any", + "value": "1b1f24d3-f629-4e5e-94c8-76b05ac95553", + "key": "InterviewId-2" + }, + { + "type": "any", + "value": "5124cc23-8728-49a7-9c22-8b42d5cc68d3", + "key": "InterviewId-3" + }, + { + "type": "any", + "value": "930ea9a0-4167-4480-9c9d-79a511a312bb", + "key": "InterviewId-4" + }, + { + "type": "any", + "value": "d9d7daef-a2cd-48f0-8107-384c186bb761", + "key": "JobId-5" + }, + { + "type": "any", + "value": "475ce062-2f12-4708-b979-83a173013b67", + "key": "JobCandidateId-5" + }, + { + "type": "any", + "value": "65fa2024-0bca-47af-aff6-91462e7520c8", + "key": "ResourceBookingId-5" + }, + { + "type": "any", + "value": "6e203cb6-cbaa-40d6-9374-ec3e3086b615", + "key": "WorkPeriodId-5" + }, + { + "type": "any", + "value": "8f3fa74d-e7c0-42ac-ae7a-e73a4d3a74d9", + "key": "WorkPeriodPaymentId-5" + }, + { + "type": "any", + "value": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik5VSkZORGd4UlRVME5EWTBOVVkzTlRkR05qTXlRamxETmpOQk5UYzVRVUV3UlRFeU56TTJRUSJ9.eyJpc3MiOiJodHRwczovL3RvcGNvZGVyLWRldi5hdXRoMC5jb20vIiwic3ViIjoiZ1o2anQ1MEhZSExCZjR2aHhqVWhYUFpPUjdRNWxrNGtAY2xpZW50cyIsImF1ZCI6Imh0dHBzOi8vbTJtLnRvcGNvZGVyLWRldi5jb20vIiwiaWF0IjoxNjI3NjQ3NTUyLCJleHAiOjE2Mjc3MzM5NTIsImF6cCI6ImdaNmp0NTBIWUhMQmY0dmh4alVoWFBaT1I3UTVsazRrIiwic2NvcGUiOiJyZWFkOnVzZXJfaWRwX3Rva2VucyByZWFkOmNoYWxsZW5nZXMgd3JpdGU6Y2hhbGxlbmdlcyBhbGw6Z3JvdXBzIHdyaXRlOmdyb3VwcyByZWFkOmdyb3VwcyByZWFkOnJldmlld190eXBlIHJlYWQ6cmV2aWV3IHdyaXRlOnByb2plY3QgcmVhZDpwcm9qZWN0IHJlYWQ6YnVzX3RvcGljcyB3cml0ZTpidXNfYXBpIHJlYWQ6ZW1haWxfdGVtcGxhdGVzIHJlYWQ6dXNlcl9wcm9maWxlcyByZWFkOnJvbGVzIHJlYWQ6cHJlZmVyZW5jZXMgcmVhZDpwcm9qZWN0LXVzZXIgcmVhZDpwcm9qZWN0LXBlcm1pc3Npb24gcmVhZDpsb29rdXBzIHJlYWQ6cmVzb3VyY2VzIHdyaXRlOnJlc291cmNlcyB1cGRhdGU6cmVzb3VyY2VzIHJlYWQ6dGVybXMgcmVhZDpwcm9qZWN0cyB3cml0ZTpwcm9qZWN0cyByZWFkOnByb2plY3QtbWVtYmVycyB3cml0ZTpwcm9qZWN0LW1lbWJlcnMgcmVhZDphY2hpZXZlbWVudCByZWFkOmFjaGlldmVtZW50c1Byb3ZpZGVyIHJlYWQ6YXR0cmlidXRlIHJlYWQ6YXR0cmlidXRlR3JvdXAgYWxsOmF0dHJpYnV0ZUdyb3VwIGNyZWF0ZTphdHRyaWJ1dGVHcm91cCB1cGRhdGU6YXR0cmlidXRlR3JvdXAgcmVhZDpvcmdhbml6YXRpb24gcmVhZDpyb2xlIHJlYWQ6c2tpbGwgcmVhZDpza2lsbHNQcm92aWRlciByZWFkOnVzZXJBdHRyaWJ1dGUgcmVhZDp1c2Vyc1JvbGUgcmVhZDp1c2Vyc1NraWxsIHJlYWQ6Z3JvdXAgYWxsOmdyb3VwIHVwZGF0ZTpncm91cCBjcmVhdGU6Z3JvdXAgY3JlYXRlOmNoYWxsZW5nZXMgY3JlYXRlOnJlc291cmNlcyByZWFkOnVzZXIgcmVhZDp0YWFzLXRlYW1zIHJlYWQ6dGFhcy1qb2JzIGFsbDp0YWFzLWpvYnMgcmVhZDp0YWFzLWpvYkNhbmRpZGF0ZXMgYWxsOnRhYXMtam9iQ2FuZGlkYXRlcyBhbGw6dGFhcy1yZXNvdXJjZUJvb2tpbmdzIHJlYWQ6cHJvamVjdC1pbnZpdGVzIHdyaXRlOnByb2plY3QtaW52aXRlcyB1cGRhdGU6Y2hhbGxlbmdlcyByZWFkOnRhYXMtd29ya1BlcmlvZFBheW1lbnRzIGNyZWF0ZTp0YWFzLXdvcmtQZXJpb2RQYXltZW50cyB1cGRhdGU6dGFhcy13b3JrUGVyaW9kUGF5bWVudHMgYWxsOnRhYXMtd29ya1BlcmlvZFBheW1lbnRzIHJlYWQ6dGFhcy1pbnRlcnZpZXdzIGNyZWF0ZTp0YWFzLWludGVydmlld3MgdXBkYXRlOnRhYXMtaW50ZXJ2aWV3cyBhbGw6dGFhcy1pbnRlcnZpZXdzIHJlYWQ6dGFhcy13b3JrUGVyaW9kcyBjcmVhdGU6dGFhcy13b3JrUGVyaW9kcyB1cGRhdGU6dGFhcy13b3JrUGVyaW9kcyBhbGw6dGFhcy13b3JrUGVyaW9kcyIsImd0eSI6ImNsaWVudC1jcmVkZW50aWFscyJ9.iKdHjEzj6QtWvh_CwaDzL3CM7-qmGdmwNW--4jq74M1c5Io_nSPcvjtyHelq9QloDj8qi1-61KXOAy4RHWQTnsg3QebIGES3toiAyE69qlRtuzS15CK8xQpChuRvP6teSNrqKmUv8pfqMiPIv1hepxwLab-0dfIVAKuKLBhSkkc9afehx025mdlDhF_h7XphLD8XGf9II3cxjag1M2qcrsGs8rYy1Fk8JzE0YVnnDppcQ3ovwPy4gGkATnYeqqdoGkXNyJi68-INXZalDoPZHlSQvMfDTVs_ew5TiUlYW50y1seK3fIdUP2o2YWrOn7gNRi2Q13ziJXNdu-9pvZSjQ", + "key": "M2M_TOKEN" + }, + { + "type": "any", + "value": { + "token": "copilot_token", + "requestBody": "{\"projectId\":222,\"externalId\":\"1212\",\"title\":\"POSTMANE2E-Dummy title\",\"description\":\"Dummy Description\",\"startDate\":\"2020-09-27T04:17:23.131Z\",\"duration\":1,\"numPositions\":13,\"resourceType\":\"Dummy Resource Type\",\"rateType\":\"hourly\",\"workload\":\"full-time\",\"skills\":[\"23e00d92-207a-4b5b-b3c9-4c5662644941\",\"7d076384-ccf6-4e43-a45d-1b24b1e624aa\",\"cbac57a3-7180-4316-8769-73af64893158\",\"a2b4bc11-c641-4a19-9eb7-33980378f82e\"]}", + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + "key": "0" + }, + { + "type": "any", + "value": { + "token": "user_token", + "requestBody": "{\"projectId\":222,\"externalId\":\"1212\",\"title\":\"POSTMANE2E-Dummy title\",\"description\":\"Dummy Description\",\"startDate\":\"2020-09-27T04:17:23.131Z\",\"duration\":1,\"numPositions\":13,\"resourceType\":\"Dummy Resource Type\",\"rateType\":\"hourly\",\"workload\":\"full-time\",\"skills\":[\"23e00d92-207a-4b5b-b3c9-4c5662644941\",\"7d076384-ccf6-4e43-a45d-1b24b1e624aa\",\"cbac57a3-7180-4316-8769-73af64893158\",\"a2b4bc11-c641-4a19-9eb7-33980378f82e\"]}", + "httpStatus": 401, + "message": "userId: \\d+ the user is not a member of project \\d+" + }, + "key": "1" + }, + { + "type": "any", + "value": { + "token": "invalid_token_3", + "requestBody": "{\"projectId\":111,\"externalId\":\"1212\",\"title\":\"POSTMANE2E-Dummy title\",\"description\":\"Dummy Description\",\"startDate\":\"2020-09-27T04:17:23.131Z\",\"duration\":1,\"numPositions\":13,\"resourceType\":\"Dummy Resource Type\",\"rateType\":\"hourly\",\"workload\":\"full-time\",\"skills\":[\"23e00d92-207a-4b5b-b3c9-4c5662644941\",\"7d076384-ccf6-4e43-a45d-1b24b1e624aa\",\"cbac57a3-7180-4316-8769-73af64893158\",\"a2b4bc11-c641-4a19-9eb7-33980378f82e\"]}", + "httpStatus": 401, + "message": "No token provided." + }, + "key": "2" + }, + { + "type": "any", + "value": { + "token": "invalid_token_4", + "requestBody": "{\"projectId\":111,\"externalId\":\"1212\",\"title\":\"POSTMANE2E-Dummy title\",\"description\":\"Dummy Description\",\"startDate\":\"2020-09-27T04:17:23.131Z\",\"duration\":1,\"numPositions\":13,\"resourceType\":\"Dummy Resource Type\",\"rateType\":\"hourly\",\"workload\":\"full-time\",\"skills\":[\"23e00d92-207a-4b5b-b3c9-4c5662644941\",\"7d076384-ccf6-4e43-a45d-1b24b1e624aa\",\"cbac57a3-7180-4316-8769-73af64893158\",\"a2b4bc11-c641-4a19-9eb7-33980378f82e\"]}", + "httpStatus": 401, + "message": "Failed to authenticate token." + }, + "key": "3" + }, + { + "type": "any", + "value": { + "token": "manager_token", + "requestBody": "{\"projectId\":222,\"externalId\":\"1212\",\"title\":\"POSTMANE2E-Dummy title\",\"description\":\"Dummy Description\",\"startDate\":\"2020-09-27T04:17:23.131Z\",\"duration\":1,\"numPositions\":13,\"resourceType\":\"Dummy Resource Type\",\"rateType\":\"hourly\",\"workload\":\"full-time\",\"skills\":[\"23e00d92-207a-4b5b-b3c9-4c5662644941\",\"7d076384-ccf6-4e43-a45d-1b24b1e624aa\",\"cbac57a3-7180-4316-8769-73af64893158\",\"a2b4bc11-c641-4a19-9eb7-33980378f82e\"]}", + "httpStatus": 200, + "responseBody": { + "isApplicationPageActive": false, + "projectId": 222, + "externalId": "1212", + "title": "POSTMANE2E-Dummy title", + "description": "Dummy Description", + "startDate": "2020-09-27T04:17:23.131Z", + "duration": 1, + "numPositions": 13, + "resourceType": "Dummy Resource Type", + "rateType": "hourly", + "workload": "full-time", + "skills": [ + "23e00d92-207a-4b5b-b3c9-4c5662644941", + "7d076384-ccf6-4e43-a45d-1b24b1e624aa", + "cbac57a3-7180-4316-8769-73af64893158", + "a2b4bc11-c641-4a19-9eb7-33980378f82e" + ], + "status": "sourcing", + "createdBy": "00000000-0000-0000-0000-000000000000", + "updatedBy": null + }, + "saveId": "JobId-5" + }, + "key": "4" + } + ], + "_postman_variable_scope": "environment", + "_postman_exported_at": "2021-07-30T12:20:23.871Z", + "_postman_exported_using": "Newman/5.2.3" +} \ No newline at end of file