From 3ae012693b794f766ec8be89fd33a89b35456719 Mon Sep 17 00:00:00 2001 From: Hope Tambala Date: Sat, 10 Dec 2022 17:30:44 -0500 Subject: [PATCH 01/12] chore: add logger --- .env.dev | 2 + .gitignore | 2 + cloud/src/services/index.js | 18 ++--- cloud/src/services/logging/logging.js | 7 ++ cloud/src/services/logging/slack.js | 31 +++++++++ package-lock.json | 97 ++++++++++++++++++++++++++- package.json | 2 + 7 files changed, 149 insertions(+), 10 deletions(-) create mode 100644 cloud/src/services/logging/logging.js create mode 100644 cloud/src/services/logging/slack.js diff --git a/.env.dev b/.env.dev index 7261008c..087e67f2 100644 --- a/.env.dev +++ b/.env.dev @@ -5,3 +5,5 @@ PARSE_JAVASCRIPT_KEY=_PLACEHOLDER_ PARSE_SERVER_URL="http://localhost:1337/parse" PUENTE_SMS_EMAIL_API_URL=http://puentes-messaging-microservice.com PUENTE_MANAGE_URL=https://sample-puente-manage.app/" + +SLACK_TOKEN="" diff --git a/.gitignore b/.gitignore index 949aadf2..c95cd80c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ logs *.DS_Store /coverage .parse.local +.env.staging .env.prod + diff --git a/cloud/src/services/index.js b/cloud/src/services/index.js index 30befa61..0fe59a09 100644 --- a/cloud/src/services/index.js +++ b/cloud/src/services/index.js @@ -4,14 +4,16 @@ const Aggregate = require('./aggregate/aggregate.js'); const Post = require('./post/post.js'); const Messaging = require('./messaging/messaging.js'); const Offline = require('./offline/offline.js'); +const Logging = require('./logging/logging'); -const services = {}; - -services.batch = Batch; -services.roles = Roles; -services.aggregate = Aggregate; -services.post = Post; -services.messaging = Messaging; -services.offline = Offline; +const services = { + Logging, + batch: Batch, + roles: Roles, + aggregate: Aggregate, + post: Post, + messaging: Messaging, + offline: Offline, +}; module.exports = services; diff --git a/cloud/src/services/logging/logging.js b/cloud/src/services/logging/logging.js new file mode 100644 index 00000000..d6d75c49 --- /dev/null +++ b/cloud/src/services/logging/logging.js @@ -0,0 +1,7 @@ +const Slack = require('./slack'); + +const classes = { + Slack, +}; + +module.exports = classes; diff --git a/cloud/src/services/logging/slack.js b/cloud/src/services/logging/slack.js new file mode 100644 index 00000000..b3a8cd33 --- /dev/null +++ b/cloud/src/services/logging/slack.js @@ -0,0 +1,31 @@ +const { WebClient, ErrorCode } = require('@slack/web-api'); + +const { SLACK_TOKEN: token } = process.env; +const web = new WebClient(token); + +const Slack = { + sendMessage: async function sendMessage(channel, text) { + const { PARSE_ENV, SLACK_DEV_CHANNEL, SLACK_PROD_CHANNEL } = process.env; + + const channelFactory = { + 'platform-alerts': PARSE_ENV === 'prod' ? SLACK_PROD_CHANNEL: SLACK_DEV_CHANNEL, + }; + + + try { + return web.chat.postMessage({ + text, + channel: channelFactory[channel], + }); + } catch (err) { + if (err.code === ErrorCode.PlatformError) { + console.error(err.data); + return err; + } + console.error('Error: Slack sendMessage',err); //eslint-disable-line + return err; + } + }, +}; + +module.exports = Slack; diff --git a/package-lock.json b/package-lock.json index da8d041a..4e445d69 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2618,6 +2618,49 @@ "type-detect": "4.0.8" } }, + "@slack/logger": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@slack/logger/-/logger-3.0.0.tgz", + "integrity": "sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==", + "requires": { + "@types/node": ">=12.0.0" + } + }, + "@slack/types": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@slack/types/-/types-2.8.0.tgz", + "integrity": "sha512-ghdfZSF0b4NC9ckBA8QnQgC9DJw2ZceDq0BIjjRSv6XAZBXJdWgxIsYz0TYnWSiqsKZGH2ZXbj9jYABZdH3OSQ==" + }, + "@slack/web-api": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@slack/web-api/-/web-api-6.8.0.tgz", + "integrity": "sha512-DI0T7pQy2SM14s+zJKlarzkyOqhpu2Qk3rL19g+3m7VDZ+lSMB/dt9nwf3BZIIp49/CoLlBjEmKMoakm69OD4Q==", + "requires": { + "@slack/logger": "^3.0.0", + "@slack/types": "^2.0.0", + "@types/is-stream": "^1.1.0", + "@types/node": ">=12.0.0", + "axios": "^0.27.2", + "eventemitter3": "^3.1.0", + "form-data": "^2.5.0", + "is-electron": "2.2.0", + "is-stream": "^1.1.0", + "p-queue": "^6.6.1", + "p-retry": "^4.0.0" + }, + "dependencies": { + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + } + } + }, "@szmarczak/http-timer": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", @@ -2864,6 +2907,14 @@ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==" }, + "@types/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@types/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==", + "requires": { + "@types/node": "*" + } + }, "@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -3018,6 +3069,11 @@ "@types/node": "*" } }, + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, "@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", @@ -9359,6 +9415,11 @@ "dev": true, "optional": true }, + "is-electron": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.0.tgz", + "integrity": "sha512-SpMppC2XR3YdxSzczXReBjqs2zGscWQpBIKqwXYBFic0ERaxNVgwLCHwOLZeESfdJQjX0RDvrJ1lBXX2ij+G1Q==" + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -13812,8 +13873,7 @@ "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" }, "p-limit": { "version": "2.3.0", @@ -13831,6 +13891,39 @@ "p-limit": "^2.0.0" } }, + "p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "requires": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "dependencies": { + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + } + } + }, + "p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + } + }, + "p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "requires": { + "p-finally": "^1.0.0" + } + }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", diff --git a/package.json b/package.json index 4151917f..1ca54240 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "test": "tests" }, "dependencies": { + "@slack/web-api": "^6.8.0", "axios": "^0.27.2", "concurrently": "5.2.0", "esm": "3.2.25", @@ -58,6 +59,7 @@ "start": "node -r esm index.js", "start:hot-reload": "nodemon index.js", "start-local-dev": "concurrently \"env-cmd -f .env.dev npm run start:hot-reload\" \"npm run dashboard\"", + "start-local-staging": "concurrently \"env-cmd -f .env.staging npm run start:hot-reload\" \"npm run dashboard\"", "start-local-prod": "concurrently \"env-cmd -f .env.prod npm run start:hot-reload\" \"npm run dashboard\"", "lint": "eslint '**/*.{js,jsx}' --quiet", "lint-fix": "eslint '**/*.{js,jsx}' --fix", From dd7826bdd70a3e8730eb5b6ed18e36711d436af4 Mon Sep 17 00:00:00 2001 From: Hope Tambala Date: Sun, 11 Dec 2022 17:19:52 -0500 Subject: [PATCH 02/12] chore: lint --- cloud/src/services/logging/slack.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cloud/src/services/logging/slack.js b/cloud/src/services/logging/slack.js index b3a8cd33..0d5b5408 100644 --- a/cloud/src/services/logging/slack.js +++ b/cloud/src/services/logging/slack.js @@ -8,7 +8,7 @@ const Slack = { const { PARSE_ENV, SLACK_DEV_CHANNEL, SLACK_PROD_CHANNEL } = process.env; const channelFactory = { - 'platform-alerts': PARSE_ENV === 'prod' ? SLACK_PROD_CHANNEL: SLACK_DEV_CHANNEL, + 'platform-alerts': PARSE_ENV === 'prod' ? SLACK_PROD_CHANNEL : SLACK_DEV_CHANNEL, }; @@ -19,7 +19,7 @@ const Slack = { }); } catch (err) { if (err.code === ErrorCode.PlatformError) { - console.error(err.data); + console.error(err.data); //eslint-disable-line return err; } console.error('Error: Slack sendMessage',err); //eslint-disable-line From b5a9af4ea4843e7339532dfb4ed896abb71804be Mon Sep 17 00:00:00 2001 From: Hope Tambala Date: Mon, 12 Dec 2022 23:35:11 -0500 Subject: [PATCH 03/12] feat: add slackbot to posting --- .env.dev | 2 + _tests_/integration/crud.test.js | 199 ++++++++++-------- _tests_/integration/error.test.js | 29 +++ cloud/src/definer/auth.definer.js | 6 +- cloud/src/definer/crud.definer.js | 129 +++++++----- cloud/src/module/error.js | 13 ++ cloud/src/module/index.js | 7 + cloud/src/services/index.js | 6 +- cloud/src/services/logging/logging.js | 7 - cloud/src/services/messaging/messaging.js | 79 +------ .../services/{logging => messaging}/slack.js | 0 cloud/src/services/messaging/text-email.js | 80 +++++++ package.json | 2 +- 13 files changed, 330 insertions(+), 229 deletions(-) create mode 100644 _tests_/integration/error.test.js create mode 100644 cloud/src/module/error.js create mode 100644 cloud/src/module/index.js delete mode 100644 cloud/src/services/logging/logging.js rename cloud/src/services/{logging => messaging}/slack.js (100%) create mode 100644 cloud/src/services/messaging/text-email.js diff --git a/.env.dev b/.env.dev index 087e67f2..d790a176 100644 --- a/.env.dev +++ b/.env.dev @@ -7,3 +7,5 @@ PUENTE_SMS_EMAIL_API_URL=http://puentes-messaging-microservice.com PUENTE_MANAGE_URL=https://sample-puente-manage.app/" SLACK_TOKEN="" +SLACK_DEV_CHANNEL="" +SLACK_PROD_CHANNEL="" \ No newline at end of file diff --git a/_tests_/integration/crud.test.js b/_tests_/integration/crud.test.js index e0d05f5a..1e92e99d 100644 --- a/_tests_/integration/crud.test.js +++ b/_tests_/integration/crud.test.js @@ -44,96 +44,121 @@ describe('crud testing', () => { }); }); - // it('should post an obj to class with relation to post with variety of classes', async () => { - // const postParams = { - // parseParentClass: 'SurveyData', - // parseParentClassID: postID1, - // localObject: [ - // { - // tag: 'Vitals', - // key: 'height', - // value: '4', - // }, - // { - // tag: 'HistoryMedical', - // key: 'majorEvents', - // value: null, - // }, - // { - // tag: 'Prescriptions', - // key: 'name', - // value: 'Greetings__', - // }, - // { - // tag: 'Allergies', - // key: 'substance', - // value: 'Tester', - // }, - // { - // tag: 'EvaluationSurgical', - // key: 'AssessmentandEvaluationSurgical', - // value: 'Have', - // }, - // { - // tag: 'EvaluationMedical', - // key: 'chronic_condition_hypertension', - // value: 'swell', - // }, - // { - // tag: 'HistoryEnvironmentalHealth', - // key: 'yearsLivedinthecommunity', - // value: 'day!', - // }, - // ], - // }; + it('should post object to Supplementary Class with Relation to SurveyData', async () => { + const postParams = { + parseParentClass: 'SurveyData', + parseParentClassID: postID1, + parseClass: 'Vitals', + signature: 'Test', + photoFile: 'TestPicture', + parseUser: 'undefined', + localObject: { + height: '6', + weight: '2', + bmi: '30', + bloodPressure: '100/100', + latitude: 4, + longitude: 5, + surveyingOrganization: 'Puente', + }, + }; + return cloudFunctions.postObjectsToClassWithRelation(postParams).then((result) => { + expect(result.get('height')).toEqual('6'); + expect(result.get('weight')).toEqual('2'); + expect(result.get('bloodPressure')).toEqual('100/100'); + }); + }); + + it('should post an obj to class with relation to post with variety of classes', async () => { + const postParams = { + parseParentClass: 'SurveyData', + parseParentClassID: postID1, + localObject: [ + { + tag: 'Vitals', + key: 'height', + value: '4', + }, + { + tag: 'HistoryMedical', + key: 'majorEvents', + value: null, + }, + { + tag: 'Prescriptions', + key: 'name', + value: 'Greetings__', + }, + { + tag: 'Allergies', + key: 'substance', + value: 'Tester', + }, + { + tag: 'EvaluationSurgical', + key: 'AssessmentandEvaluationSurgical', + value: 'Have', + }, + { + tag: 'EvaluationMedical', + key: 'chronic_condition_hypertension', + value: 'swell', + }, + { + tag: 'HistoryEnvironmentalHealth', + key: 'yearsLivedinthecommunity', + value: 'day!', + }, + ], + }; - // return cloudFunctions.postObjectsToAnyClassWithRelation(postParams).then((result) => { - // const jsonString = JSON.stringify(result); - // const jsonValues = JSON.parse(jsonString); + return cloudFunctions.postObjectsToAnyClassWithRelation(postParams).then((result) => { + const jsonString = JSON.stringify(result); + const jsonValues = JSON.parse(jsonString); - // Object.keys(jsonValues).forEach((key) => { - // // ensure all are related to original surveyData form - // const { client } = jsonValues[key]; - // const type = client.__type; // eslint-disable-line - // const { className } = client; - // const objectID = client.objectId; - // expect(type).toEqual('Pointer'); - // expect(className).toEqual('SurveyData'); - // expect(objectID).toEqual(`${postID1}`); + Object.keys(jsonValues).forEach((key) => { + // ensure all are related to original surveyData form + const { client } = jsonValues[key]; + const type = client.__type; // eslint-disable-line + const { className } = client; + const objectID = client.objectId; + expect(type).toEqual('Pointer'); + expect(className).toEqual('SurveyData'); + expect(objectID).toEqual(`${postID1}`); - // // testing other attributes are correctly added - // if ('height' in jsonValues[key]) { - // const { height } = jsonValues[key]; - // expect(height).toEqual('4'); - // } - // if ('majorEvents' in jsonValues[key]) { - // const { majorEvents } = jsonValues[key]; - // expect(majorEvents).toEqual(null); - // } - // if ('name' in jsonValues[key]) { - // const { name } = jsonValues[key]; - // expect(name).toEqual('Greetings__'); - // } - // if ('substance' in jsonValues[key]) { - // const { substance } = jsonValues[key]; - // expect(substance).toEqual('Tester'); - // } - // if ('AssessmentandEvaluationSurgical' in jsonValues[key]) { - // const { AssessmentandEvaluationSurgical } = jsonValues[key]; - // expect(AssessmentandEvaluationSurgical).toEqual('Have'); - // } - // if ('chronic_condition_hypertension' in jsonValues[key]) { - // const chronicConditionHypertension = jsonValues[key].chronic_condition_hypertension; - // expect(chronicConditionHypertension).toEqual('swell'); - // } - // if ('yearsLivedinthecommunity' in jsonValues[key]) { - // const { yearsLivedinthecommunity } = jsonValues[key]; - // expect(yearsLivedinthecommunity).toEqual('day!'); - // } - // }); - // expect(result).toBeDefined(); - // }); - // }); + // testing other attributes are correctly added + if ('height' in jsonValues[key]) { + const { height } = jsonValues[key]; + expect(height).toEqual('4'); + } + if ('majorEvents' in jsonValues[key]) { + const { majorEvents } = jsonValues[key]; + expect(majorEvents).toEqual(null); + } + if ('name' in jsonValues[key]) { + const { name } = jsonValues[key]; + expect(name).toEqual('Greetings__'); + } + if ('substance' in jsonValues[key]) { + const { substance } = jsonValues[key]; + expect(substance).toEqual('Tester'); + } + if ('AssessmentandEvaluationSurgical' in jsonValues[key]) { + const { AssessmentandEvaluationSurgical } = jsonValues[key]; + expect(AssessmentandEvaluationSurgical).toEqual('Have'); + } + if ('chronic_condition_hypertension' in jsonValues[key]) { + const chronicConditionHypertension = jsonValues[key].chronic_condition_hypertension; + expect(chronicConditionHypertension).toEqual('swell'); + } + if ('yearsLivedinthecommunity' in jsonValues[key]) { + const { yearsLivedinthecommunity } = jsonValues[key]; + expect(yearsLivedinthecommunity).toEqual('day!'); + } + }); + expect(result).toBeDefined(); + }); + }); it('should update the originally posted item', async () => { const updateParams = { diff --git a/_tests_/integration/error.test.js b/_tests_/integration/error.test.js new file mode 100644 index 00000000..61d0aca1 --- /dev/null +++ b/_tests_/integration/error.test.js @@ -0,0 +1,29 @@ +const { MongoClient } = require('mongodb'); +const { cloudFunctions } = require('../run-cloud'); + +describe('crud testing', () => { + let connection; + let db; + + beforeAll(async () => { + connection = await MongoClient.connect(process.env.MONGO_URL, { + useNewUrlParser: true, + useUnifiedTopology: true, + }); + db = await connection.db(); + }); + + afterAll(async () => { + await connection.close(); + await db.close(); + }); + + it('Test error response in SurveyData post when empy params', async () => { + const postParams = { + }; + return cloudFunctions.postObjectsToClass(postParams).then((result) => { + const err = 'Error: no request params'; + expect(result).toEqual(err); + }); + }); +}); diff --git a/cloud/src/definer/auth.definer.js b/cloud/src/definer/auth.definer.js index 0052d315..d2fbeb62 100644 --- a/cloud/src/definer/auth.definer.js +++ b/cloud/src/definer/auth.definer.js @@ -68,7 +68,9 @@ Parse.Cloud.define('signup', (request) => new Promise((resolve, reject) => { email, phonenumber, }; - if (restParams) await services.messaging.sendMessage(restParams, userObject); + if (restParams) { + await services.Messaging.TextEmailMessaging.sendMessage(restParams, userObject); + } const acl = new Parse.ACL(); acl.setPublicReadAccess(true); @@ -287,7 +289,7 @@ Parse.Cloud.define('sendMessage', async (request) => { restParamsData.runMessaging = true; try { - const resp = await services.messaging.sendMessage(restParamsData, user); + const resp = await services.Messaging.TextEmailMessaging.sendMessage(restParamsData, user); return JSON.parse(JSON.stringify(resp)); } catch (e) { return e.message; diff --git a/cloud/src/definer/crud.definer.js b/cloud/src/definer/crud.definer.js index 1e44cb14..c1a5ffba 100644 --- a/cloud/src/definer/crud.definer.js +++ b/cloud/src/definer/crud.definer.js @@ -1,5 +1,6 @@ const cloneDeep = require('lodash/cloneDeep'); const classes = require('../classes'); +const modules = require('../module'); const services = require('../services'); const utils = require('../_utils'); @@ -85,63 +86,73 @@ Parse.Cloud.define('countService', (request) => { localObject - Continas key value pairs that will be posted to the class - this contains a latitude/longitude which will post the location ******************************************* */ -Parse.Cloud.define('postObjectsToClass', (request) => new Promise((resolve, reject) => { - const surveyPoint = new Parse.Object(request.params.parseClass); +Parse.Cloud.define('postObjectsToClass', (request) => { + const { + photoFile, + signature, + localObject, + parseUser, + parseClass, + } = request.params; + + if (!Object.keys(request.params).length) { + const err = 'Error: no request params'; + modules.Error.logError(err); + return err; + } + + const surveyPoint = new Parse.Object(parseClass); - if (request.params.photoFile) { - const parseFilePhoto = new Parse.File('memberProfPic.png', { base64: request.params.photoFile }); + if (photoFile) { + const parseFilePhoto = new Parse.File('memberProfPic.png', { base64: photoFile }); - // put this inside if { parseFilePhoto.save().then(() => { - // The file has been saved to Parse. }, (error) => { - // The file either could not be read, or could not be saved to Parse. console.log(error); // eslint-disable-line }); surveyPoint.set('picture', parseFilePhoto); } - if (request.params.signature) { - const parseFileSignature = new Parse.File('signature.png', { base64: request.params.signature }); + if (signature) { + const parseFileSignature = new Parse.File('signature.png', { base64: signature }); - // put this inside if { parseFileSignature.save().then(() => { - // The file has been saved to Parse. }, (error) => { - // The file either could not be read, or could not be saved to Parse. - console.log(error); // eslint-disable-line + console.error(error); // eslint-disable-line }); surveyPoint.set('signature', parseFileSignature); } - // add key/value from the local object to SurveyPoint - const { localObject } = request.params; Object.keys(localObject).forEach((key) => { const obj = localObject[key]; surveyPoint.set(String(key), obj); }); - // Add GeoPoint location if (localObject.latitude && localObject.longitude) { const point = new Parse.GeoPoint(localObject.latitude, localObject.longitude); surveyPoint.set('location', point); } - - if (request.params.parseUser) { + if (parseUser) { const userObject = new Parse.Object('_User'); - userObject.id = String(request.params.parseUser); + userObject.id = String(parseUser); surveyPoint.set('parseUser', userObject); } - surveyPoint.save().then((results) => { - resolve(results); - }, (error) => { - reject(error); - }); -})); + try { + const survey = surveyPoint.save().then((result) => result).catch((error) => { + const err = `Error: postObjectsToClass ${error}`; + modules.Error.logError(err); + }); + return survey; + } catch (error) { + const err = `Error: postObjectsToClass ${error}`; + modules.Error.logError(err); + return error; + } +}); /** ****************************************** POST OBJECTS TO CLASS WITH RELATION @@ -155,14 +166,23 @@ Parse.Cloud.define('postObjectsToClass', (request) => new Promise((resolve, reje loop - bool t/f whether looped data contained in form ******************************************* */ Parse.Cloud.define('postObjectsToClassWithRelation', (request) => new Promise((resolve, reject) => { - const supplementaryForm = new Parse.Object(request.params.parseClass); - const residentIdForm = new Parse.Object(request.params.parseParentClass); + const { + parseParentClass, + parseParentClassID, + parseClass, + localObject, + loop, + loopParentID, + parseUser, + } = request.params; + + const supplementaryForm = new Parse.Object(parseClass); + const residentIdForm = new Parse.Object(parseParentClass); const userObject = new Parse.Object('_User'); - const loopParentForm = new Parse.Object(request.params.parseClass); + const loopParentForm = new Parse.Object(parseClass); // Create supplementaryForm points - const { localObject, loop } = request.params; - // create looped json to ensure that data is submitted as multiple forms + // Create looped json to ensure that data is submitted as multiple forms let loopedJson = {}; let newFieldsArray = []; Object.keys(localObject).forEach((key) => { @@ -176,11 +196,8 @@ Parse.Cloud.define('postObjectsToClassWithRelation', (request) => new Promise((r } } else { const photoFileLocalObject = new Parse.File('picture.png', { base64: value }); - // put this inside if { photoFileLocalObject.save().then(() => { - // The file has been saved to Parse. }, (error) => { - // The file either could not be read, or could not be saved to Parse. console.log(error); // eslint-disable-line }); supplementaryForm.set(String(key), photoFileLocalObject); @@ -188,35 +205,41 @@ Parse.Cloud.define('postObjectsToClassWithRelation', (request) => new Promise((r }); // Add the residentIdForm as a value in the supplementaryForm - residentIdForm.id = String(request.params.parseParentClassID); + residentIdForm.id = String(parseParentClassID); supplementaryForm.set('client', residentIdForm); - if (request.params.loopParentID) { - loopParentForm.id = String(request.params.loopParentID); + if (loopParentID) { + loopParentForm.id = String(loopParentID); supplementaryForm.set('loopClient', loopParentForm); } - if (request.params.parseUser) { - userObject.id = String(request.params.parseUser); + if (parseUser) { + userObject.id = String(parseUser); supplementaryForm.set('parseUser', userObject); } - supplementaryForm.save().then((results) => results).then((mainObject) => { - // post looped objects - if (loop === true && Object.keys(loopedJson).length > 0) { - utils.Loop.postLoopedForm( - loopedJson, newFieldsArray, request.params, mainObject, - ).then((result) => { - console.log(result); // eslint-disable-line - }, (error) => { - reject(error); - }); - } - resolve(mainObject); - }, (error) => { - reject(error); - }); + try { + const survey = supplementaryForm.save().then((result) => result).then(async (mainObject) => { + if (loop === true && Object.keys(loopedJson).length > 0) { + await utils.Loop.postLoopedForm(loopedJson, newFieldsArray, request.params, mainObject) + .then((result) => result) + .catch((error) => { + const err = `Error: loopedForm ${error}`; + modules.Error.logError(err); + }); + } + return mainObject; + }).catch((error) => { + const err = `Error: postObjectsToClassWithRelation ${error}`; + modules.Error.logError(err); + }); + + return resolve(survey); + } catch (error) { + modules.Error.logError(error); + return reject(error); + } })); /** ****************************************** diff --git a/cloud/src/module/error.js b/cloud/src/module/error.js new file mode 100644 index 00000000..94107ece --- /dev/null +++ b/cloud/src/module/error.js @@ -0,0 +1,13 @@ +const services = require('../services'); + +const { PARSE_ENV } = process.env; + +const Error = { + logError: function logError(error) { + console.error(error); //eslint-disable-line + if (PARSE_ENV !== 'dev') return services.Messaging.Slack.sendMessage('platform-alerts', error); + return error; + }, +}; + +module.exports = Error; diff --git a/cloud/src/module/index.js b/cloud/src/module/index.js new file mode 100644 index 00000000..6a05e06b --- /dev/null +++ b/cloud/src/module/index.js @@ -0,0 +1,7 @@ +const Error = require('./error'); + +const modules = { + Error, +}; + +module.exports = modules; diff --git a/cloud/src/services/index.js b/cloud/src/services/index.js index 0fe59a09..68b575c7 100644 --- a/cloud/src/services/index.js +++ b/cloud/src/services/index.js @@ -2,17 +2,15 @@ const Batch = require('./batch/batch.js'); const Roles = require('./roles/roles.js'); const Aggregate = require('./aggregate/aggregate.js'); const Post = require('./post/post.js'); -const Messaging = require('./messaging/messaging.js'); const Offline = require('./offline/offline.js'); -const Logging = require('./logging/logging'); +const Messaging = require('./messaging/messaging'); const services = { - Logging, batch: Batch, roles: Roles, aggregate: Aggregate, post: Post, - messaging: Messaging, + Messaging, offline: Offline, }; diff --git a/cloud/src/services/logging/logging.js b/cloud/src/services/logging/logging.js deleted file mode 100644 index d6d75c49..00000000 --- a/cloud/src/services/logging/logging.js +++ /dev/null @@ -1,7 +0,0 @@ -const Slack = require('./slack'); - -const classes = { - Slack, -}; - -module.exports = classes; diff --git a/cloud/src/services/messaging/messaging.js b/cloud/src/services/messaging/messaging.js index 1a1cede0..276a56d5 100644 --- a/cloud/src/services/messaging/messaging.js +++ b/cloud/src/services/messaging/messaging.js @@ -1,80 +1,9 @@ -const axios = require('axios').default; - -const { PUENTE_SMS_EMAIL_API_URL: url } = process.env; - - -/** - * Too tightly coupled with just signup and password reset - */ - -async function sendEmail(apiURL, restParamsData, parseObject) { - const { emailSubject, type } = restParamsData; - const { email: emailAddress, objectId, firstname } = parseObject; - - const payload = { - emailSubject, - objectId, - userFullName: firstname, - emailsToSendTo: [ - emailAddress, - ], - type, // signup, passwordReset,default - }; - - return axios.post(`${apiURL}/email`, payload); -} - -async function sendText(apiURL, restParamsData, parseObject) { - const { textTo: phonenumber, type } = restParamsData; - const { objectId, firstname } = parseObject; - - let textBody = ''; - - if (type === 'signup') textBody = `Hello ${firstname}! Verify your Puente account at\nhttps://puente-manage.vercel.app/account/verify/redirect?objectId=${objectId}`; - if (type === 'passwordReset') textBody = `Hello ${firstname}! Reset your Puente account at\nhttps://puente-manage.vercel.app/account/reset?objectId=${objectId}`; - - const payload = { - textTo: phonenumber, - textBody, - }; - - return axios.post(`${apiURL}/text`, payload); -} - +const Slack = require('./slack'); +const TextEmailMessaging = require('./text-email'); const Messaging = { - /** - * Performs a query based on the parameter defined in a column - * - * @example - * sendMessage( - * 'text', - * { - * "textTo": "1234567", - * "textBody": "Text" - * } - * ) - * - * @param {string} path which endpoint to hit - * @param {string} restParamData Data consisting of which - * @returns Results of Query - */ - sendMessage: async function sendMessage(restParams, parseObject) { - const { - runMessaging, - path, - data, - } = restParams; - - if (!runMessaging) return null; - - try { - const response = path === 'email' ? await sendEmail(url, data, parseObject) : await sendText(url, data, parseObject); - return response; - } catch (e) { - return e; - } - }, + Slack, + TextEmailMessaging, }; module.exports = Messaging; diff --git a/cloud/src/services/logging/slack.js b/cloud/src/services/messaging/slack.js similarity index 100% rename from cloud/src/services/logging/slack.js rename to cloud/src/services/messaging/slack.js diff --git a/cloud/src/services/messaging/text-email.js b/cloud/src/services/messaging/text-email.js new file mode 100644 index 00000000..b279d5e3 --- /dev/null +++ b/cloud/src/services/messaging/text-email.js @@ -0,0 +1,80 @@ +const axios = require('axios').default; + +const { PUENTE_SMS_EMAIL_API_URL: url } = process.env; + + +/** + * Too tightly coupled with just signup and password reset + */ + +async function sendEmail(apiURL, restParamsData, parseObject) { + const { emailSubject, type } = restParamsData; + const { email: emailAddress, objectId, firstname } = parseObject; + + const payload = { + emailSubject, + objectId, + userFullName: firstname, + emailsToSendTo: [ + emailAddress, + ], + type, // signup, passwordReset,default + }; + + return axios.post(`${apiURL}/email`, payload); +} + +async function sendText(apiURL, restParamsData, parseObject) { + const { textTo: phonenumber, type } = restParamsData; + const { objectId, firstname } = parseObject; + + let textBody = ''; + + if (type === 'signup') textBody = `Hello ${firstname}! Verify your Puente account at\nhttps://puente-manage.vercel.app/account/verify/redirect?objectId=${objectId}`; + if (type === 'passwordReset') textBody = `Hello ${firstname}! Reset your Puente account at\nhttps://puente-manage.vercel.app/account/reset?objectId=${objectId}`; + + const payload = { + textTo: phonenumber, + textBody, + }; + + return axios.post(`${apiURL}/text`, payload); +} + + +const TextEmailMessaging = { + /** + * Performs a query based on the parameter defined in a column + * + * @example + * sendMessage( + * 'text', + * { + * "textTo": "1234567", + * "textBody": "Text" + * } + * ) + * + * @param {string} path which endpoint to hit + * @param {string} restParamData Data consisting of which + * @returns Results of Query + */ + sendMessage: async function sendMessage(restParams, parseObject) { + const { + runMessaging, + path, + data, + } = restParams; + + if (!runMessaging) return null; + + try { + const response = path === 'email' ? await sendEmail(url, data, parseObject) : await sendText(url, data, parseObject); + return response; + } catch (e) { + return e; + } + }, +}; + +module.exports = TextEmailMessaging; diff --git a/package.json b/package.json index 1ca54240..309060d7 100644 --- a/package.json +++ b/package.json @@ -53,8 +53,8 @@ }, "scripts": { "dashboard": "parse-dashboard --dev --appId myAppId --masterKey myMasterKey --serverURL http://localhost:1337/parse --appName PuenteCloudCode", - "test": "env-cmd -f .env.dev jest", "test-github-actions": "jest", + "test": "env-cmd -f .env.dev jest", "test-staging": "env-cmd -f .env.staging jest && codecov", "start": "node -r esm index.js", "start:hot-reload": "nodemon index.js", From 64d9b638bc709ba41b1588fc3c89b8818639b33e Mon Sep 17 00:00:00 2001 From: Hope Tambala Date: Mon, 12 Dec 2022 23:36:41 -0500 Subject: [PATCH 04/12] Delete .env.staging --- .env.staging | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 .env.staging diff --git a/.env.staging b/.env.staging deleted file mode 100644 index afd2900a..00000000 --- a/.env.staging +++ /dev/null @@ -1,4 +0,0 @@ -PARSE_ENV=staging -PARSE_APP_ID=ZvGwjA7cemNfr9Qtn6LnwnrcgiM3Xl4N3msObrcg -PARSE_JAVASCRIPT_KEY=dQW12E6wgKWrqdlNCYMCIzLzWomgjCZlLZrrXlki -PARSE_SERVER_URL=https://parseapi.back4app.com/ \ No newline at end of file From 890878a68234dac8bbbf561925348d638b657e86 Mon Sep 17 00:00:00 2001 From: Hope Tambala Date: Tue, 13 Dec 2022 08:32:08 -0500 Subject: [PATCH 05/12] chore(release): 1.10.0 --- CHANGELOG.md | 13 +++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f81f7c84..d6dd1144 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,19 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.10.0](https://github.com/hopetambala/puente-node-cloudcode/compare/v1.9.0...v1.10.0) (2022-12-13) + + +### Features + +* add slackbot to posting ([b5a9af4](https://github.com/hopetambala/puente-node-cloudcode/commit/b5a9af4ea4843e7339532dfb4ed896abb71804be)) + + +### Bug Fixes + +* offline post survey hook ([33db521](https://github.com/hopetambala/puente-node-cloudcode/commit/33db521fa976f1f0f8fe322f8c4449d9a1ab25be)) +* return statement if no data ([47db31d](https://github.com/hopetambala/puente-node-cloudcode/commit/47db31db0f0975c8c2b2c683fd3388d05337aa74)) + ## [1.9.0](https://github.com/hopetambala/puente-node-cloudcode/compare/v1.5.0...v1.9.0) (2022-10-10) diff --git a/package-lock.json b/package-lock.json index 4e445d69..c4ea31b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "puente_cloud", - "version": "1.9.0", + "version": "1.10.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 309060d7..5d9837c0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "puente_cloud", - "version": "1.9.0", + "version": "1.10.0", "description": "[Instructions](https://docs.back4app.com/docs/integrations/command-line-interface/setting-up-cloud-code-2/)", "main": "index.js", "directories": { From c5f886df657040de325e8c2b85c9b682c74079c8 Mon Sep 17 00:00:00 2001 From: Hope Tambala Date: Tue, 13 Dec 2022 08:32:42 -0500 Subject: [PATCH 06/12] chore: add logging errors for auth --- cloud/src/definer/auth.definer.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/cloud/src/definer/auth.definer.js b/cloud/src/definer/auth.definer.js index d2fbeb62..3d6f5523 100644 --- a/cloud/src/definer/auth.definer.js +++ b/cloud/src/definer/auth.definer.js @@ -1,4 +1,5 @@ const services = require('../services'); +const modules = require('../module'); /** ****************************************** SIGN UP @@ -95,7 +96,7 @@ Parse.Cloud.define('signup', (request) => new Promise((resolve, reject) => { reject(error); }); }).catch((error) => { - console.log(`Error: ${error.code} ${error.message}`); // eslint-disable-line + modules.Error.logError(`Error: ${error.code} ${error.message}`); reject(error); }); })); @@ -127,14 +128,14 @@ Parse.Cloud.define('signin', (request, response) => new Promise((resolve, reject console.log(`User logged in successful with email: ${result.get('email')}`); // eslint-disable-line resolve(result); }, (error2) => { - console.log(`Error: ${error2.code} ${error2.message}`); // eslint-disable-line + modules.Error.logError(`Error: ${error2.code} ${error2.message}`); response.error(reject(error2)); }); }, (error3) => { - console.log(`Error: ${error3.code} ${error3.message}`); // eslint-disable-line + modules.Error.logError(`Error: ${error3.code} ${error3.message}`); response.error(reject(error3)); }); - console.log(`Error: ${error1.code} ${error1.message}`); // eslint-disable-line + modules.Error.logError(`Error: ${error1.code} ${error1.message}`); response.error(reject(error1)); }); })); From 2658633e27ec911a919f46effea9578ec446b853 Mon Sep 17 00:00:00 2001 From: Hope Tambala Date: Tue, 13 Dec 2022 08:32:56 -0500 Subject: [PATCH 07/12] chore(release): 1.10.1 --- CHANGELOG.md | 2 ++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d6dd1144..27265cc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [1.10.1](https://github.com/hopetambala/puente-node-cloudcode/compare/v1.10.0...v1.10.1) (2022-12-13) + ## [1.10.0](https://github.com/hopetambala/puente-node-cloudcode/compare/v1.9.0...v1.10.0) (2022-12-13) diff --git a/package-lock.json b/package-lock.json index c4ea31b1..b260f7c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "puente_cloud", - "version": "1.10.0", + "version": "1.10.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 5d9837c0..2a118b71 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "puente_cloud", - "version": "1.10.0", + "version": "1.10.1", "description": "[Instructions](https://docs.back4app.com/docs/integrations/command-line-interface/setting-up-cloud-code-2/)", "main": "index.js", "directories": { From 2389e816555e86c4a7bf7f8a92c5094daeb5e68f Mon Sep 17 00:00:00 2001 From: Hope Tambala Date: Tue, 13 Dec 2022 22:19:04 -0500 Subject: [PATCH 08/12] chore: add slack api via wonky nested package --- cloud/package.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 cloud/package.json diff --git a/cloud/package.json b/cloud/package.json new file mode 100644 index 00000000..2c99efa1 --- /dev/null +++ b/cloud/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "@slack/web-api": "^6.8.0" + } +} \ No newline at end of file From bc43e08d58a1979585093ede9fc92167464b1e9c Mon Sep 17 00:00:00 2001 From: Hope Tambala Date: Tue, 13 Dec 2022 22:51:17 -0500 Subject: [PATCH 09/12] chore: fix env --- cloud/src/module/error.js | 4 ++-- cloud/src/services/messaging/slack.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cloud/src/module/error.js b/cloud/src/module/error.js index 94107ece..57ed2fa1 100644 --- a/cloud/src/module/error.js +++ b/cloud/src/module/error.js @@ -1,11 +1,11 @@ const services = require('../services'); -const { PARSE_ENV } = process.env; +const { PUENTE_ENV } = process.env; const Error = { logError: function logError(error) { console.error(error); //eslint-disable-line - if (PARSE_ENV !== 'dev') return services.Messaging.Slack.sendMessage('platform-alerts', error); + if (PUENTE_ENV !== 'dev') return services.Messaging.Slack.sendMessage('platform-alerts', error); return error; }, }; diff --git a/cloud/src/services/messaging/slack.js b/cloud/src/services/messaging/slack.js index 0d5b5408..698831f4 100644 --- a/cloud/src/services/messaging/slack.js +++ b/cloud/src/services/messaging/slack.js @@ -5,10 +5,10 @@ const web = new WebClient(token); const Slack = { sendMessage: async function sendMessage(channel, text) { - const { PARSE_ENV, SLACK_DEV_CHANNEL, SLACK_PROD_CHANNEL } = process.env; + const { PUENTE_ENV, SLACK_DEV_CHANNEL, SLACK_PROD_CHANNEL } = process.env; const channelFactory = { - 'platform-alerts': PARSE_ENV === 'prod' ? SLACK_PROD_CHANNEL : SLACK_DEV_CHANNEL, + 'platform-alerts': PUENTE_ENV === 'prod' ? SLACK_PROD_CHANNEL : SLACK_DEV_CHANNEL, }; From dd3b8e5a6d596728741a84e5b3f7b260be5a25b4 Mon Sep 17 00:00:00 2001 From: Hope Tambala Date: Tue, 13 Dec 2022 22:55:13 -0500 Subject: [PATCH 10/12] chore(release): 1.10.2 --- CHANGELOG.md | 2 ++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27265cc4..b7e786e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [1.10.2](https://github.com/hopetambala/puente-node-cloudcode/compare/v1.10.1...v1.10.2) (2022-12-14) + ### [1.10.1](https://github.com/hopetambala/puente-node-cloudcode/compare/v1.10.0...v1.10.1) (2022-12-13) ## [1.10.0](https://github.com/hopetambala/puente-node-cloudcode/compare/v1.9.0...v1.10.0) (2022-12-13) diff --git a/package-lock.json b/package-lock.json index b260f7c8..3233f38e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "puente_cloud", - "version": "1.10.1", + "version": "1.10.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 2a118b71..d749ae8a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "puente_cloud", - "version": "1.10.1", + "version": "1.10.2", "description": "[Instructions](https://docs.back4app.com/docs/integrations/command-line-interface/setting-up-cloud-code-2/)", "main": "index.js", "directories": { From e8314c3f378cf57b98b32bf869141f5a5bcecb57 Mon Sep 17 00:00:00 2001 From: Hope Tambala Date: Tue, 13 Dec 2022 23:00:06 -0500 Subject: [PATCH 11/12] chore: fix env --- .github/workflows/jest.yaml | 59 ++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/.github/workflows/jest.yaml b/.github/workflows/jest.yaml index abcf4c08..2bce9607 100644 --- a/.github/workflows/jest.yaml +++ b/.github/workflows/jest.yaml @@ -1,48 +1,53 @@ name: Jest Tests env: - PARSE_ENV : "dev" - PARSE_APP_ID : "myAppId" - PARSE_JAVASCRIPT_KEY : "_PLACEHOLDER_" - PARSE_SERVER_URL : "http://localhost:1337/parse" + PARSE_ENV: "dev" + PARSE_APP_ID: "myAppId" + PARSE_JAVASCRIPT_KEY: "_PLACEHOLDER_" + PARSE_SERVER_URL: "http://localhost:1337/parse" + PUENTE_ENV: "dev" + PUENTE_SMS_EMAIL_API_URL: "http://puentes-messaging-microservice.com" + PUENTE_MANAGE_URL: "https://sample-puente-manage.app/" + SLACK_TOKEN: "" + SLACK_DEV_CHANNEL: "" + SLACK_PROD_CHANNEL: "" on: push: - branches: + branches: - master - dev pull_request: - branches: - - master - - dev + branches: + - master + - dev jobs: jest-testing: runs-on: ubuntu-latest strategy: matrix: - node-version: [12.x,14.x] + node-version: [14.x, 16.x] services: mongodb: image: mongo:4.4 ports: - 27017:27017 steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: Setup Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - name: Install Puente CloudCode Dependencies - run: | - npm install - - name: Lint - run: | - npm run lint - - name: Start App and Test Jest - run: | - npm run start & - sleep 40 && - npm run test-github-actions + - name: Checkout + uses: actions/checkout@v2 + - name: Setup Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - name: Install Puente CloudCode Dependencies + run: | + npm install + - name: Lint + run: | + npm run lint + - name: Start App and Test Jest + run: | + npm run start & + sleep 40 && + npm run test-github-actions From 25065adcc59f16625d5a6cb69b5a5575ab52bfd4 Mon Sep 17 00:00:00 2001 From: Hope Tambala Date: Tue, 13 Dec 2022 23:08:48 -0500 Subject: [PATCH 12/12] lint: nested package.json --- cloud/package.json | 6 +- package-lock.json | 994 ++++++++++++++++++++++----------------------- package.json | 2 +- 3 files changed, 481 insertions(+), 521 deletions(-) diff --git a/cloud/package.json b/cloud/package.json index 2c99efa1..82d4aed3 100644 --- a/cloud/package.json +++ b/cloud/package.json @@ -1,5 +1,7 @@ { - "dependencies": { - "@slack/web-api": "^6.8.0" + "dependencies": { + "@slack/web-api": "^6.8.0", + "axios": "^0.27.2", + "lodash": "^4.17.19" } } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 3233f38e..ba5bb2bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,9 +27,9 @@ } }, "@apollo/client": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.7.0.tgz", - "integrity": "sha512-hp4OvrH1ZIQACRYcIrh/C0WFnY7IM7G6nlTpC8DSTEWxfZQ2kvpvDY0I/hYmCs0oAVrg26g3ANEdOzGWTcYbPg==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.7.2.tgz", + "integrity": "sha512-ohAIpXl3mTa1Fd3GT/K37VwQJfTIuuJRp4aOlJ4q/hlx0Wxh+RqDrbn0awtVCOdhGDQN+CQQmVzIqFKn6GziXQ==", "requires": { "@graphql-typed-document-node/core": "^3.1.1", "@wry/context": "^0.7.0", @@ -63,9 +63,9 @@ } }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, "zen-observable-ts": { "version": "1.2.5", @@ -118,12 +118,12 @@ } }, "@apollographql/graphql-upload-8-fork": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-upload-8-fork/-/graphql-upload-8-fork-8.1.3.tgz", - "integrity": "sha512-ssOPUT7euLqDXcdVv3Qs4LoL4BPtfermW1IOouaqEmj36TpHYDmYDIbKoSQxikd9vtMumFnP87OybH7sC9fJ6g==", + "version": "8.1.4", + "resolved": "https://registry.npmjs.org/@apollographql/graphql-upload-8-fork/-/graphql-upload-8-fork-8.1.4.tgz", + "integrity": "sha512-lHAj/PUegYu02zza9Pg0bQQYH5I0ah1nyIzu2YIqOv41P0vu3GCBISAmQCfFHThK7N3dy7dLFPhoKcXlXRLPoQ==", "requires": { "@types/express": "*", - "@types/fs-capacitor": "*", + "@types/fs-capacitor": "^2.0.0", "@types/koa": "*", "busboy": "^0.3.1", "fs-capacitor": "^2.0.4", @@ -216,9 +216,9 @@ } }, "@babel/compat-data": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.3.tgz", - "integrity": "sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", + "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", "dev": true }, "@babel/core": { @@ -269,12 +269,12 @@ } }, "@babel/generator": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.3.tgz", - "integrity": "sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz", + "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", "dev": true, "requires": { - "@babel/types": "^7.19.3", + "@babel/types": "^7.20.5", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" } @@ -299,12 +299,12 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", - "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.19.3", + "@babel/compat-data": "^7.20.0", "@babel/helper-validator-option": "^7.18.6", "browserslist": "^4.21.3", "semver": "^6.3.0" @@ -319,13 +319,13 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" + "regexpu-core": "^5.2.1" } }, "@babel/helper-environment-visitor": { @@ -381,19 +381,19 @@ } }, "@babel/helper-module-transforms": { - "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==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" } }, "@babel/helper-optimise-call-expression": { @@ -406,9 +406,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { @@ -437,21 +437,21 @@ } }, "@babel/helper-simple-access": { - "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==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.20.2" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "dev": true, "requires": { - "@babel/types": "^7.18.9" + "@babel/types": "^7.20.0" } }, "@babel/helper-split-export-declaration": { @@ -464,9 +464,9 @@ } }, "@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==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", "dev": true }, "@babel/helper-validator-identifier": { @@ -482,26 +482,26 @@ "dev": true }, "@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", "dev": true, "requires": { "@babel/helper-function-name": "^7.19.0", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" } }, "@babel/helpers": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz", - "integrity": "sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==", + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz", + "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==", "dev": true, "requires": { "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" } }, "@babel/highlight": { @@ -540,15 +540,15 @@ } }, "@babel/parser": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.3.tgz", - "integrity": "sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz", + "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", - "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", + "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", @@ -598,16 +598,16 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" + "@babel/plugin-transform-parameters": "^7.20.1" } }, "@babel/plugin-proposal-optional-catch-binding": { @@ -788,27 +788,27 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz", + "integrity": "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-classes": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", - "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-compilation-targets": "^7.20.0", "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-function-name": "^7.19.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" } @@ -823,12 +823,12 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz", - "integrity": "sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-dotall-regex": { @@ -899,39 +899,36 @@ } }, "@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.0.tgz", - "integrity": "sha512-x9aiR0WXAWmOWsqcsnrzGR+ieaTMVyGyffPVA7F8cXAGt/UxefYv6uSHZLkAFChN5M5Iy1+wjE+xJuPt22H39A==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.0", + "@babel/helper-module-transforms": "^7.19.6", "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-validator-identifier": "^7.19.1" } }, "@babel/plugin-transform-modules-umd": { @@ -945,13 +942,13 @@ } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-new-target": { @@ -974,12 +971,12 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz", + "integrity": "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.20.2" } }, "@babel/plugin-transform-property-literals": { @@ -992,13 +989,13 @@ } }, "@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" } }, "@babel/plugin-transform-reserved-words": { @@ -1189,19 +1186,19 @@ } }, "@babel/traverse": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.3.tgz", - "integrity": "sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz", + "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.3", + "@babel/generator": "^7.20.5", "@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.3", - "@babel/types": "^7.19.3", + "@babel/parser": "^7.20.5", + "@babel/types": "^7.20.5", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1224,12 +1221,12 @@ } }, "@babel/types": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.3.tgz", - "integrity": "sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz", + "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-string-parser": "^7.19.4", "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" } @@ -1265,10 +1262,25 @@ "kuler": "^2.0.0" } }, + "@graphiql/react": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@graphiql/react/-/react-0.6.0.tgz", + "integrity": "sha512-eC4K2Bzrih+NMOXcOGXxTcqJz9Hcowp/Hx9TSOWUczSifI309kVhBEuHVa/Fnqqw04WyvL6Wvn92gUlRak51Qg==", + "requires": { + "@graphiql/toolkit": "^0.6.0", + "codemirror": "^5.65.3", + "codemirror-graphql": "^1.3.2", + "copy-to-clipboard": "^3.2.0", + "escape-html": "^1.0.3", + "graphql-language-service": "^5.0.6", + "markdown-it": "^12.2.0", + "set-value": "^4.1.0" + } + }, "@graphiql/toolkit": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/@graphiql/toolkit/-/toolkit-0.4.5.tgz", - "integrity": "sha512-QXuuMSSK/0GfBS7tltrGZdyhIvm6oe9TK4VW9pfa8dALYttpzyJ64Q4Sx9I1Ng++yOMJWziM/ksa043zkNHsjQ==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@graphiql/toolkit/-/toolkit-0.6.1.tgz", + "integrity": "sha512-rRjbHko6aSg1RWGr3yOJQqEV1tKe8yw9mDSr/18B+eDhVLQ30yyKk2NznFUT9NmIDzWFGR2pH/0lbBhHKmUCqw==", "requires": { "@n1ru4l/push-pull-async-iterable-iterator": "^3.1.0", "meros": "^1.1.4" @@ -1383,9 +1395,9 @@ } }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" } } }, @@ -1394,21 +1406,11 @@ "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz", "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==", "requires": { - "@graphql-tools/merge": "8.3.1", "@graphql-tools/utils": "8.9.0", "tslib": "^2.4.0", "value-or-promise": "1.0.11" }, "dependencies": { - "@graphql-tools/merge": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz", - "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==", - "requires": { - "@graphql-tools/utils": "8.9.0", - "tslib": "^2.4.0" - } - }, "@graphql-tools/utils": { "version": "8.9.0", "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", @@ -1418,9 +1420,9 @@ } }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" } } }, @@ -2216,13 +2218,13 @@ "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==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "@n1ru4l/push-pull-async-iterable-iterator": { @@ -2249,9 +2251,9 @@ }, "dependencies": { "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", "optional": true } } @@ -2610,9 +2612,9 @@ "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" }, "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, "requires": { "type-detect": "4.0.8" @@ -2647,18 +2649,6 @@ "is-stream": "^1.1.0", "p-queue": "^6.6.1", "p-retry": "^4.0.0" - }, - "dependencies": { - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - } } }, "@szmarczak/http-timer": { @@ -2683,9 +2673,9 @@ } }, "@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "version": "7.1.20", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", + "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -2715,9 +2705,9 @@ } }, "@types/babel__traverse": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", - "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", + "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", "dev": true, "requires": { "@babel/types": "^7.3.0" @@ -2733,14 +2723,14 @@ } }, "@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", "requires": { "@types/http-cache-semantics": "*", - "@types/keyv": "*", + "@types/keyv": "^3.1.4", "@types/node": "*", - "@types/responselike": "*" + "@types/responselike": "^1.0.0" } }, "@types/connect": { @@ -2835,11 +2825,11 @@ } }, "@types/express-unless": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.3.tgz", - "integrity": "sha512-TyPLQaF6w8UlWdv4gj8i46B+INBVzURBNRahCozCSXfsK2VTlL1wNyTlMKw817VHygBtlcl5jfnPadlydr06Yw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-2.0.1.tgz", + "integrity": "sha512-PJLiNw03EjkWDkQbhNjIXXDLObC3eMQhFASDV+WakFbT8eL7YdjlbV6MXd3Av5Lejq499d6pFuV1jyK+EHyG3Q==", "requires": { - "@types/express": "*" + "express-unless": "*" } }, "@types/find-cache-dir": { @@ -2903,9 +2893,9 @@ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, "@types/http-errors": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.2.tgz", - "integrity": "sha512-EqX+YQxINb+MeXaIqYDASb6U6FCHbWjkj4a1CKDBks3d/QiB2+PqBLyO72vLDgAO1wUI4O+9gweRcQK11bTL/w==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==" }, "@types/is-stream": { "version": "1.1.0", @@ -3020,9 +3010,9 @@ "dev": true }, "@types/node": { - "version": "18.7.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz", - "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==" + "version": "18.11.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.15.tgz", + "integrity": "sha512-VkhBbVo2+2oozlkdHXLrb3zjsRkpdnaU2bXmX8Wgle3PUi569eLRaHGlgETQHR7lLL1w7GiG3h9SnePhxNDecw==" }, "@types/normalize-package-data": { "version": "2.4.1", @@ -3052,9 +3042,9 @@ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "@types/react": { - "version": "18.0.21", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.21.tgz", - "integrity": "sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA==", + "version": "18.0.26", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", + "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -3143,9 +3133,9 @@ }, "dependencies": { "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" } } }, @@ -3166,9 +3156,9 @@ }, "dependencies": { "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" } } }, @@ -3208,9 +3198,9 @@ } }, "ace-builds": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.11.2.tgz", - "integrity": "sha512-1VNeUF56b6gkaeeWJXMBBuz5n0ceDchjUwwVmTKpNM/N3YRrUEpykGEEsg7Y1PKP7IRyqtXfAu6VJDg7OZaLfA==" + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.14.0.tgz", + "integrity": "sha512-3q8LvawomApRCt4cC0OzxVjDsZ609lDbm8l0Xl9uqG06dKEq4RT0YXLUyk7J2SxmqIp5YXzZNw767Dr8GKUruw==" }, "acorn": { "version": "7.4.1", @@ -3435,13 +3425,13 @@ } }, "apollo-server-core": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.26.0.tgz", - "integrity": "sha512-z0dAZGu6zLhYLWVaRis6pR1dQbzPhA6xU5z0issR/sQR5kr466vFMF/rq//Jqwpd/A4xfTXZrFmr5urFyl4k4g==", + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.26.1.tgz", + "integrity": "sha512-YnO1YXhHOnCY7Q2SZ0uUtPq6SLCw+t2uI19l59mzWuCyZYdHrtSy3zUEU6pM3tR9vvUuRGkYIfMRlo/Q8a1U5g==", "requires": { "@apollographql/apollo-tools": "^0.5.0", "@apollographql/graphql-playground-html": "1.6.27", - "@apollographql/graphql-upload-8-fork": "^8.1.3", + "@apollographql/graphql-upload-8-fork": "^8.1.4", "@josephg/resolvable": "^1.0.0", "@types/ws": "^7.0.0", "apollo-cache-control": "^0.15.0", @@ -3717,15 +3707,15 @@ "dev": true }, "array-includes": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", - "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", - "es-abstract": "^1.19.5", - "get-intrinsic": "^1.1.1", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", "is-string": "^1.0.7" } }, @@ -3742,25 +3732,25 @@ "dev": true }, "array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", "es-shim-unscopables": "^1.0.0" } }, "array.prototype.reduce": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", - "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", + "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", "es-array-method-boxes-properly": "^1.0.0", "is-string": "^1.0.7" } @@ -3815,9 +3805,9 @@ }, "dependencies": { "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" } } }, @@ -3926,6 +3916,18 @@ "requires": { "follow-redirects": "^1.14.9", "form-data": "^4.0.0" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } } }, "babel-jest": { @@ -4000,15 +4002,6 @@ } } }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, "babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -4587,9 +4580,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001414", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001414.tgz", - "integrity": "sha512-t55jfSaWjCdocnFdKQoO+d2ct9C59UZg4dY3OnUlSZ447r8pUtIKdp0hpAzrGFultmTC+Us+KpKi4GZl/LXlFg==", + "version": "1.0.30001439", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001439.tgz", + "integrity": "sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A==", "dev": true }, "capture-exit": { @@ -4816,9 +4809,9 @@ } }, "codemirror": { - "version": "5.65.9", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.9.tgz", - "integrity": "sha512-19Jox5sAKpusTDgqgKB5dawPpQcY+ipQK7xoEI+MVucEF9qqFaXpeqY1KaoyGBso/wHQoDa4HMMxMjdsS3Zzzw==" + "version": "5.65.10", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.10.tgz", + "integrity": "sha512-IXAG5wlhbgcTJ6rZZcmi4+sjWIbJqIGfeg3tNa3yX84Jb3T4huS5qzQAo/cUisc1l3bI47WZodpyf7cYcocDKg==" }, "codemirror-graphql": { "version": "1.3.2", @@ -5288,9 +5281,9 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -5965,13 +5958,10 @@ } }, "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, - "requires": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "cookie": { "version": "0.4.0", @@ -6051,23 +6041,23 @@ } }, "core-js": { - "version": "3.22.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.7.tgz", - "integrity": "sha512-Jt8SReuDKVNZnZEzyEQT5eK6T2RRCXkfTq7Lo09kpm+fHjgGewSbNjV+Wt4yZMhPDdzz2x1ulI5z/w4nxpBseg==" + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.24.1.tgz", + "integrity": "sha512-0QTBSYSUZ6Gq21utGzkfITDylE8jWC9Ne1D2MrhvlsZBI1x39OdDIVbzSqtgMndIy6BlHxBXpMGqzZmnztg2rg==" }, "core-js-compat": { - "version": "3.25.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.3.tgz", - "integrity": "sha512-xVtYpJQ5grszDHEUU9O7XbjjcZ0ccX3LgQsyqSvTnjX97ZqEgn9F5srmrwwwMtbKzDllyFPL+O+2OFMl1lU4TQ==", + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", + "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", "dev": true, "requires": { "browserslist": "^4.21.4" } }, "core-js-pure": { - "version": "3.25.3", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.25.3.tgz", - "integrity": "sha512-T/7qvgv70MEvRkZ8p6BasLZmOVYKzOaWNBEHAU8FmveCJkl4nko2quqPQOmy6AJIp5MBanhz9no3A94NoRb0XA==" + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.1.tgz", + "integrity": "sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ==" }, "core-util-is": { "version": "1.0.3", @@ -6309,9 +6299,9 @@ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" }, "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, "requires": { "decamelize": "^1.1.0", @@ -6327,9 +6317,9 @@ } }, "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "dev": true }, "decompress-response": { @@ -6387,9 +6377,9 @@ "dev": true }, "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "requires": { "clone": "^1.0.2" } @@ -6636,9 +6626,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "electron-to-chromium": { - "version": "1.4.270", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.270.tgz", - "integrity": "sha512-KNhIzgLiJmDDC444dj9vEOpZEgsV96ult9Iff98Vanumn+ShJHd5se8aX6KeVxdc0YQeqdrezBZv89rleDbvSg==", + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, "emoji-regex": { @@ -6701,9 +6691,9 @@ } }, "es-abstract": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.3.tgz", - "integrity": "sha512-AyrnaKVpMzljIdwjzrj+LxGmj8ik2LckwXacHqrJJ/jxz6dDDBcZ7I7nlHM0FvEW8MfbWJwOd+yT2XzYW49Frw==", + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz", + "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==", "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -6711,11 +6701,12 @@ "function.prototype.name": "^1.1.5", "get-intrinsic": "^1.1.3", "get-symbol-description": "^1.0.0", + "gopd": "^1.0.1", "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", - "is-callable": "^1.2.6", + "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", @@ -6726,8 +6717,8 @@ "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.4.3", "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", "unbox-primitive": "^1.0.2" } }, @@ -7479,6 +7470,11 @@ "vary": "~1.1.2" } }, + "express-unless": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/express-unless/-/express-unless-2.1.3.tgz", + "integrity": "sha512-wj4tLMyCVYuIIKHGt0FhCtIViBcwzWejX0EjNxveAa6dG+0XBCQhMbx+PnkLkFCxLC69qoFrxds4pIyL88inaQ==" + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -7833,12 +7829,12 @@ "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" }, "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", "requires": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", + "combined-stream": "^1.0.6", "mime-types": "^2.1.12" } }, @@ -8486,12 +8482,6 @@ "path-is-absolute": "^1.0.0" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "minimatch": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", @@ -8503,10 +8493,18 @@ } } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", "requires": { "@sindresorhus/is": "^4.0.0", "@szmarczak/http-timer": "^4.0.5", @@ -8528,19 +8526,15 @@ "dev": true }, "graphiql": { - "version": "1.8.9", - "resolved": "https://registry.npmjs.org/graphiql/-/graphiql-1.8.9.tgz", - "integrity": "sha512-X+olqol3VfOrFrsAfYzgNbvHoEE0lDUtg52+f3yLeNY4Ens+rAH4RSdH4wVtoRdh3CafmhVsfLQvn04hHkgftQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/graphiql/-/graphiql-1.10.0.tgz", + "integrity": "sha512-OkhTLRzR8gwpePYLlosr0U3i9rPBmHQMHqm7pABjJ7gHfHi3UuokUAJ+tkKfv2cRHkJXB80Fp31ZAcCL6uG2tg==", "requires": { - "@graphiql/toolkit": "^0.4.4", - "codemirror": "^5.65.3", - "codemirror-graphql": "^1.3.0", - "copy-to-clipboard": "^3.2.0", + "@graphiql/react": "^0.6.0", + "@graphiql/toolkit": "^0.6.0", "entities": "^2.0.0", - "escape-html": "^1.0.3", - "graphql-language-service": "^5.0.4", - "markdown-it": "^12.2.0", - "set-value": "^4.1.0" + "graphql-language-service": "^5.0.6", + "markdown-it": "^12.2.0" } }, "graphql": { @@ -8609,9 +8603,9 @@ }, "dependencies": { "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" } } }, @@ -9185,15 +9179,10 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, "rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.6.0.tgz", + "integrity": "sha512-DDa7d8TFNUalGC9VqXvQ1euWNN7sc63TrUCuM9J998+ViviahMIjKSOU7rfcgFOF+FCD71BhDRv4hrFz+ImDLQ==", "requires": { "tslib": "^2.1.0" } @@ -9225,9 +9214,9 @@ } }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, "wrap-ansi": { "version": "7.0.0", @@ -9242,11 +9231,11 @@ } }, "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", "requires": { - "get-intrinsic": "^1.1.0", + "get-intrinsic": "^1.1.3", "has": "^1.0.3", "side-channel": "^1.0.4" } @@ -9354,9 +9343,9 @@ } }, "is-core-module": { - "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==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "requires": { "has": "^1.0.3" } @@ -9657,9 +9646,9 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "requires": { "@babel/core": "^7.12.3", @@ -9670,21 +9659,21 @@ }, "dependencies": { "@babel/core": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", - "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.5.tgz", + "integrity": "sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.3", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-module-transforms": "^7.19.0", - "@babel/helpers": "^7.19.0", - "@babel/parser": "^7.19.3", + "@babel/generator": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.5", + "@babel/parser": "^7.20.5", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.3", - "@babel/types": "^7.19.3", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -10469,9 +10458,9 @@ }, "dependencies": { "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -10814,9 +10803,9 @@ } }, "jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true }, "jest-regex-util": { @@ -11631,11 +11620,11 @@ "integrity": "sha512-+kHj8HXArPfpPEKGLZ+kB5ONRTCiGQXo8RQYL0hH8t6pWXUBBK5KkkQmTNOwKK4LEsd0yTsgtjJVm4UBSZea4w==" }, "js-beautify": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.2.tgz", - "integrity": "sha512-H85kX95a53os+q1OCqtYe8AXAmgy3BvtysA/V83S3fdhznm6WlUpGi14DqSPbKFsL3dXZFXYl7YQwW9U1+76ng==", + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.4.tgz", + "integrity": "sha512-+b4A9c3glceZEmxyIbxDOYB0ZJdReLvyU1077RqKsO4dZx9FUHjTOJn8VHwpg33QoucIykOiYbh7MfqBOghnrA==", "requires": { - "config-chain": "^1.1.12", + "config-chain": "^1.1.13", "editorconfig": "^0.15.3", "glob": "^7.1.3", "nopt": "^5.0.0" @@ -11986,9 +11975,9 @@ } }, "keyv": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.0.tgz", - "integrity": "sha512-2YvuMsA+jnFGtBareKqgANOEKe1mk3HKiXu2fRmAfyxG0MJAywNhi5ttWA3PMjl4NmpyjZNbFifR2vNjW1znfA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", "requires": { "json-buffer": "3.0.1" } @@ -12285,9 +12274,9 @@ } }, "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash._reinterpolate": { "version": "3.0.0", @@ -12459,9 +12448,9 @@ } }, "loglevel": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", - "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==" + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==" }, "lolex": { "version": "5.1.2", @@ -12504,9 +12493,9 @@ }, "dependencies": { "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" } } }, @@ -12572,16 +12561,6 @@ "ms": "2.1.2" } }, - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -12837,9 +12816,9 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -12959,9 +12938,9 @@ } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" }, "minimist-options": { "version": "4.1.0", @@ -13213,9 +13192,9 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "nan": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", - "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", "dev": true, "optional": true }, @@ -13276,9 +13255,9 @@ }, "dependencies": { "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" } } }, @@ -13335,9 +13314,9 @@ } }, "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.7.tgz", + "integrity": "sha512-EJ3rzxL9pTWPjk5arA0s0dgXpnyiAbJDE6wHT62g7VsgrgQgmmZ+Ru++M1BFofncWja+Pnn3rEr3fieRySAdKQ==", "dev": true }, "nodemon": { @@ -13359,9 +13338,9 @@ }, "dependencies": { "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -13645,25 +13624,25 @@ } }, "object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", "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.20.4" } }, "object.getownpropertydescriptors": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", - "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", + "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==", "requires": { - "array.prototype.reduce": "^1.0.4", + "array.prototype.reduce": "^1.0.5", "call-bind": "^1.0.2", "define-properties": "^1.1.4", - "es-abstract": "^1.20.1" + "es-abstract": "^1.20.4" } }, "object.pick": { @@ -13676,14 +13655,14 @@ } }, "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", "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.20.4" } }, "on-finished": { @@ -13724,27 +13703,12 @@ } }, "optimism": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.1.tgz", - "integrity": "sha512-64i+Uw3otrndfq5kaoGNoY7pvOhSsjFEN4bdEFh80MWVk/dbgJfMv7VFDeCT8LxNAlEVhQmdVEbfE7X2nWNIIg==", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.2.tgz", + "integrity": "sha512-zWNbgWj+3vLEjZNIh/okkY2EUfX+vB9TJopzIZwT1xxaMqC5hRLLraePod4c5n4He08xuXNH+zhKFFCu390wiQ==", "requires": { - "@wry/context": "^0.6.0", + "@wry/context": "^0.7.0", "@wry/trie": "^0.3.0" - }, - "dependencies": { - "@wry/context": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.6.1.tgz", - "integrity": "sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - } } }, "optionator": { @@ -13852,9 +13816,9 @@ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" }, "otpauth": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/otpauth/-/otpauth-7.1.3.tgz", - "integrity": "sha512-oHIdlmPt4i1+ptRh/0gQGo8mmew58pY9Q2wbYfTprZ9ABKAZgCvS0p+3MxjubT5v4UAqmjLuZ5paBa0yJQbE/g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/otpauth/-/otpauth-8.0.1.tgz", + "integrity": "sha512-m39abRFJ3XMchK6Or9TOxErai3X8pk4/DpArOygYguBRYtRaVT53hL6+PV5BxYWVkcnIkPQqJg36ijvD8FvqSA==", "requires": { "jssha": "~3.2.0" } @@ -13991,9 +13955,9 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "requires": { "lru-cache": "^6.0.0" } @@ -14034,35 +13998,35 @@ } }, "parse-dashboard": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/parse-dashboard/-/parse-dashboard-4.1.4.tgz", - "integrity": "sha512-E8mCf80BuKvD/k1T/8yp+VlojrqOn2b7SzRMusSui/6+HkSqa7oduFuwg6dPTzI+keaiG9tup9EaaorZtONukg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/parse-dashboard/-/parse-dashboard-4.2.0.tgz", + "integrity": "sha512-zQEc4jU8EZh7Rs9X6Epo0TMXipEFtPybWyi5c5WQw26QZskJ63aRcx0tKyp37kFF/GjjyLmzFeYnUXVLKsglsA==", "requires": { - "@babel/runtime": "7.18.3", + "@babel/runtime": "7.18.9", "bcryptjs": "2.3.0", "body-parser": "1.20.0", - "commander": "9.3.0", + "commander": "9.4.0", "connect-flash": "0.1.1", "cookie-session": "2.0.0", "copy-to-clipboard": "3.3.1", - "core-js": "3.22.7", + "core-js": "3.24.1", "csurf": "1.11.0", "express": "4.18.1", - "graphiql": "1.8.9", + "graphiql": "1.10.0", "graphql": "16.5.0", "history": "4.10.1", "immutable": "4.1.0", "immutable-devtools": "0.1.5", "inquirer": "8.2.4", - "js-beautify": "1.14.2", - "otpauth": "7.1.3", + "js-beautify": "1.14.4", + "otpauth": "8.0.1", "package-json": "7.0.0", "parse": "3.4.2", "passport": "0.5.3", "passport-local": "1.0.0", "prismjs": "1.28.0", "prop-types": "15.8.1", - "qrcode": "1.5.0", + "qrcode": "1.5.1", "react": "16.14.0", "react-ace": "10.1.0", "react-dnd": "10.0.2", @@ -14070,19 +14034,19 @@ "react-dom": "16.14.0", "react-helmet": "6.1.0", "react-json-view": "1.21.3", - "react-popper-tooltip": "4.3.1", + "react-popper-tooltip": "4.4.2", "react-redux": "8.0.2", "react-router": "5.2.1", "react-router-dom": "5.3.0", "regenerator-runtime": "0.13.9", "semver": "7.3.7", - "typescript": "4.7.2" + "typescript": "4.7.4" }, "dependencies": { "@babel/runtime": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz", - "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -14121,9 +14085,9 @@ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" }, "commander": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", - "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==" + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.0.tgz", + "integrity": "sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw==" }, "content-disposition": { "version": "0.5.4", @@ -14288,6 +14252,11 @@ "unpipe": "1.0.0" } }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -14751,9 +14720,9 @@ }, "dependencies": { "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" } } }, @@ -15314,9 +15283,9 @@ "dev": true }, "qrcode": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.0.tgz", - "integrity": "sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz", + "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==", "requires": { "dijkstrajs": "^1.0.1", "encode-utf8": "^1.0.3", @@ -15628,21 +15597,21 @@ } }, "react-popper-tooltip": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-popper-tooltip/-/react-popper-tooltip-4.3.1.tgz", - "integrity": "sha512-/Lj1vjAEFEFxKKWnxupeS9pRrXYQlJd++OAAj/Ht3uOSqjWLtYWDXKV99e+YO6b5hV3SgXbtkHFzHH4eqlMWJA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/react-popper-tooltip/-/react-popper-tooltip-4.4.2.tgz", + "integrity": "sha512-y48r0mpzysRTZAIh8m2kpZ8S1YPNqGtQPDrlXYSGvDS1c1GpG/NUXbsbIdfbhXfmSaRJuTcaT6N1q3CKuHRVbg==", "requires": { - "@babel/runtime": "^7.15.4", - "@popperjs/core": "^2.10.2", - "react-popper": "^2.2.5" + "@babel/runtime": "^7.18.3", + "@popperjs/core": "^2.11.5", + "react-popper": "^2.3.0" }, "dependencies": { "@babel/runtime": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", - "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.6.tgz", + "integrity": "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==", "requires": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.11" } } } @@ -15685,11 +15654,11 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", - "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.6.tgz", + "integrity": "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==", "requires": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.11" } }, "path-to-regexp": { @@ -15717,11 +15686,11 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz", - "integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==", + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.6.tgz", + "integrity": "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==", "requires": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.11" } } } @@ -15732,9 +15701,9 @@ "integrity": "sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==" }, "react-textarea-autosize": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz", - "integrity": "sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.4.0.tgz", + "integrity": "sha512-YrTFaEHLgJsi8sJVYHBzYn+mkP3prGkmP2DKb/tm0t7CLJY5t1Rxix8070LAKb0wby7bl/lf2EeHkuMihMZMwQ==", "requires": { "@babel/runtime": "^7.10.2", "use-composed-ref": "^1.3.0", @@ -15927,14 +15896,14 @@ } }, "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", "dev": true, "requires": { "@babel/runtime": "^7.8.4" @@ -15967,9 +15936,9 @@ "dev": true }, "regexpu-core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", - "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", "dev": true, "requires": { "regenerate": "^1.4.2", @@ -15977,7 +15946,7 @@ "regjsgen": "^0.7.1", "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" + "unicode-match-property-value-ecmascript": "^2.1.0" } }, "registry-auth-token": { @@ -16301,9 +16270,9 @@ } }, "safe-stable-stringify": { - "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==" + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz", + "integrity": "sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==" }, "safer-buffer": { "version": "2.1.2", @@ -16982,9 +16951,9 @@ "dev": true }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -17124,23 +17093,23 @@ } }, "string.prototype.trimend": { - "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==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "es-abstract": "^1.20.4" } }, "string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" + "es-abstract": "^1.20.4" } }, "string_decoder": { @@ -17254,17 +17223,6 @@ "ms": "^2.1.1" } }, - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -17776,14 +17734,14 @@ } }, "typescript": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz", - "integrity": "sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==" + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" }, "ua-parser-js": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", - "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==" + "version": "0.7.32", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", + "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==" }, "uc.micro": { "version": "1.0.6", @@ -17791,9 +17749,9 @@ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" }, "uglify-js": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.2.tgz", - "integrity": "sha512-bbxglRjsGQMchfvXZNusUcYgiB9Hx2K4AHYXQy2DITZ9Rd+JzhX7+hoocE5Winr7z2oHvPsekkBwXtigvxevXg==", + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", "dev": true, "optional": true }, @@ -17845,9 +17803,9 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true }, "unicode-property-aliases-ecmascript": { @@ -17967,9 +17925,9 @@ "optional": true }, "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==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "dev": true, "requires": { "escalade": "^3.1.1", diff --git a/package.json b/package.json index d749ae8a..072fa033 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "express": "4.17.1", "http": "0.0.0", "json2csv": "^4.2.1", - "lodash": "4.17.19", + "lodash": "^4.17.19", "mailgun-js": "0.22.0", "parse": "2.19.0", "parse-dashboard": "^4.1.4",