From 7f68ce08dda54175aa5d440cc2b87ec80d1c0e78 Mon Sep 17 00:00:00 2001 From: Neil Smyth Date: Tue, 31 May 2022 15:56:00 +0200 Subject: [PATCH 01/18] updated the titles on notifications to share the community name directly --- src/templates/aspect.comment.created.member.js | 6 ++++-- src/templates/aspect.created.admin.js | 6 ++++-- src/templates/aspect.created.member.js | 5 +++-- src/templates/communication.discussion.created.admin.js | 5 +++-- src/templates/communication.discussion.created.member.js | 4 ++-- src/templates/communication.update.admin.js | 4 ++-- src/templates/communication.update.member.js | 4 ++-- src/templates/community.new.member.admin.js | 6 ++++-- src/templates/community.new.member.member.js | 4 ++-- src/templates/community.review.submitted.admin.js | 6 ++++-- src/templates/community.review.submitted.reviewer.js | 4 ++-- src/templates/user.application.admin.js | 5 +++-- src/templates/user.application.applicant.js | 4 ++-- src/templates/user.registration.admin.js | 6 ++++-- src/templates/user.registration.registrant.js | 4 ++-- 15 files changed, 43 insertions(+), 30 deletions(-) diff --git a/src/templates/aspect.comment.created.member.js b/src/templates/aspect.comment.created.member.js index 1c596f30..a73e98b0 100644 --- a/src/templates/aspect.comment.created.member.js +++ b/src/templates/aspect.comment.created.member.js @@ -3,13 +3,15 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'aspect-created-member', - title: 'New comment received on your aspect {{aspect.displayName}}', + title: + '[{{community.name}}] New comment received on your aspect {{aspect.displayName}}', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: 'New comment received on your aspect {{aspect.displayName}}', + subject: + '[{{community.name}}] New comment received on your aspect {{aspect.displayName}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/aspect.created.admin.js b/src/templates/aspect.created.admin.js index 274a2e10..60406e48 100644 --- a/src/templates/aspect.created.admin.js +++ b/src/templates/aspect.created.admin.js @@ -3,13 +3,15 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'aspect-created-admin', - title: 'New aspect created on {{community.name}}: {{aspect.displayName}}', + title: + '[{{community.name}}] Admin - New aspect created: {{aspect.displayName}}', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: 'New aspect created on {{community.name}}: {{aspect.displayName}}', + subject: + '[{{community.name}}] Admin - New aspect created: {{aspect.displayName}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/aspect.created.member.js b/src/templates/aspect.created.member.js index 637f6206..b513671f 100644 --- a/src/templates/aspect.created.member.js +++ b/src/templates/aspect.created.member.js @@ -3,13 +3,14 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'aspect-created-member', - title: 'New aspect created on {{community.name}}: {{aspect.displayName}}', + title: '[{{community.name}}] New aspect created: {{aspect.displayName}}', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: 'New aspect created on {{community.name}}: {{aspect.displayName}}', + subject: + '[{{community.name}}] New aspect created: {{aspect.displayName}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/communication.discussion.created.admin.js b/src/templates/communication.discussion.created.admin.js index b89dd94a..2f22e4ec 100644 --- a/src/templates/communication.discussion.created.admin.js +++ b/src/templates/communication.discussion.created.admin.js @@ -3,14 +3,15 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'communication-discussion-created-admin', - title: 'New discussion created on {{community.name}}: {{discussion.title}}', + title: + '[{{community.name}}] Admin - New discussion created: {{discussion.title}}', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - 'New discussion created on {{community.name}}: {{discussion.title}}', + '[{{community.name}}] Admin - New discussion created: {{discussion.title}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/communication.discussion.created.member.js b/src/templates/communication.discussion.created.member.js index c79c6b51..d2038e3d 100644 --- a/src/templates/communication.discussion.created.member.js +++ b/src/templates/communication.discussion.created.member.js @@ -3,14 +3,14 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'communication-discussion-created-member', - title: 'New discussion created on {{community.name}}: {{discussion.title}}', + title: '[{{community.name}}] New discussion created: {{discussion.title}}', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - 'New discussion created on {{community.name}}: {{discussion.title}}', + '[{{community.name}}] New discussion created: {{discussion.title}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/communication.update.admin.js b/src/templates/communication.update.admin.js index 316c614c..276e1814 100644 --- a/src/templates/communication.update.admin.js +++ b/src/templates/communication.update.admin.js @@ -3,13 +3,13 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'communication-update-admin', - title: 'New update sent to community {{community.name}}', + title: '[{{community.name}}] Admin - New update shared', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: 'New update shared with community {{community.name}}!', + subject: '[{{community.name}}] Admin - new update shared!', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/communication.update.member.js b/src/templates/communication.update.member.js index b89a3396..1bd53c5f 100644 --- a/src/templates/communication.update.member.js +++ b/src/templates/communication.update.member.js @@ -3,13 +3,13 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'communication-update-member', - title: 'New update sent to community {{community.name}}', + title: '[{{community.name}}] New update shared', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: 'New update shared with community {{community.name}}', + subject: '[{{community.name}}] New update shared', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/community.new.member.admin.js b/src/templates/community.new.member.admin.js index 764abe80..f688ab6f 100644 --- a/src/templates/community.new.member.admin.js +++ b/src/templates/community.new.member.admin.js @@ -3,13 +3,15 @@ const templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'community-new-member-admin', - title: 'User {{member.name}} joined the {{community.name}} community', + title: + '[{{community.name}}] Admin - User {{member.name}} joined the community', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: 'User {{member.name}} joined the {{community.name}} community', + subject: + '[{{community.name}}] Admin - User {{member.name}} joined the community', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/community.new.member.member.js b/src/templates/community.new.member.member.js index e2fec62c..e10f883e 100644 --- a/src/templates/community.new.member.member.js +++ b/src/templates/community.new.member.member.js @@ -3,13 +3,13 @@ const templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'community-new-member-member', - title: 'You have joined the {{community.name}} community', + title: '[{{community.name}}] You have joined this community', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{member.email}}', - subject: 'You have joined the {{community.name}} community', + subject: '[{{community.name}}] You have joined this community', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/community.review.submitted.admin.js b/src/templates/community.review.submitted.admin.js index c78b0808..baf9a2dc 100644 --- a/src/templates/community.review.submitted.admin.js +++ b/src/templates/community.review.submitted.admin.js @@ -3,13 +3,15 @@ const templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'community-review-submitted-admin', - title: 'The member {{reviewer.name}} of {{community.name}} submitted a review', + title: + '[{{community.name}}] Admin - The member {{reviewer.name}} submitted a review', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: 'The member {{reviewer.name}} of {{community.name}} submitted a review', + subject: + '[{{community.name}}] Admin - The member {{reviewer.name}} submitted a review', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/community.review.submitted.reviewer.js b/src/templates/community.review.submitted.reviewer.js index cf2777c1..072dea33 100644 --- a/src/templates/community.review.submitted.reviewer.js +++ b/src/templates/community.review.submitted.reviewer.js @@ -3,13 +3,13 @@ const templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'community-review-submitted-reviewer', - title: 'You have submitted a review about {{community.name}} community', + title: '[{{community.name}}] You have submitted a review', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: 'You have submitted a review about {{community.name}} community', + subject: '[{{community.name}}] You have submitted a review', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/user.application.admin.js b/src/templates/user.application.admin.js index a7f97fc8..c4df9f04 100644 --- a/src/templates/user.application.admin.js +++ b/src/templates/user.application.admin.js @@ -3,14 +3,15 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'user-application-admin', - title: 'Application from {{applicant.firstname}}', + title: + '[{{community.name}}] Admin - Application from {{applicant.firstname}}', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - 'Application from {{applicant.name}} to {{community.name}} received!', + '[{{community.name}}] Admin - Application from {{applicant.firstname}} received!', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.name}},

diff --git a/src/templates/user.application.applicant.js b/src/templates/user.application.applicant.js index a1d43fef..f9098aeb 100644 --- a/src/templates/user.application.applicant.js +++ b/src/templates/user.application.applicant.js @@ -3,13 +3,13 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'user-application-applicant', - title: "Application to join '{{community.name}}' received", + title: '[{{community.name}}] Application to join received', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: 'Your application to {{community.name}} was received!', + subject: '[{{community.name}}] Application to join received!', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{applicant.name}},

diff --git a/src/templates/user.registration.admin.js b/src/templates/user.registration.admin.js index 304826f2..f291cf9b 100644 --- a/src/templates/user.registration.admin.js +++ b/src/templates/user.registration.admin.js @@ -3,13 +3,15 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'user-registration-admin', - title: 'New user registration: {{registrant.name}}', + title: + '[{{community.name}}] Admin - New user registration: {{registrant.name}}', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: 'New user registration: {{registrant.name}}', + subject: + '[{{community.name}}] Admin - New user registration: {{registrant.name}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/user.registration.registrant.js b/src/templates/user.registration.registrant.js index fb7d85b9..415d3c11 100644 --- a/src/templates/user.registration.registrant.js +++ b/src/templates/user.registration.registrant.js @@ -3,13 +3,13 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'user-registration-registrant', - title: 'Welcome {{recipient.firstname}}', + title: '[Alkemio] Welcome {{recipient.firstname}}', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: 'Alkemio registration successful!', + subject: '[Alkemio] Registration successful!', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{registrant.name}},

From ead37f0af58abf1ad6455382a779295109d4b233 Mon Sep 17 00:00:00 2001 From: Neil Smyth Date: Fri, 3 Jun 2022 11:41:38 +0200 Subject: [PATCH 02/18] fixed user registration admin update --- src/templates/user.registration.admin.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/templates/user.registration.admin.js b/src/templates/user.registration.admin.js index f291cf9b..1501426a 100644 --- a/src/templates/user.registration.admin.js +++ b/src/templates/user.registration.admin.js @@ -3,15 +3,13 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'user-registration-admin', - title: - '[{{community.name}}] Admin - New user registration: {{registrant.name}}', + title: '[Alkemio] - New user registration: {{registrant.name}}', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: - '[{{community.name}}] Admin - New user registration: {{registrant.name}}', + subject: '[Alkemio] - New user registration: {{registrant.name}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

From b19a9065ff270e7f3373d0925fc6883889f611f1 Mon Sep 17 00:00:00 2001 From: Neil Smyth <30729240+techsmyth@users.noreply.github.com> Date: Tue, 30 Aug 2022 11:04:38 +0200 Subject: [PATCH 03/18] expanded the inforation sent with collaboration interest notification (#138) --- .../dto/community.collaboration.interest.payload.ts | 4 ++++ ...ity.collaboration.interest.notification.builder.ts | 4 ++++ .../community.collaboration.interest.admin.js | 11 ++++++++--- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/common/dto/community.collaboration.interest.payload.ts b/src/common/dto/community.collaboration.interest.payload.ts index c72e972e..c934bde0 100644 --- a/src/common/dto/community.collaboration.interest.payload.ts +++ b/src/common/dto/community.collaboration.interest.payload.ts @@ -5,4 +5,8 @@ export type CommunityCollaborationInterestPayload = { name: string; communityName: string | undefined; }; + relation: { + role: string; + description: string; + }; }; diff --git a/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts b/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts index 835efa99..c10a967b 100644 --- a/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts +++ b/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts @@ -74,6 +74,10 @@ export class CommunityCollaborationInterestNotificationBuilder name: eventPayload.opportunity.name, communityName: eventPayload.opportunity.communityName, }, + relation: { + role: eventPayload.relation.role, + description: eventPayload.relation.description, + }, }; } } diff --git a/src/templates/community.collaboration.interest.admin.js b/src/templates/community.collaboration.interest.admin.js index a0cafb19..d914b623 100644 --- a/src/templates/community.collaboration.interest.admin.js +++ b/src/templates/community.collaboration.interest.admin.js @@ -9,13 +9,18 @@ module.exports = () => ({ email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: 'New user is interested to collaborate on opportunity', + subject: + '{{user.name}} is interested to collaborate on opportunity: {{opportunity.name}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

- The user {{user.name}} is interested to participate in {{opportunity.name}} opportunity. -

+ The user '{{user.name}}' is interested to participate in '{{opportunity.name}}' opportunity: +
+ - role: {{relation.role}}
+ - description: {{relation.description}}
+
+
Sincerely yours, {% endblock %} From fa614a0c0d34578c20c8228450468bfd7dffd977 Mon Sep 17 00:00:00 2001 From: svetoslav Date: Wed, 31 Aug 2022 11:29:07 +0300 Subject: [PATCH 04/18] callout published notification --- notifications.yml | 12 + package-lock.json | 5155 +++++++++++------ package.json | 4 +- src/app.controller.ts | 15 + src/app.module.ts | 2 + src/common/constants/events.ts | 1 + .../dto/callout.published.event.payload.ts | 24 + src/common/dto/index.ts | 1 + src/common/enums/email.template.ts | 1 + ...n.recipient.template.provider.interface.ts | 1 + .../notification.builder.ts | 9 +- .../callout.published.notification.builder.ts | 96 + src/services/domain/builders/index.ts | 1 + .../notification/notification.service.spec.ts | 2 + .../notification/notification.service.ts | 15 +- .../notifme/notification.templates.builder.ts | 6 +- src/templates/callout.published.member.js | 24 + 17 files changed, 3724 insertions(+), 1645 deletions(-) create mode 100644 src/common/dto/callout.published.event.payload.ts create mode 100644 src/services/domain/builders/callout-published/callout.published.notification.builder.ts create mode 100644 src/templates/callout.published.member.js diff --git a/notifications.yml b/notifications.yml index 412324ef..87884324 100644 --- a/notifications.yml +++ b/notifications.yml @@ -231,3 +231,15 @@ recipients: - rule: type: USER_SELF_MANAGEMENT resource_id: + callout_published: + - name: user + rules: + - rule: + type: HUB_MEMBER + resource_id: + - rule: + type: CHALLENGE_MEMBER + resource_id: + - rule: + type: OPPORTUNITY_MEMBER + resource_id: diff --git a/package-lock.json b/package-lock.json index 161be41e..3eede4fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.5.8", "license": "EUPL-1.2", "dependencies": { - "@alkemio/client-lib": "^0.14.10", + "@alkemio/client-lib": "^0.16.2", "@nestjs/axios": "^0.0.1", "@nestjs/common": "^8.0.5", "@nestjs/config": "^1.0.1", @@ -21,8 +21,6 @@ "amqp-connection-manager": "^3.7.0", "amqplib": "^0.8.0", "apollo-server-express": "^3.3.0", - "class-transformer": "^0.4.0", - "class-validator": "^0.13.1", "cross-env": "^7.0.3", "dotenv": "^10.0.0", "helmet": "^4.6.0", @@ -74,37 +72,116 @@ } }, "node_modules/@alkemio/client-lib": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/@alkemio/client-lib/-/client-lib-0.14.10.tgz", - "integrity": "sha512-kVzawtzqoQbRDarBV+kEZ57GFOgmtv4RKcva8U2zIWiYipWYCAV3rdKKdp3Jpz/rvw+9vXkWn5MebrdyCip5+g==", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@alkemio/client-lib/-/client-lib-0.16.2.tgz", + "integrity": "sha512-7WxrIbgimwlgUS9DNAdX1OzeOIorIf8mvrrU1N+jbAq+Gju+J1/QNoMUMYr6FR2sPZo2ejTP1qqM3Bb+xiWHKA==", "dependencies": { + "@graphql-codegen/typescript-graphql-request": "^4.5.3", + "@graphql-codegen/typescript-operations": "^2.5.3", + "@types/graphql-upload": "^8.0.11", "axios": "^0.21.1", - "dotenv": "^8.2.0", - "graphql": "^15.4.0", + "graphql": "^16.6.0", "graphql-request": "^3.3.0", "graphql-tag": "^2.11.0", - "jsonpath": "^1.1.1", + "graphql-upload": "^16.0.1", "semver": "^7.3.4", + "typescript": "^4.7.4", "url-join": "^4.0.1", - "winston": "^3.6.0" + "winston": "^3.8.1" }, "engines": { "node": ">=16.15.0", "npm": ">=8.5.5" } }, - "node_modules/@alkemio/client-lib/node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "node_modules/@alkemio/client-lib/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "engines": { - "node": ">=10" + "node": ">= 0.8" + } + }, + "node_modules/@alkemio/client-lib/node_modules/graphql": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", + "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/@alkemio/client-lib/node_modules/graphql-upload": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/graphql-upload/-/graphql-upload-16.0.1.tgz", + "integrity": "sha512-W739h2T9dPxSacuWee63P1JVmchhmL/nF/Yi8pCm4/DxwV4M9QiFY7HlbnMC/NIIyo3NW7sxa6PZ2EJxSC2IaA==", + "dependencies": { + "@types/busboy": "^1.5.0", + "@types/node": "*", + "@types/object-path": "^0.11.1", + "busboy": "^1.6.0", + "fs-capacitor": "^8.0.0", + "http-errors": "^2.0.0", + "object-path": "^0.11.8" + }, + "engines": { + "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/jaydenseric" + }, + "peerDependencies": { + "@types/express": "^4.0.29", + "@types/koa": "^2.11.4", + "graphql": "^16.3.0" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + }, + "@types/koa": { + "optional": true + } + } + }, + "node_modules/@alkemio/client-lib/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@alkemio/client-lib/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@alkemio/client-lib/node_modules/typescript": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", + "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" } }, "node_modules/@alkemio/client-lib/node_modules/winston": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.7.2.tgz", - "integrity": "sha512-QziIqtojHBoyzUOdQvQiar1DH0Xp9nF1A1y7NVy2DGEsz82SBDtOalS0ulTRGVT14xPX3WRWkCsdcJKqNflKng==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.1.tgz", + "integrity": "sha512-r+6YAiCR4uI3N8eQNOg8k3P3PqwAm20cLKlzVD9E66Ch39+LZC+VH1UKf9JemQj2B3QoUHfKD7Poewn0Pr3Y1w==", "dependencies": { "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", @@ -288,9 +365,9 @@ "dev": true }, "node_modules/@apollo/protobufjs": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.2.tgz", - "integrity": "sha512-vF+zxhPiLtkwxONs6YanSt1EpwpGilThpneExUN5K3tCymuxNnVq2yojTvnpRjv2QfsEIt/n7ozPIIzBLwGIDQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", + "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -317,13 +394,115 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" }, + "node_modules/@apollo/utils.dropunuseddefinitions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz", + "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==", + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.keyvaluecache": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.1.tgz", + "integrity": "sha512-nLgYLomqjVimEzQ4cdvVQkcryi970NDvcRVPfd0OPeXhBfda38WjBq+WhQFk+czSHrmrSp34YHBxpat0EtiowA==", + "dependencies": { + "@apollo/utils.logger": "^1.0.0", + "lru-cache": "^7.10.1" + } + }, + "node_modules/@apollo/utils.keyvaluecache/node_modules/lru-cache": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/@apollo/utils.logger": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.0.tgz", + "integrity": "sha512-dx9XrjyisD2pOa+KsB5RcDbWIAdgC91gJfeyLCgy0ctJMjQe7yZK5kdWaWlaOoCeX0z6YI9iYlg7vMPyMpQF3Q==" + }, + "node_modules/@apollo/utils.printwithreducedwhitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz", + "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==", + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.removealiases": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz", + "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==", + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.sortast": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz", + "integrity": "sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA==", + "dependencies": { + "lodash.sortby": "^4.7.0" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.stripsensitiveliterals": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz", + "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==", + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, + "node_modules/@apollo/utils.usagereporting": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.0.tgz", + "integrity": "sha512-5PL7hJMkTPmdo3oxPtigRrIyPxDk/ddrUryHPDaezL1lSFExpNzsDd2f1j0XJoHOg350GRd3LyD64caLA2PU1w==", + "dependencies": { + "@apollo/utils.dropunuseddefinitions": "^1.1.0", + "@apollo/utils.printwithreducedwhitespace": "^1.1.0", + "@apollo/utils.removealiases": "1.0.0", + "@apollo/utils.sortast": "^1.1.0", + "@apollo/utils.stripsensitiveliterals": "^1.2.0", + "apollo-reporting-protobuf": "^3.3.1" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, "node_modules/@apollographql/apollo-tools": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.1.tgz", - "integrity": "sha512-ZII+/xUFfb9ezDU2gad114+zScxVFMVlZ91f8fGApMzlS1kkqoyLnC4AJaQ1Ya/X+b63I20B4Gd+eCL8QuB4sA==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz", + "integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==", "engines": { "node": ">=8", "npm": ">=6" + }, + "peerDependencies": { + "graphql": "^14.2.1 || ^15.0.0 || ^16.0.0" } }, "node_modules/@apollographql/graphql-playground-html": { @@ -334,23 +513,66 @@ "xss": "^1.0.8" } }, + "node_modules/@ardatan/relay-compiler": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@ardatan/relay-compiler/-/relay-compiler-12.0.0.tgz", + "integrity": "sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==", + "dependencies": { + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/runtime": "^7.0.0", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.0.0", + "babel-preset-fbjs": "^3.4.0", + "chalk": "^4.0.0", + "fb-watchman": "^2.0.0", + "fbjs": "^3.0.0", + "glob": "^7.1.1", + "immutable": "~3.7.6", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "relay-runtime": "12.0.0", + "signedsource": "^1.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "relay-compiler": "bin/relay-compiler" + }, + "peerDependencies": { + "graphql": "*" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "devOptional": true, + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", - "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==", - "dev": true, + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.13.tgz", + "integrity": "sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==", "engines": { "node": ">=6.9.0" } @@ -359,7 +581,6 @@ "version": "7.14.8", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.8.tgz", "integrity": "sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.14.8", @@ -385,65 +606,10 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/@babel/parser": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.8.tgz", - "integrity": "sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/traverse": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.8.tgz", - "integrity": "sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.8", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.8", - "@babel/types": "^7.14.8", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -452,56 +618,42 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/@babel/generator": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.8.tgz", - "integrity": "sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg==", - "dev": true, + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.13.tgz", + "integrity": "sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==", "dependencies": { - "@babel/types": "^7.14.8", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.18.13", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dependencies": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", - "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", - "dev": true, + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", "dependencies": { - "@babel/compat-data": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "@babel/compat-data": "^7.18.8", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "engines": { @@ -515,378 +667,188 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, "bin": { "semver": "bin/semver.js" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "dev": true, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz", + "integrity": "sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA==", "dependencies": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-function-name/node_modules/@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", "dependencies": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "dev": true, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dependencies": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-get-function-arity/node_modules/@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dependencies": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", - "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", - "dev": true, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dependencies": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-hoist-variables/node_modules/@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, + "node_modules/@babel/helper-module-transforms": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", "dependencies": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", - "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", - "dev": true, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dependencies": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", + "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", "dependencies": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", - "dev": true, + "node_modules/@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==", "dependencies": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-imports/node_modules/@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, + "node_modules/@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==", "dependencies": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz", - "integrity": "sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA==", - "dev": true, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dependencies": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-simple-access": "^7.14.8", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.8", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.8", - "@babel/types": "^7.14.8" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/parser": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.8.tgz", - "integrity": "sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/traverse": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.8.tgz", - "integrity": "sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.8", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.8", - "@babel/types": "^7.14.8", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", - "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", - "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", - "dev": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/parser": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.8.tgz", - "integrity": "sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/traverse": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.8.tgz", - "integrity": "sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.8", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.8", - "@babel/types": "^7.14.8", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", - "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access/node_modules/@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration/node_modules/@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - }, + "node_modules/@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==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "devOptional": true, + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true, + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "engines": { "node": ">=6.9.0" } @@ -895,7 +857,6 @@ "version": "7.14.8", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.8.tgz", "integrity": "sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw==", - "dev": true, "dependencies": { "@babel/template": "^7.14.5", "@babel/traverse": "^7.14.8", @@ -905,67 +866,12 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helpers/node_modules/@babel/parser": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.8.tgz", - "integrity": "sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/traverse": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.8.tgz", - "integrity": "sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.8", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.8", - "@babel/types": "^7.14.8", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", - "devOptional": true, + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -977,7 +883,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "devOptional": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -989,7 +894,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "devOptional": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1003,7 +907,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "devOptional": true, "dependencies": { "color-name": "1.1.3" } @@ -1011,14 +914,12 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "devOptional": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "devOptional": true, "engines": { "node": ">=4" } @@ -1027,7 +928,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "devOptional": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -1036,10 +936,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.12.16", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.16.tgz", - "integrity": "sha512-c/+u9cqV6F0+4Hpq01jnJO+GLp2DdT63ppz9Xa+6cHaajM9VFzK/iDXiKK65YtpeVwu+ctfS6iqlMqRgQRzeCw==", - "dev": true, + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz", + "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1047,6 +946,39 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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==", + "dependencies": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.18.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", @@ -1075,7 +1007,6 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -1083,6 +1014,20 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", + "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", @@ -1107,6 +1052,20 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", @@ -1147,7 +1106,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1179,13 +1137,306 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", + "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", + "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.18.9.tgz", + "integrity": "sha512-+G6rp2zRuOAInY5wcggsx4+QVao1qPM0osC9fTUVlAV3zOrzTCnrMAFVnR6+a3T8wz1wFIH7KhYMcMB3u1n80A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-flow": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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==", + "dependencies": { + "@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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz", + "integrity": "sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1194,13 +1445,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", - "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", - "dev": true, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", + "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1209,80 +1460,88 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "dev": true, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/template/node_modules/@babel/parser": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.8.tgz", - "integrity": "sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" + "node_modules/@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "dependencies": { + "regenerator-runtime": "^0.13.4" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" } }, - "node_modules/@babel/template/node_modules/@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, + "node_modules/@babel/runtime/node_modules/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==" + }, + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dependencies": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.13.tgz", - "integrity": "sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13", + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.13.tgz", + "integrity": "sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.13", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.13", + "@babel/types": "^7.18.13", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/traverse/node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "engines": { "node": ">=4" } }, "node_modules/@babel/types": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.13.tgz", - "integrity": "sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ==", - "dev": true, + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", + "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@bcoe/v8-coverage": { @@ -1394,6 +1653,131 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/@graphql-codegen/plugin-helpers": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.6.2.tgz", + "integrity": "sha512-bt5PNix0MwzWP53UdaYm6URrVMWU8RlQhrTSLFjxQ8ShS5zoTlQtpZJGZc5ONqFgKa83qbUmzXUtP8oRVVn8zw==", + "dependencies": { + "@graphql-tools/utils": "^8.8.0", + "change-case-all": "1.0.14", + "common-tags": "1.8.2", + "import-from": "4.0.0", + "lodash": "~4.17.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/plugin-helpers/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/@graphql-codegen/schema-ast": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/schema-ast/-/schema-ast-2.5.1.tgz", + "integrity": "sha512-tewa5DEKbglWn7kYyVBkh3J8YQ5ALqAMVmZwiVFIGOao5u66nd+e4HuFqp0u+Jpz4SJGGi0ap/oFrEvlqLjd2A==", + "dependencies": { + "@graphql-codegen/plugin-helpers": "^2.6.2", + "@graphql-tools/utils": "^8.8.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/schema-ast/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/@graphql-codegen/typescript": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.7.3.tgz", + "integrity": "sha512-EzX/acijXtbG/AwPzho2ZZWaNo00+xAbsRDP+vnT2PwQV3AYq3/5bFvjq1XfAGWbTntdmlYlIwC9hf5bI85WVA==", + "dependencies": { + "@graphql-codegen/plugin-helpers": "^2.6.2", + "@graphql-codegen/schema-ast": "^2.5.1", + "@graphql-codegen/visitor-plugin-common": "2.12.1", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-graphql-request": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-graphql-request/-/typescript-graphql-request-4.5.3.tgz", + "integrity": "sha512-xlQnsuZl16fLFhUDhABSauQuJlhYtJtPc8O0fnRZdRRY1dmtjIhYKHtgg2djpIrHefSeMxkISwG9pgj0kV3RTA==", + "dependencies": { + "@graphql-codegen/plugin-helpers": "^2.6.2", + "@graphql-codegen/visitor-plugin-common": "2.12.1", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", + "graphql-request": "^3.4.0 || ^4.0.0", + "graphql-tag": "^2.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-graphql-request/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/@graphql-codegen/typescript-operations": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-2.5.3.tgz", + "integrity": "sha512-s+pA+Erm0HeBb/D5cNrflwRM5KWhkiA5cbz4uA99l3fzFPveoQBPfRCBu0XAlJLP/kBDy64+o4B8Nfc7wdRtmA==", + "dependencies": { + "@graphql-codegen/plugin-helpers": "^2.6.2", + "@graphql-codegen/typescript": "^2.7.3", + "@graphql-codegen/visitor-plugin-common": "2.12.1", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-operations/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/@graphql-codegen/typescript/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/@graphql-codegen/visitor-plugin-common": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.12.1.tgz", + "integrity": "sha512-dIUrX4+i/uazyPQqXyQ8cqykgNFe1lknjnfDWFo0gnk2W8+ruuL2JpSrj/7efzFHxbYGMQrCABDCUTVLi3DcVA==", + "dependencies": { + "@graphql-codegen/plugin-helpers": "^2.6.2", + "@graphql-tools/optimize": "^1.3.0", + "@graphql-tools/relay-operation-optimizer": "^6.5.0", + "@graphql-tools/utils": "^8.8.0", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.14", + "dependency-graph": "^0.11.0", + "graphql-tag": "^2.11.0", + "parse-filepath": "^1.0.2", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/visitor-plugin-common/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, "node_modules/@graphql-tools/merge": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.1.2.tgz", @@ -1420,6 +1804,40 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" } }, + "node_modules/@graphql-tools/optimize": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.3.1.tgz", + "integrity": "sha512-5j5CZSRGWVobt4bgRRg7zhjPiSimk+/zIuColih8E8DxuFOaJ+t0qu7eZS5KXWBkjcd4BPNuhUPpNlEmHPqVRQ==", + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/optimize/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/@graphql-tools/relay-operation-optimizer": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.4.tgz", + "integrity": "sha512-1epuPdtz14233EjrWs4n2UQxoqRHhb6OKIltiJvNR1L/67ZtB02RxESV2PFGqGphdBUZHL7zKdBIUGIaF8sJ5g==", + "dependencies": { + "@ardatan/relay-compiler": "12.0.0", + "@graphql-tools/utils": "8.10.1", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/relay-operation-optimizer/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, "node_modules/@graphql-tools/schema": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.2.0.tgz", @@ -1435,16 +1853,21 @@ } }, "node_modules/@graphql-tools/utils": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.2.2.tgz", - "integrity": "sha512-29FFY5U4lpXuBiW9dRvuWnBVwGhWbGLa2leZcAMU/Pz47Cr/QLZGVgpLBV9rt+Gbs7wyIJM7t7EuksPs0RDm3g==", + "version": "8.10.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.10.1.tgz", + "integrity": "sha512-UYi/afPvxZ8mz0LjplMxOSmGDPenVS/Q0zJ/6LOyF9yZdJYIDe+J+Qr/I9+rCYQmgBW4BJeRUUc7VoUzZPfZDA==", "dependencies": { - "tslib": "~2.3.0" + "tslib": "^2.4.0" }, "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, + "node_modules/@graphql-tools/utils/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, "node_modules/@humanwhocodes/config-array": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", @@ -2180,6 +2603,59 @@ "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==" }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@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==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@nestjs/axios": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-0.0.1.tgz", @@ -2642,7 +3118,7 @@ "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" }, "node_modules/@protobufjs/base64": { "version": "1.1.2", @@ -2657,12 +3133,12 @@ "node_modules/@protobufjs/eventemitter": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" }, "node_modules/@protobufjs/fetch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" @@ -2671,27 +3147,27 @@ "node_modules/@protobufjs/float": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" }, "node_modules/@protobufjs/inquire": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" }, "node_modules/@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" }, "node_modules/@protobufjs/pool": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" }, "node_modules/@protobufjs/utf8": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "node_modules/@sinonjs/commons": { "version": "1.8.3", @@ -2818,6 +3294,14 @@ "@types/node": "*" } }, + "node_modules/@types/busboy": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/busboy/-/busboy-1.5.0.tgz", + "integrity": "sha512-ncOOhwmyFDW76c/Tuvv9MA9VGYUCn8blzyWmzYELcNGDb0WXWLSmFi7hJq25YdRBYJrmMBB5jZZwUjlJe9HCjQ==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -2826,12 +3310,28 @@ "@types/node": "*" } }, + "node_modules/@types/content-disposition": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", + "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==" + }, "node_modules/@types/cookiejar": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", "dev": true }, + "node_modules/@types/cookies": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", + "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", + "dependencies": { + "@types/connect": "*", + "@types/express": "*", + "@types/keygrip": "*", + "@types/node": "*" + } + }, "node_modules/@types/cors": { "version": "2.8.12", "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", @@ -2898,6 +3398,14 @@ "@types/express": "*" } }, + "node_modules/@types/fs-capacitor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz", + "integrity": "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", @@ -2907,6 +3415,27 @@ "@types/node": "*" } }, + "node_modules/@types/graphql-upload": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/@types/graphql-upload/-/graphql-upload-8.0.11.tgz", + "integrity": "sha512-AE8RWANHutpsQt945lQZKlkq0V/zBxU5R0xhKLZN3KkBMlW95/5uJzk01HUl8gbDkG7hGl8l8lJKbi91k0UnPw==", + "dependencies": { + "@types/express": "*", + "@types/fs-capacitor": "*", + "@types/koa": "*", + "graphql": "0.13.1 - 16" + } + }, + "node_modules/@types/http-assert": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", + "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==" + }, + "node_modules/@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==" + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", @@ -2953,10 +3482,38 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, + "node_modules/@types/keygrip": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", + "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" + }, + "node_modules/@types/koa": { + "version": "2.13.5", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz", + "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==", + "dependencies": { + "@types/accepts": "*", + "@types/content-disposition": "*", + "@types/cookies": "*", + "@types/http-assert": "*", + "@types/http-errors": "*", + "@types/keygrip": "*", + "@types/koa-compose": "*", + "@types/node": "*" + } + }, + "node_modules/@types/koa-compose": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", + "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", + "dependencies": { + "@types/koa": "*" + } + }, "node_modules/@types/long": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", - "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, "node_modules/@types/mime": { "version": "1.3.2", @@ -2985,6 +3542,11 @@ "resolved": "https://registry.npmjs.org/@types/nunjucks/-/nunjucks-3.2.0.tgz", "integrity": "sha512-1FM36Hm3EdidJmWlZZafkg/kZME0UZ/0vQ46JE8R7R0JqQafah0r+d4i6d/MJg5DnKxEeAOAeifEVkzo7fEvGg==" }, + "node_modules/@types/object-path": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@types/object-path/-/object-path-0.11.1.tgz", + "integrity": "sha512-219LSCO9HPcoXcRTC6DbCs0FRhZgBnEMzf16RRqkT40WbkKx3mOeQuz3e2XqbfhOz/AHfbru0kzB1n1RCAsIIg==" + }, "node_modules/@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", @@ -3700,7 +4262,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -3732,106 +4293,126 @@ } }, "node_modules/apollo-datasource": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.1.0.tgz", - "integrity": "sha512-ywcVjuWNo84eMB9uBOYygQI+00+Ne4ShyPIxJzT//sn1j1Fu3J+KStMNd6s1jyERWgjGZzxkiLn6nLmwsGymBg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", + "integrity": "sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==", "dependencies": { - "apollo-server-caching": "^3.1.0", - "apollo-server-env": "^4.0.3" + "@apollo/utils.keyvaluecache": "^1.0.1", + "apollo-server-env": "^4.2.1" }, "engines": { "node": ">=12.0" } }, - "node_modules/apollo-graphql": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.9.3.tgz", - "integrity": "sha512-rcAl2E841Iko4kSzj4Pt3PRBitmyq1MvoEmpl04TQSpGnoVgl1E/ZXuLBYxMTSnEAm7umn2IsoY+c6Ll9U/10A==", - "dependencies": { - "core-js-pure": "^3.10.2", - "lodash.sortby": "^4.7.0", - "sha.js": "^2.4.11" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^14.2.1 || ^15.0.0" - } - }, "node_modules/apollo-reporting-protobuf": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.0.0.tgz", - "integrity": "sha512-jmCD+6gECt8KS7PxP460hztT/5URTbv2Kg0zgnR6iWPGce88IBmSUjcqf1Z6wJJq7Teb8Hu7WbyyMhn0vN5TxQ==", - "dependencies": { - "@apollo/protobufjs": "1.2.2" - } - }, - "node_modules/apollo-server-caching": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-3.1.0.tgz", - "integrity": "sha512-bZ4bo0kSAsax9LbMQPlpuMTkQ657idF2ehOYe4Iw+8vj7vfAYa39Ii9IlaVAFMC1FxCYzLNFz+leZBm/Stn/NA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", + "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=12.0" + "@apollo/protobufjs": "1.2.4" } }, "node_modules/apollo-server-core": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.3.0.tgz", - "integrity": "sha512-KmkzKVG3yjybouDyUX6Melv39u1EOFipvAKP17IlPis/TjVbubJmb6hkE0am/g2RipyhRvlpxAjHqPaCTXR1dQ==", - "dependencies": { - "@apollographql/apollo-tools": "^0.5.1", + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.10.2.tgz", + "integrity": "sha512-/1o9KPoAMgcjJJ9Y0IH1665wf9d02L/m/mcfBOHiFmRgeGkNgrhTy59BxQTBK241USAWMhwMpp171cv/hM5Dng==", + "dependencies": { + "@apollo/utils.keyvaluecache": "^1.0.1", + "@apollo/utils.logger": "^1.0.0", + "@apollo/utils.usagereporting": "^1.0.0", + "@apollographql/apollo-tools": "^0.5.3", "@apollographql/graphql-playground-html": "1.6.29", "@graphql-tools/mock": "^8.1.2", "@graphql-tools/schema": "^8.0.0", - "@graphql-tools/utils": "^8.0.0", "@josephg/resolvable": "^1.0.0", - "apollo-datasource": "^3.1.0", - "apollo-graphql": "^0.9.0", - "apollo-reporting-protobuf": "^3.0.0", - "apollo-server-caching": "^3.1.0", - "apollo-server-env": "^4.0.3", - "apollo-server-errors": "^3.1.0", - "apollo-server-plugin-base": "^3.2.0", - "apollo-server-types": "^3.2.0", + "apollo-datasource": "^3.3.2", + "apollo-reporting-protobuf": "^3.3.2", + "apollo-server-env": "^4.2.1", + "apollo-server-errors": "^3.3.1", + "apollo-server-plugin-base": "^3.6.2", + "apollo-server-types": "^3.6.2", "async-retry": "^1.2.1", "fast-json-stable-stringify": "^2.1.0", "graphql-tag": "^2.11.0", "loglevel": "^1.6.8", "lru-cache": "^6.0.0", "sha.js": "^2.4.11", - "uuid": "^8.0.0" + "uuid": "^8.0.0", + "whatwg-mimetype": "^3.0.0" }, "engines": { "node": ">=12.0" }, "peerDependencies": { - "graphql": "^15.3.0" + "graphql": "^15.3.0 || ^16.0.0" + } + }, + "node_modules/apollo-server-core/node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "engines": { + "node": ">=12" } }, "node_modules/apollo-server-env": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.0.3.tgz", - "integrity": "sha512-B32+RUOM4GUJAwnQqQE1mT1BG7+VfW3a0A87Bp3gv/q8iNnhY2BIWe74Qn03pX8n27g3EGVCt0kcBuHhjG5ltA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", + "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", "dependencies": { - "node-fetch": "^2.6.1" + "node-fetch": "^2.6.7" }, "engines": { "node": ">=12.0" } }, + "node_modules/apollo-server-env/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/apollo-server-env/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/apollo-server-env/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/apollo-server-env/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/apollo-server-errors": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.1.0.tgz", - "integrity": "sha512-bUmobPEvtcBFt+OVHYqD390gacX/Cm5s5OI5gNZho8mYKAA6OjgnRlkm/Lti6NzniXVxEQyD5vjkC6Ox30mGFg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz", + "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==", "engines": { "node": ">=12.0" }, "peerDependencies": { - "graphql": "^15.3.0" + "graphql": "^15.3.0 || ^16.0.0" } }, "node_modules/apollo-server-express": { @@ -3860,33 +4441,34 @@ } }, "node_modules/apollo-server-plugin-base": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.2.0.tgz", - "integrity": "sha512-anjyiw79wxU4Cj2bYZFWQqZPjuaZ4mVJvxCoyvkFrNvjPua9dovCOfpng43C5NwdsqJpz78Vqs236eFM2QoeaA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.6.2.tgz", + "integrity": "sha512-erWXjLOO1u7fxQkbxJ2cwSO7p0tYzNied91I1SJ9tikXZ/2eZUyDyvrpI+4g70kOdEi+AmJ5Fo8ahEXKJ75zdg==", "dependencies": { - "apollo-server-types": "^3.2.0" + "apollo-server-types": "^3.6.2" }, "engines": { "node": ">=12.0" }, "peerDependencies": { - "graphql": "^15.3.0" + "graphql": "^15.3.0 || ^16.0.0" } }, "node_modules/apollo-server-types": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.2.0.tgz", - "integrity": "sha512-Fh7QP84ufDZHbLzoLyyxyzznlW8cpgEZYYkGsS1i36zY4VaAt5OUOp1f+FxWdLGehq0Arwb6D1W7y712IoZ/JQ==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.2.tgz", + "integrity": "sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==", "dependencies": { - "apollo-reporting-protobuf": "^3.0.0", - "apollo-server-caching": "^3.1.0", - "apollo-server-env": "^4.0.3" + "@apollo/utils.keyvaluecache": "^1.0.1", + "@apollo/utils.logger": "^1.0.0", + "apollo-reporting-protobuf": "^3.3.2", + "apollo-server-env": "^4.2.1" }, "engines": { "node": ">=12.0" }, "peerDependencies": { - "graphql": "^15.3.0" + "graphql": "^15.3.0 || ^16.0.0" } }, "node_modules/append-field": { @@ -4064,6 +4646,17 @@ "node": ">=8.0.0" } }, + "node_modules/auto-bind": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", + "integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -4148,6 +4741,14 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/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==", + "dependencies": { + "object.assign": "^4.1.0" + } + }, "node_modules/babel-plugin-istanbul": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", @@ -4179,6 +4780,11 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/babel-plugin-syntax-trailing-function-commas": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==" + }, "node_modules/babel-preset-current-node-syntax": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", @@ -4202,6 +4808,43 @@ "@babel/core": "^7.0.0" } }, + "node_modules/babel-preset-fbjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", + "dependencies": { + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/babel-preset-jest": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz", @@ -4504,26 +5147,30 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "dev": true, + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, "node_modules/bs-logger": { @@ -4542,7 +5189,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, "dependencies": { "node-int64": "^0.4.0" } @@ -4635,20 +5281,27 @@ "node": ">=6" } }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, "node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001340", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001340.tgz", - "integrity": "sha512-jUNz+a9blQTQVu4uFcn17uAD8IDizPzQkIKh3LCJfg9BkyIqExYYdyc/ZSlWUSKb8iYiXxKsxbv4zYSvkqjrxw==", - "dev": true, + "version": "1.0.30001385", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001385.tgz", + "integrity": "sha512-MpiCqJGhBkHgpyimE9GWmZTnyHyEEM35u115bD3QBrXpjvL/JgcP8cUhKJshfmg4OtEHFenifcK5sZayEw5tvQ==", "funding": [ { "type": "opencollective", @@ -4660,6 +5313,16 @@ } ] }, + "node_modules/capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -4687,6 +5350,42 @@ "node": ">=8" } }, + "node_modules/change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dependencies": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/change-case-all": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz", + "integrity": "sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==", + "dependencies": { + "change-case": "^4.1.2", + "is-lower-case": "^2.0.2", + "is-upper-case": "^2.0.2", + "lower-case": "^2.0.2", + "lower-case-first": "^2.0.2", + "sponge-case": "^1.0.1", + "swap-case": "^2.0.2", + "title-case": "^3.0.3", + "upper-case": "^2.0.2", + "upper-case-first": "^2.0.2" + } + }, "node_modules/char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -4779,12 +5478,16 @@ "node_modules/class-transformer": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz", - "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" + "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==", + "optional": true, + "peer": true }, "node_modules/class-validator": { "version": "0.13.2", "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz", "integrity": "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==", + "optional": true, + "peer": true, "dependencies": { "libphonenumber-js": "^1.9.43", "validator": "^13.7.0" @@ -4996,6 +5699,14 @@ "node": ">= 6" } }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/compare-versions": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", @@ -5072,6 +5783,16 @@ "integrity": "sha512-VZzbIORbP+PPcN/gg3DXClTLPLg5Slwd5fL2MIc+o1qZ4BXBvWyc6QxPk6T/Mkr6IVjRpoAGf32XxP3ZWMVRcQ==", "optional": true }, + "node_modules/constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, "node_modules/container-info": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/container-info/-/container-info-1.1.0.tgz", @@ -5120,7 +5841,6 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.1" } @@ -5152,16 +5872,6 @@ "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", "hasInstallScript": true }, - "node_modules/core-js-pure": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.18.0.tgz", - "integrity": "sha512-ZnK+9vyuMhKulIGqT/7RHGRok8RtkHMEX/BGPHkHx+ouDkq+MUvf9mfIgdqhpmPDu8+V5UtRn/CbCRc9I4lX4w==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -5445,6 +6155,14 @@ } } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/decimal.js": { "version": "10.3.1", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", @@ -5460,7 +6178,8 @@ "node_modules/deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true }, "node_modules/deepmerge": { "version": "4.2.2", @@ -5484,7 +6203,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "devOptional": true, "dependencies": { "object-keys": "^1.0.12" }, @@ -5509,6 +6227,14 @@ "node": ">= 0.6" } }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", @@ -5622,6 +6348,15 @@ "domelementtype": "1" } }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/dotenv": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", @@ -5836,10 +6571,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.790", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.790.tgz", - "integrity": "sha512-epMH/S2MkhBv+Y0+nHK8dC7bzmOaPwcmiYqt+VwxSUJLgPzkqZnGUEQ8eVhy5zGmgWm9tDDdXkHDzOEsVU979A==", - "dev": true + "version": "1.4.235", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.235.tgz", + "integrity": "sha512-eNU2SmVZYTzYVA5aAWmhAJbdVil5/8H5nMq6kGD0Yxd4k2uKIuT8YmS46I0QXY7iOoPPcb6jjem9/2xyuH5+XQ==" }, "node_modules/emittery": { "version": "0.8.1", @@ -5856,8 +6590,7 @@ "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/enabled": { "version": "2.0.0", @@ -6196,7 +6929,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, "engines": { "node": ">=6" } @@ -6210,7 +6942,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "devOptional": true, "engines": { "node": ">=0.8.0" } @@ -6769,6 +7500,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -6823,6 +7555,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, "engines": { "node": ">=4.0" } @@ -6831,6 +7564,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -7216,7 +7950,8 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true }, "node_modules/fast-redact": { "version": "3.0.1", @@ -7254,11 +7989,29 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, "dependencies": { "bser": "2.1.1" } }, + "node_modules/fbjs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", + "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==", + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.30" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + }, "node_modules/fecha": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz", @@ -7532,6 +8285,14 @@ "node": ">= 0.6" } }, + "node_modules/fs-capacitor": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-8.0.0.tgz", + "integrity": "sha512-+Lk6iSKajdGw+7XYxUkwIzreJ2G1JFlYOdnKJv5PzwFLVsoJYBpCuS7WPIUSNT1IbQaEWT1nhYU63Ud03DyzLA==", + "engines": { + "node": "^14.17.0 || >=16.0.0" + } + }, "node_modules/fs-extra": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", @@ -7585,7 +8346,6 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -7594,7 +8354,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -7870,6 +8629,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dependencies": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/helmet": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/helmet/-/helmet-4.6.0.tgz", @@ -8106,6 +8874,14 @@ "node": ">=6.9.0" } }, + "node_modules/immutable": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", + "integrity": "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -8131,6 +8907,17 @@ "node": ">=4" } }, + "node_modules/import-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", + "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", + "engines": { + "node": ">=12.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/import-local": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", @@ -8316,6 +9103,14 @@ "node": ">= 0.10" } }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -8330,6 +9125,18 @@ "integrity": "sha1-GzJYKQ02X6gyOeiZB93kWS52IKg=", "dev": true }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -8431,7 +9238,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -8474,6 +9280,14 @@ "node": ">=8" } }, + "node_modules/is-lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz", + "integrity": "sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/is-native": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-native/-/is-native-1.0.1.tgz", @@ -8567,6 +9381,17 @@ "node": ">=0.10.0" } }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -8610,6 +9435,17 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -8622,6 +9458,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-2.0.2.tgz", + "integrity": "sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -10755,8 +11607,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "devOptional": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/jsbn": { "version": "0.1.1", @@ -10825,7 +11676,6 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -10877,7 +11727,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, "dependencies": { "minimist": "^1.2.5" }, @@ -10906,28 +11755,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/jsonpath": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", - "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", - "dependencies": { - "esprima": "1.2.2", - "static-eval": "2.0.2", - "underscore": "1.12.1" - } - }, - "node_modules/jsonpath/node_modules/esprima": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", - "integrity": "sha1-dqD9Zvz+FU/SkmZ9wmQBl1CxZXs=", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/jsonwebtoken": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", @@ -11135,7 +11962,9 @@ "node_modules/libphonenumber-js": { "version": "1.9.50", "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.50.tgz", - "integrity": "sha512-cCzQPChw2XbordcO2LKiw5Htx5leHVfFk/EXkxNHqJfFo7Fndcb1kF5wPJpc316vCJhhikedYnVysMh3Sc7Ocw==" + "integrity": "sha512-cCzQPChw2XbordcO2LKiw5Htx5leHVfFk/EXkxNHqJfFo7Fndcb1kF5wPJpc316vCJhhikedYnVysMh3Sc7Ocw==", + "optional": true, + "peer": true }, "node_modules/lines-and-columns": { "version": "1.1.6", @@ -11626,6 +12455,33 @@ "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lower-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-2.0.2.tgz", + "integrity": "sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -11718,6 +12574,14 @@ "tmpl": "1.0.x" } }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/mapcap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/mapcap/-/mapcap-1.0.0.tgz", @@ -12017,6 +12881,15 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node_modules/node-adm": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/node-adm/-/node-adm-0.9.1.tgz", @@ -12074,8 +12947,7 @@ "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" }, "node_modules/node-modules-regexp": { "version": "1.0.0", @@ -12141,10 +13013,9 @@ } }, "node_modules/node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "dev": true + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" }, "node_modules/nodemailer": { "version": "6.6.2", @@ -12628,6 +13499,11 @@ "boolbase": "~1.0.0" } }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" + }, "node_modules/nunjucks": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.3.tgz", @@ -12723,16 +13599,22 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "devOptional": true, "engines": { "node": ">= 0.4" } }, + "node_modules/object-path": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", + "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", + "engines": { + "node": ">= 10.12.0" + } + }, "node_modules/object.assign": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "devOptional": true, "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -13004,11 +13886,19 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "devOptional": true, "engines": { "node": ">=6" } }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -13021,6 +13911,19 @@ "node": ">=6" } }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -13080,11 +13983,28 @@ "node": ">= 0.8" } }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "devOptional": true, "engines": { "node": ">=8" } @@ -13111,6 +14031,25 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "devOptional": true }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-to-regexp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", @@ -13130,6 +14069,11 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, "node_modules/picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -13362,6 +14306,14 @@ "node": ">=0.4.0" } }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dependencies": { + "asap": "~2.0.3" + } + }, "node_modules/promise-breaker": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-5.0.0.tgz", @@ -13715,6 +14667,16 @@ "integrity": "sha512-l18ha6HEZc+No/uK4GyAnNxgKW7nvEe35IaeN54sShMojtqik2a6GbTyuiezkjpPaqP874Z3lW5ysBo5irz4NA==", "optional": true }, + "node_modules/relay-runtime": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-12.0.0.tgz", + "integrity": "sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "fbjs": "^3.0.0", + "invariant": "^2.2.4" + } + }, "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -13792,7 +14754,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -13817,6 +14778,11 @@ "resolve": "^1.12.0" } }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -14129,6 +15095,16 @@ "node": ">= 0.8" } }, + "node_modules/sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "node_modules/serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -14152,12 +15128,22 @@ "node": ">= 0.8.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "node_modules/set-cookie-serde": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/set-cookie-serde/-/set-cookie-serde-1.0.0.tgz", "integrity": "sha512-Vq8e5GsupfJ7okHIvEPcfs5neCo7MZ1ZuWrO3sllYi3DOWt6bSSCpADzqXjz3k0fXehnoFIrmmhty9IN6U6BXQ==", "optional": true }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -14236,6 +15222,11 @@ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, + "node_modules/signedsource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", + "integrity": "sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==" + }, "node_modules/simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -14343,6 +15334,15 @@ "nodemailer-fetch": "1.6.0" } }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/socket.io": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", @@ -14562,6 +15562,14 @@ "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", "devOptional": true }, + "node_modules/sponge-case": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-1.0.1.tgz", + "integrity": "sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -14633,91 +15641,6 @@ "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==", "optional": true }, - "node_modules/static-eval": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", - "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", - "dependencies": { - "escodegen": "^1.8.1" - } - }, - "node_modules/static-eval/node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/static-eval/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-eval/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-eval/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/static-eval/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-eval/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -14803,7 +15726,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -14857,7 +15779,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -14966,6 +15887,14 @@ "node": ">=8" } }, + "node_modules/swap-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-2.0.2.tgz", + "integrity": "sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/symbol-observable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", @@ -15063,14 +15992,14 @@ } }, "node_modules/terser": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", - "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", "dev": true, "dependencies": { + "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.8.0-beta.0", "source-map-support": "~0.5.20" }, "bin": { @@ -15141,44 +16070,6 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node_modules/terser/node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dev": true, - "dependencies": { - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/terser/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/terser/node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "node_modules/terser/node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -15225,6 +16116,14 @@ "next-tick": "1" } }, + "node_modules/title-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", + "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -15253,7 +16152,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, "engines": { "node": ">=4" } @@ -15647,6 +16545,24 @@ "node": ">=4.2.0" } }, + "node_modules/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==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, "node_modules/ultron": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", @@ -15668,16 +16584,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/undefsafe": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" }, - "node_modules/underscore": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" - }, "node_modules/unicode-byte-truncate": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unicode-byte-truncate/-/unicode-byte-truncate-1.0.0.tgz", @@ -15711,6 +16630,47 @@ "node": ">= 0.8" } }, + "node_modules/update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -15812,6 +16772,8 @@ "version": "13.7.0", "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "optional": true, + "peer": true, "engines": { "node": ">= 0.10" } @@ -16277,6 +17239,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, "node_modules/which-pm-runs": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", @@ -16378,6 +17345,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -16476,51 +17444,160 @@ "xss": "bin/xss" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 0.10.0" + } + }, + "node_modules/xss/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yaml": { + "version": "2.0.0-7", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.0.0-7.tgz", + "integrity": "sha512-RbI2Tm3hl9AoHY4wWyWvGvJfFIbHOzuzaxum6ez1A0vve+uXgNor03Wys4t+2sgjJSVSe+B2xerd1/dnvqHlOA==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/xss/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, "engines": { - "node": ">=0.4" + "node": ">=8" } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, + "node_modules/yargs/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yaml": { - "version": "2.0.0-7", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.0.0-7.tgz", - "integrity": "sha512-RbI2Tm3hl9AoHY4wWyWvGvJfFIbHOzuzaxum6ez1A0vve+uXgNor03Wys4t+2sgjJSVSe+B2xerd1/dnvqHlOA==", - "engines": { - "node": ">= 12" - } + "node_modules/yargs/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, "engines": { - "node": ">=10" + "node": ">=6" } }, "node_modules/yeast": { @@ -16553,30 +17630,74 @@ }, "dependencies": { "@alkemio/client-lib": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/@alkemio/client-lib/-/client-lib-0.14.10.tgz", - "integrity": "sha512-kVzawtzqoQbRDarBV+kEZ57GFOgmtv4RKcva8U2zIWiYipWYCAV3rdKKdp3Jpz/rvw+9vXkWn5MebrdyCip5+g==", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@alkemio/client-lib/-/client-lib-0.16.2.tgz", + "integrity": "sha512-7WxrIbgimwlgUS9DNAdX1OzeOIorIf8mvrrU1N+jbAq+Gju+J1/QNoMUMYr6FR2sPZo2ejTP1qqM3Bb+xiWHKA==", "requires": { + "@graphql-codegen/typescript-graphql-request": "^4.5.3", + "@graphql-codegen/typescript-operations": "^2.5.3", + "@types/graphql-upload": "^8.0.11", "axios": "^0.21.1", - "dotenv": "^8.2.0", - "graphql": "^15.4.0", + "graphql": "^16.6.0", "graphql-request": "^3.3.0", "graphql-tag": "^2.11.0", - "jsonpath": "^1.1.1", + "graphql-upload": "^16.0.1", "semver": "^7.3.4", + "typescript": "^4.7.4", "url-join": "^4.0.1", - "winston": "^3.6.0" + "winston": "^3.8.1" }, "dependencies": { - "dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "graphql": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", + "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==" + }, + "graphql-upload": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/graphql-upload/-/graphql-upload-16.0.1.tgz", + "integrity": "sha512-W739h2T9dPxSacuWee63P1JVmchhmL/nF/Yi8pCm4/DxwV4M9QiFY7HlbnMC/NIIyo3NW7sxa6PZ2EJxSC2IaA==", + "requires": { + "@types/busboy": "^1.5.0", + "@types/node": "*", + "@types/object-path": "^0.11.1", + "busboy": "^1.6.0", + "fs-capacitor": "^8.0.0", + "http-errors": "^2.0.0", + "object-path": "^0.11.8" + } + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "typescript": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", + "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==" }, "winston": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.7.2.tgz", - "integrity": "sha512-QziIqtojHBoyzUOdQvQiar1DH0Xp9nF1A1y7NVy2DGEsz82SBDtOalS0ulTRGVT14xPX3WRWkCsdcJKqNflKng==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.1.tgz", + "integrity": "sha512-r+6YAiCR4uI3N8eQNOg8k3P3PqwAm20cLKlzVD9E66Ch39+LZC+VH1UKf9JemQj2B3QoUHfKD7Poewn0Pr3Y1w==", "requires": { "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", @@ -16720,9 +17841,9 @@ } }, "@apollo/protobufjs": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.2.tgz", - "integrity": "sha512-vF+zxhPiLtkwxONs6YanSt1EpwpGilThpneExUN5K3tCymuxNnVq2yojTvnpRjv2QfsEIt/n7ozPIIzBLwGIDQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", + "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -16746,10 +17867,77 @@ } } }, + "@apollo/utils.dropunuseddefinitions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz", + "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==", + "requires": {} + }, + "@apollo/utils.keyvaluecache": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.1.tgz", + "integrity": "sha512-nLgYLomqjVimEzQ4cdvVQkcryi970NDvcRVPfd0OPeXhBfda38WjBq+WhQFk+czSHrmrSp34YHBxpat0EtiowA==", + "requires": { + "@apollo/utils.logger": "^1.0.0", + "lru-cache": "^7.10.1" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", + "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==" + } + } + }, + "@apollo/utils.logger": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.0.tgz", + "integrity": "sha512-dx9XrjyisD2pOa+KsB5RcDbWIAdgC91gJfeyLCgy0ctJMjQe7yZK5kdWaWlaOoCeX0z6YI9iYlg7vMPyMpQF3Q==" + }, + "@apollo/utils.printwithreducedwhitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz", + "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==", + "requires": {} + }, + "@apollo/utils.removealiases": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz", + "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==", + "requires": {} + }, + "@apollo/utils.sortast": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz", + "integrity": "sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA==", + "requires": { + "lodash.sortby": "^4.7.0" + } + }, + "@apollo/utils.stripsensitiveliterals": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz", + "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==", + "requires": {} + }, + "@apollo/utils.usagereporting": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.0.tgz", + "integrity": "sha512-5PL7hJMkTPmdo3oxPtigRrIyPxDk/ddrUryHPDaezL1lSFExpNzsDd2f1j0XJoHOg350GRd3LyD64caLA2PU1w==", + "requires": { + "@apollo/utils.dropunuseddefinitions": "^1.1.0", + "@apollo/utils.printwithreducedwhitespace": "^1.1.0", + "@apollo/utils.removealiases": "1.0.0", + "@apollo/utils.sortast": "^1.1.0", + "@apollo/utils.stripsensitiveliterals": "^1.2.0", + "apollo-reporting-protobuf": "^3.3.1" + } + }, "@apollographql/apollo-tools": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.1.tgz", - "integrity": "sha512-ZII+/xUFfb9ezDU2gad114+zScxVFMVlZ91f8fGApMzlS1kkqoyLnC4AJaQ1Ya/X+b63I20B4Gd+eCL8QuB4sA==" + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz", + "integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==", + "requires": {} }, "@apollographql/graphql-playground-html": { "version": "1.6.29", @@ -16759,26 +17947,58 @@ "xss": "^1.0.8" } }, + "@ardatan/relay-compiler": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@ardatan/relay-compiler/-/relay-compiler-12.0.0.tgz", + "integrity": "sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==", + "requires": { + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/runtime": "^7.0.0", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.0.0", + "babel-preset-fbjs": "^3.4.0", + "chalk": "^4.0.0", + "fb-watchman": "^2.0.0", + "fbjs": "^3.0.0", + "glob": "^7.1.1", + "immutable": "~3.7.6", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "relay-runtime": "12.0.0", + "signedsource": "^1.0.0", + "yargs": "^15.3.1" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "devOptional": true, + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "requires": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.18.6" } }, "@babel/compat-data": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", - "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==", - "dev": true + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.13.tgz", + "integrity": "sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==" }, "@babel/core": { "version": "7.14.8", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.8.tgz", "integrity": "sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==", - "dev": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.14.8", @@ -16797,465 +18017,201 @@ "source-map": "^0.5.0" }, "dependencies": { - "@babel/parser": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.8.tgz", - "integrity": "sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA==", - "dev": true - }, - "@babel/traverse": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.8.tgz", - "integrity": "sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.8", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.8", - "@babel/types": "^7.14.8", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, "@babel/generator": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.8.tgz", - "integrity": "sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg==", - "dev": true, + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.13.tgz", + "integrity": "sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==", "requires": { - "@babel/types": "^7.14.8", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "@babel/types": "^7.18.13", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "requires": { + "@babel/types": "^7.18.6" } }, "@babel/helper-compilation-targets": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", - "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", - "dev": true, + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", "requires": { - "@babel/compat-data": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "@babel/compat-data": "^7.18.8", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "dependencies": { "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", - "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.14.5", - "@babel/template": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-get-function-arity": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", - "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", - "dev": true, - "requires": { - "@babel/types": "^7.14.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - } + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, - "@babel/helper-hoist-variables": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", - "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", - "dev": true, + "@babel/helper-create-class-features-plugin": { + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz", + "integrity": "sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA==", "requires": { - "@babel/types": "^7.14.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6" } }, - "@babel/helper-member-expression-to-functions": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", - "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", - "dev": true, - "requires": { - "@babel/types": "^7.14.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - } - } - } + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" }, - "@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", - "dev": true, + "@babel/helper-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", "requires": { - "@babel/types": "^7.14.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - } - } + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.9" } }, - "@babel/helper-module-transforms": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz", - "integrity": "sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5", - "@babel/helper-simple-access": "^7.14.8", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.8", - "@babel/template": "^7.14.5", - "@babel/traverse": "^7.14.8", - "@babel/types": "^7.14.8" - }, - "dependencies": { - "@babel/parser": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.8.tgz", - "integrity": "sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA==", - "dev": true - }, - "@babel/traverse": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.8.tgz", - "integrity": "sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.8", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.8", - "@babel/types": "^7.14.8", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/helper-optimise-call-expression": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", - "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", - "dev": true, + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "requires": { - "@babel/types": "^7.14.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.18.6" } }, "@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "dev": true + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==" }, "@babel/helper-replace-supers": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", - "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", - "dev": true, + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", + "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", "requires": { - "@babel/helper-member-expression-to-functions": "^7.14.5", - "@babel/helper-optimise-call-expression": "^7.14.5", - "@babel/traverse": "^7.14.5", - "@babel/types": "^7.14.5" - }, - "dependencies": { - "@babel/parser": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.8.tgz", - "integrity": "sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA==", - "dev": true - }, - "@babel/traverse": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.8.tgz", - "integrity": "sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.8", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.8", - "@babel/types": "^7.14.8", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/helper-simple-access": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", - "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", - "dev": true, + "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==", "requires": { - "@babel/types": "^7.14.8" - }, - "dependencies": { - "@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.18.6" + } + }, + "@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==", + "requires": { + "@babel/types": "^7.18.9" } }, "@babel/helper-split-export-declaration": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", - "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", - "dev": true, + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "requires": { - "@babel/types": "^7.14.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.18.6" } }, + "@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==" + }, "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "devOptional": true + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" }, "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" }, "@babel/helpers": { "version": "7.14.8", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.8.tgz", "integrity": "sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw==", - "dev": true, "requires": { "@babel/template": "^7.14.5", "@babel/traverse": "^7.14.8", "@babel/types": "^7.14.8" - }, - "dependencies": { - "@babel/parser": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.8.tgz", - "integrity": "sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA==", - "dev": true - }, - "@babel/traverse": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.8.tgz", - "integrity": "sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.14.8", - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-hoist-variables": "^7.14.5", - "@babel/helper-split-export-declaration": "^7.14.5", - "@babel/parser": "^7.14.8", - "@babel/types": "^7.14.8", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } } }, "@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", - "devOptional": true, + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -17264,7 +18220,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "devOptional": true, "requires": { "color-convert": "^1.9.0" } @@ -17273,7 +18228,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "devOptional": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -17284,7 +18238,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "devOptional": true, "requires": { "color-name": "1.1.3" } @@ -17292,20 +18245,17 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "devOptional": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "devOptional": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "devOptional": true, "requires": { "has-flag": "^3.0.0" } @@ -17313,10 +18263,30 @@ } }, "@babel/parser": { - "version": "7.12.16", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.16.tgz", - "integrity": "sha512-c/+u9cqV6F0+4Hpq01jnJO+GLp2DdT63ppz9Xa+6cHaajM9VFzK/iDXiKK65YtpeVwu+ctfS6iqlMqRgQRzeCw==", - "dev": true + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz", + "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==" + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@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==", + "requires": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.18.8" + } }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", @@ -17340,11 +18310,18 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-syntax-flow": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", + "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, "@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", @@ -17363,6 +18340,14 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, "@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", @@ -17394,7 +18379,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -17435,68 +18419,248 @@ "@babel/helper-plugin-utils": "^7.14.5" } }, - "@babel/template": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", - "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "dev": true, + "@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.14.5", - "@babel/types": "^7.14.5" + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", + "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" }, "dependencies": { - "@babel/parser": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.8.tgz", - "integrity": "sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA==", - "dev": true - }, - "@babel/types": { - "version": "7.14.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz", - "integrity": "sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.8", - "to-fast-properties": "^2.0.0" - } + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" } } }, - "@babel/traverse": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.13.tgz", - "integrity": "sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA==", - "dev": true, + "@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13", + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.18.9.tgz", + "integrity": "sha512-+G6rp2zRuOAInY5wcggsx4+QVao1qPM0osC9fTUVlAV3zOrzTCnrMAFVnR6+a3T8wz1wFIH7KhYMcMB3u1n80A==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-flow": "^7.18.6" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "requires": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@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==", + "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/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@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==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz", + "integrity": "sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.18.10" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", + "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/runtime": { + "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" + }, + "dependencies": { + "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==" + } + } + }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.13.tgz", + "integrity": "sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.13", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.13", + "@babel/types": "^7.18.13", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "globals": "^11.1.0" }, "dependencies": { "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" } } }, "@babel/types": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.13.tgz", - "integrity": "sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ==", - "dev": true, + "version": "7.18.13", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", + "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" } }, @@ -17595,6 +18759,123 @@ } } }, + "@graphql-codegen/plugin-helpers": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.6.2.tgz", + "integrity": "sha512-bt5PNix0MwzWP53UdaYm6URrVMWU8RlQhrTSLFjxQ8ShS5zoTlQtpZJGZc5ONqFgKa83qbUmzXUtP8oRVVn8zw==", + "requires": { + "@graphql-tools/utils": "^8.8.0", + "change-case-all": "1.0.14", + "common-tags": "1.8.2", + "import-from": "4.0.0", + "lodash": "~4.17.0", + "tslib": "~2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + } + } + }, + "@graphql-codegen/schema-ast": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/schema-ast/-/schema-ast-2.5.1.tgz", + "integrity": "sha512-tewa5DEKbglWn7kYyVBkh3J8YQ5ALqAMVmZwiVFIGOao5u66nd+e4HuFqp0u+Jpz4SJGGi0ap/oFrEvlqLjd2A==", + "requires": { + "@graphql-codegen/plugin-helpers": "^2.6.2", + "@graphql-tools/utils": "^8.8.0", + "tslib": "~2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + } + } + }, + "@graphql-codegen/typescript": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-2.7.3.tgz", + "integrity": "sha512-EzX/acijXtbG/AwPzho2ZZWaNo00+xAbsRDP+vnT2PwQV3AYq3/5bFvjq1XfAGWbTntdmlYlIwC9hf5bI85WVA==", + "requires": { + "@graphql-codegen/plugin-helpers": "^2.6.2", + "@graphql-codegen/schema-ast": "^2.5.1", + "@graphql-codegen/visitor-plugin-common": "2.12.1", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + } + } + }, + "@graphql-codegen/typescript-graphql-request": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-graphql-request/-/typescript-graphql-request-4.5.3.tgz", + "integrity": "sha512-xlQnsuZl16fLFhUDhABSauQuJlhYtJtPc8O0fnRZdRRY1dmtjIhYKHtgg2djpIrHefSeMxkISwG9pgj0kV3RTA==", + "requires": { + "@graphql-codegen/plugin-helpers": "^2.6.2", + "@graphql-codegen/visitor-plugin-common": "2.12.1", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + } + } + }, + "@graphql-codegen/typescript-operations": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-2.5.3.tgz", + "integrity": "sha512-s+pA+Erm0HeBb/D5cNrflwRM5KWhkiA5cbz4uA99l3fzFPveoQBPfRCBu0XAlJLP/kBDy64+o4B8Nfc7wdRtmA==", + "requires": { + "@graphql-codegen/plugin-helpers": "^2.6.2", + "@graphql-codegen/typescript": "^2.7.3", + "@graphql-codegen/visitor-plugin-common": "2.12.1", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + } + } + }, + "@graphql-codegen/visitor-plugin-common": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.12.1.tgz", + "integrity": "sha512-dIUrX4+i/uazyPQqXyQ8cqykgNFe1lknjnfDWFo0gnk2W8+ruuL2JpSrj/7efzFHxbYGMQrCABDCUTVLi3DcVA==", + "requires": { + "@graphql-codegen/plugin-helpers": "^2.6.2", + "@graphql-tools/optimize": "^1.3.0", + "@graphql-tools/relay-operation-optimizer": "^6.5.0", + "@graphql-tools/utils": "^8.8.0", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.14", + "dependency-graph": "^0.11.0", + "graphql-tag": "^2.11.0", + "parse-filepath": "^1.0.2", + "tslib": "~2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + } + } + }, "@graphql-tools/merge": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.1.2.tgz", @@ -17615,6 +18896,38 @@ "tslib": "~2.3.0" } }, + "@graphql-tools/optimize": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.3.1.tgz", + "integrity": "sha512-5j5CZSRGWVobt4bgRRg7zhjPiSimk+/zIuColih8E8DxuFOaJ+t0qu7eZS5KXWBkjcd4BPNuhUPpNlEmHPqVRQ==", + "requires": { + "tslib": "^2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + } + } + }, + "@graphql-tools/relay-operation-optimizer": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.4.tgz", + "integrity": "sha512-1epuPdtz14233EjrWs4n2UQxoqRHhb6OKIltiJvNR1L/67ZtB02RxESV2PFGqGphdBUZHL7zKdBIUGIaF8sJ5g==", + "requires": { + "@ardatan/relay-compiler": "12.0.0", + "@graphql-tools/utils": "8.10.1", + "tslib": "^2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + } + } + }, "@graphql-tools/schema": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.2.0.tgz", @@ -17627,11 +18940,18 @@ } }, "@graphql-tools/utils": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.2.2.tgz", - "integrity": "sha512-29FFY5U4lpXuBiW9dRvuWnBVwGhWbGLa2leZcAMU/Pz47Cr/QLZGVgpLBV9rt+Gbs7wyIJM7t7EuksPs0RDm3g==", + "version": "8.10.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.10.1.tgz", + "integrity": "sha512-UYi/afPvxZ8mz0LjplMxOSmGDPenVS/Q0zJ/6LOyF9yZdJYIDe+J+Qr/I9+rCYQmgBW4BJeRUUc7VoUzZPfZDA==", "requires": { - "tslib": "~2.3.0" + "tslib": "^2.4.0" + }, + "dependencies": { + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + } } }, "@humanwhocodes/config-array": { @@ -18228,6 +19548,50 @@ "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==" }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "@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==", + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "@nestjs/axios": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-0.0.1.tgz", @@ -18514,7 +19878,7 @@ "@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" }, "@protobufjs/base64": { "version": "1.1.2", @@ -18529,12 +19893,12 @@ "@protobufjs/eventemitter": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" }, "@protobufjs/fetch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "requires": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" @@ -18543,27 +19907,27 @@ "@protobufjs/float": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" }, "@protobufjs/inquire": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" }, "@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" }, "@protobufjs/pool": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" }, "@protobufjs/utf8": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "@sinonjs/commons": { "version": "1.8.3", @@ -18687,6 +20051,14 @@ "@types/node": "*" } }, + "@types/busboy": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/busboy/-/busboy-1.5.0.tgz", + "integrity": "sha512-ncOOhwmyFDW76c/Tuvv9MA9VGYUCn8blzyWmzYELcNGDb0WXWLSmFi7hJq25YdRBYJrmMBB5jZZwUjlJe9HCjQ==", + "requires": { + "@types/node": "*" + } + }, "@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -18695,12 +20067,28 @@ "@types/node": "*" } }, + "@types/content-disposition": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz", + "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==" + }, "@types/cookiejar": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", "dev": true }, + "@types/cookies": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", + "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", + "requires": { + "@types/connect": "*", + "@types/express": "*", + "@types/keygrip": "*", + "@types/node": "*" + } + }, "@types/cors": { "version": "2.8.12", "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", @@ -18767,6 +20155,14 @@ "@types/express": "*" } }, + "@types/fs-capacitor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz", + "integrity": "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==", + "requires": { + "@types/node": "*" + } + }, "@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", @@ -18776,6 +20172,27 @@ "@types/node": "*" } }, + "@types/graphql-upload": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/@types/graphql-upload/-/graphql-upload-8.0.11.tgz", + "integrity": "sha512-AE8RWANHutpsQt945lQZKlkq0V/zBxU5R0xhKLZN3KkBMlW95/5uJzk01HUl8gbDkG7hGl8l8lJKbi91k0UnPw==", + "requires": { + "@types/express": "*", + "@types/fs-capacitor": "*", + "@types/koa": "*", + "graphql": "0.13.1 - 16" + } + }, + "@types/http-assert": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", + "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==" + }, + "@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==" + }, "@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", @@ -18822,10 +20239,38 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, + "@types/keygrip": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", + "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" + }, + "@types/koa": { + "version": "2.13.5", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.5.tgz", + "integrity": "sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==", + "requires": { + "@types/accepts": "*", + "@types/content-disposition": "*", + "@types/cookies": "*", + "@types/http-assert": "*", + "@types/http-errors": "*", + "@types/keygrip": "*", + "@types/koa-compose": "*", + "@types/node": "*" + } + }, + "@types/koa-compose": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", + "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", + "requires": { + "@types/koa": "*" + } + }, "@types/long": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", - "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, "@types/mime": { "version": "1.3.2", @@ -18854,6 +20299,11 @@ "resolved": "https://registry.npmjs.org/@types/nunjucks/-/nunjucks-3.2.0.tgz", "integrity": "sha512-1FM36Hm3EdidJmWlZZafkg/kZME0UZ/0vQ46JE8R7R0JqQafah0r+d4i6d/MJg5DnKxEeAOAeifEVkzo7fEvGg==" }, + "@types/object-path": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@types/object-path/-/object-path-0.11.1.tgz", + "integrity": "sha512-219LSCO9HPcoXcRTC6DbCs0FRhZgBnEMzf16RRqkT40WbkKx3mOeQuz3e2XqbfhOz/AHfbru0kzB1n1RCAsIIg==" + }, "@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", @@ -19411,8 +20861,7 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", @@ -19432,80 +20881,99 @@ } }, "apollo-datasource": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.1.0.tgz", - "integrity": "sha512-ywcVjuWNo84eMB9uBOYygQI+00+Ne4ShyPIxJzT//sn1j1Fu3J+KStMNd6s1jyERWgjGZzxkiLn6nLmwsGymBg==", - "requires": { - "apollo-server-caching": "^3.1.0", - "apollo-server-env": "^4.0.3" - } - }, - "apollo-graphql": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.9.3.tgz", - "integrity": "sha512-rcAl2E841Iko4kSzj4Pt3PRBitmyq1MvoEmpl04TQSpGnoVgl1E/ZXuLBYxMTSnEAm7umn2IsoY+c6Ll9U/10A==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", + "integrity": "sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==", "requires": { - "core-js-pure": "^3.10.2", - "lodash.sortby": "^4.7.0", - "sha.js": "^2.4.11" + "@apollo/utils.keyvaluecache": "^1.0.1", + "apollo-server-env": "^4.2.1" } }, "apollo-reporting-protobuf": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.0.0.tgz", - "integrity": "sha512-jmCD+6gECt8KS7PxP460hztT/5URTbv2Kg0zgnR6iWPGce88IBmSUjcqf1Z6wJJq7Teb8Hu7WbyyMhn0vN5TxQ==", - "requires": { - "@apollo/protobufjs": "1.2.2" - } - }, - "apollo-server-caching": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-3.1.0.tgz", - "integrity": "sha512-bZ4bo0kSAsax9LbMQPlpuMTkQ657idF2ehOYe4Iw+8vj7vfAYa39Ii9IlaVAFMC1FxCYzLNFz+leZBm/Stn/NA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz", + "integrity": "sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ==", "requires": { - "lru-cache": "^6.0.0" + "@apollo/protobufjs": "1.2.4" } }, "apollo-server-core": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.3.0.tgz", - "integrity": "sha512-KmkzKVG3yjybouDyUX6Melv39u1EOFipvAKP17IlPis/TjVbubJmb6hkE0am/g2RipyhRvlpxAjHqPaCTXR1dQ==", - "requires": { - "@apollographql/apollo-tools": "^0.5.1", + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.10.2.tgz", + "integrity": "sha512-/1o9KPoAMgcjJJ9Y0IH1665wf9d02L/m/mcfBOHiFmRgeGkNgrhTy59BxQTBK241USAWMhwMpp171cv/hM5Dng==", + "requires": { + "@apollo/utils.keyvaluecache": "^1.0.1", + "@apollo/utils.logger": "^1.0.0", + "@apollo/utils.usagereporting": "^1.0.0", + "@apollographql/apollo-tools": "^0.5.3", "@apollographql/graphql-playground-html": "1.6.29", "@graphql-tools/mock": "^8.1.2", "@graphql-tools/schema": "^8.0.0", - "@graphql-tools/utils": "^8.0.0", "@josephg/resolvable": "^1.0.0", - "apollo-datasource": "^3.1.0", - "apollo-graphql": "^0.9.0", - "apollo-reporting-protobuf": "^3.0.0", - "apollo-server-caching": "^3.1.0", - "apollo-server-env": "^4.0.3", - "apollo-server-errors": "^3.1.0", - "apollo-server-plugin-base": "^3.2.0", - "apollo-server-types": "^3.2.0", + "apollo-datasource": "^3.3.2", + "apollo-reporting-protobuf": "^3.3.2", + "apollo-server-env": "^4.2.1", + "apollo-server-errors": "^3.3.1", + "apollo-server-plugin-base": "^3.6.2", + "apollo-server-types": "^3.6.2", "async-retry": "^1.2.1", "fast-json-stable-stringify": "^2.1.0", "graphql-tag": "^2.11.0", "loglevel": "^1.6.8", "lru-cache": "^6.0.0", "sha.js": "^2.4.11", - "uuid": "^8.0.0" + "uuid": "^8.0.0", + "whatwg-mimetype": "^3.0.0" + }, + "dependencies": { + "whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==" + } } }, "apollo-server-env": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.0.3.tgz", - "integrity": "sha512-B32+RUOM4GUJAwnQqQE1mT1BG7+VfW3a0A87Bp3gv/q8iNnhY2BIWe74Qn03pX8n27g3EGVCt0kcBuHhjG5ltA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", + "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", "requires": { - "node-fetch": "^2.6.1" + "node-fetch": "^2.6.7" + }, + "dependencies": { + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } } }, "apollo-server-errors": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.1.0.tgz", - "integrity": "sha512-bUmobPEvtcBFt+OVHYqD390gacX/Cm5s5OI5gNZho8mYKAA6OjgnRlkm/Lti6NzniXVxEQyD5vjkC6Ox30mGFg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz", + "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==", "requires": {} }, "apollo-server-express": { @@ -19527,21 +20995,22 @@ } }, "apollo-server-plugin-base": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.2.0.tgz", - "integrity": "sha512-anjyiw79wxU4Cj2bYZFWQqZPjuaZ4mVJvxCoyvkFrNvjPua9dovCOfpng43C5NwdsqJpz78Vqs236eFM2QoeaA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.6.2.tgz", + "integrity": "sha512-erWXjLOO1u7fxQkbxJ2cwSO7p0tYzNied91I1SJ9tikXZ/2eZUyDyvrpI+4g70kOdEi+AmJ5Fo8ahEXKJ75zdg==", "requires": { - "apollo-server-types": "^3.2.0" + "apollo-server-types": "^3.6.2" } }, "apollo-server-types": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.2.0.tgz", - "integrity": "sha512-Fh7QP84ufDZHbLzoLyyxyzznlW8cpgEZYYkGsS1i36zY4VaAt5OUOp1f+FxWdLGehq0Arwb6D1W7y712IoZ/JQ==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.6.2.tgz", + "integrity": "sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg==", "requires": { - "apollo-reporting-protobuf": "^3.0.0", - "apollo-server-caching": "^3.1.0", - "apollo-server-env": "^4.0.3" + "@apollo/utils.keyvaluecache": "^1.0.1", + "@apollo/utils.logger": "^1.0.0", + "apollo-reporting-protobuf": "^3.3.2", + "apollo-server-env": "^4.2.1" } }, "append-field": { @@ -19697,6 +21166,11 @@ "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", "optional": true }, + "auto-bind": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", + "integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==" + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -19765,6 +21239,14 @@ } } }, + "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==", + "requires": { + "object.assign": "^4.1.0" + } + }, "babel-plugin-istanbul": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", @@ -19790,6 +21272,11 @@ "@types/babel__traverse": "^7.0.6" } }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==" + }, "babel-preset-current-node-syntax": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", @@ -19810,6 +21297,40 @@ "@babel/plugin-syntax-top-level-await": "^7.8.3" } }, + "babel-preset-fbjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", + "requires": { + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + } + }, "babel-preset-jest": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz", @@ -20055,16 +21576,14 @@ "dev": true }, "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "dev": true, + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" } }, "bs-logger": { @@ -20080,7 +21599,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, "requires": { "node-int64": "^0.4.0" } @@ -20144,17 +21662,34 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, "caniuse-lite": { - "version": "1.0.30001340", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001340.tgz", - "integrity": "sha512-jUNz+a9blQTQVu4uFcn17uAD8IDizPzQkIKh3LCJfg9BkyIqExYYdyc/ZSlWUSKb8iYiXxKsxbv4zYSvkqjrxw==", - "dev": true + "version": "1.0.30001385", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001385.tgz", + "integrity": "sha512-MpiCqJGhBkHgpyimE9GWmZTnyHyEEM35u115bD3QBrXpjvL/JgcP8cUhKJshfmg4OtEHFenifcK5sZayEw5tvQ==" + }, + "capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } }, "caseless": { "version": "0.12.0", @@ -20177,6 +21712,42 @@ "supports-color": "^7.1.0" } }, + "change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "requires": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "change-case-all": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz", + "integrity": "sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==", + "requires": { + "change-case": "^4.1.2", + "is-lower-case": "^2.0.2", + "is-upper-case": "^2.0.2", + "lower-case": "^2.0.2", + "lower-case-first": "^2.0.2", + "sponge-case": "^1.0.1", + "swap-case": "^2.0.2", + "title-case": "^3.0.3", + "upper-case": "^2.0.2", + "upper-case-first": "^2.0.2" + } + }, "char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -20249,12 +21820,16 @@ "class-transformer": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz", - "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" + "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==", + "optional": true, + "peer": true }, "class-validator": { "version": "0.13.2", "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.13.2.tgz", "integrity": "sha512-yBUcQy07FPlGzUjoLuUfIOXzgynnQPPruyK1Ge2B74k9ROwnle1E+NxLWnUv5OLU8hA/qL5leAE9XnXq3byaBw==", + "optional": true, + "peer": true, "requires": { "libphonenumber-js": "^1.9.43", "validator": "^13.7.0" @@ -20423,6 +21998,11 @@ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true }, + "common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==" + }, "compare-versions": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", @@ -20498,6 +22078,16 @@ "integrity": "sha512-VZzbIORbP+PPcN/gg3DXClTLPLg5Slwd5fL2MIc+o1qZ4BXBvWyc6QxPk6T/Mkr6IVjRpoAGf32XxP3ZWMVRcQ==", "optional": true }, + "constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, "container-info": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/container-info/-/container-info-1.1.0.tgz", @@ -20528,7 +22118,6 @@ "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" } @@ -20555,11 +22144,6 @@ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" }, - "core-js-pure": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.18.0.tgz", - "integrity": "sha512-ZnK+9vyuMhKulIGqT/7RHGRok8RtkHMEX/BGPHkHx+ouDkq+MUvf9mfIgdqhpmPDu8+V5UtRn/CbCRc9I4lX4w==" - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -20787,6 +22371,11 @@ "ms": "2.1.2" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, "decimal.js": { "version": "10.3.1", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", @@ -20802,7 +22391,8 @@ "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true }, "deepmerge": { "version": "4.2.2", @@ -20823,7 +22413,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "devOptional": true, "requires": { "object-keys": "^1.0.12" } @@ -20839,6 +22428,11 @@ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, + "dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==" + }, "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", @@ -20933,6 +22527,15 @@ "domelementtype": "1" } }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "dotenv": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", @@ -21106,10 +22709,9 @@ } }, "electron-to-chromium": { - "version": "1.3.790", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.790.tgz", - "integrity": "sha512-epMH/S2MkhBv+Y0+nHK8dC7bzmOaPwcmiYqt+VwxSUJLgPzkqZnGUEQ8eVhy5zGmgWm9tDDdXkHDzOEsVU979A==", - "dev": true + "version": "1.4.235", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.235.tgz", + "integrity": "sha512-eNU2SmVZYTzYVA5aAWmhAJbdVil5/8H5nMq6kGD0Yxd4k2uKIuT8YmS46I0QXY7iOoPPcb6jjem9/2xyuH5+XQ==" }, "emittery": { "version": "0.8.1", @@ -21120,8 +22722,7 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "enabled": { "version": "2.0.0", @@ -21425,8 +23026,7 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-html": { "version": "1.0.3", @@ -21436,8 +23036,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "devOptional": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { "version": "2.0.0", @@ -21865,7 +23464,8 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esquery": { "version": "1.4.0", @@ -21904,12 +23504,14 @@ "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true }, "etag": { "version": "1.8.1", @@ -22208,7 +23810,8 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true }, "fast-redact": { "version": "3.0.1", @@ -22243,11 +23846,29 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, "requires": { "bser": "2.1.1" } }, + "fbjs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", + "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==", + "requires": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.30" + } + }, + "fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + }, "fecha": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz", @@ -22440,6 +24061,11 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" }, + "fs-capacitor": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-8.0.0.tgz", + "integrity": "sha512-+Lk6iSKajdGw+7XYxUkwIzreJ2G1JFlYOdnKJv5PzwFLVsoJYBpCuS7WPIUSNT1IbQaEWT1nhYU63Ud03DyzLA==" + }, "fs-extra": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", @@ -22482,14 +24108,12 @@ "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-intrinsic": { "version": "1.1.1", @@ -22692,6 +24316,15 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" }, + "header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "requires": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, "helmet": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/helmet/-/helmet-4.6.0.tgz", @@ -22861,6 +24494,11 @@ "integrity": "sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g==", "optional": true }, + "immutable": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", + "integrity": "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==" + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -22879,6 +24517,11 @@ } } }, + "import-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", + "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==" + }, "import-local": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", @@ -23023,6 +24666,14 @@ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -23034,6 +24685,15 @@ "integrity": "sha1-GzJYKQ02X6gyOeiZB93kWS52IKg=", "dev": true }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -23098,8 +24758,7 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-generator-fn": { "version": "2.1.0", @@ -23130,6 +24789,14 @@ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true }, + "is-lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz", + "integrity": "sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==", + "requires": { + "tslib": "^2.0.3" + } + }, "is-native": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-native/-/is-native-1.0.1.tgz", @@ -23196,6 +24863,14 @@ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", "dev": true }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "requires": { + "is-unc-path": "^1.0.0" + } + }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -23221,12 +24896,33 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "requires": { + "unc-path-regex": "^0.1.2" + } + }, "is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, + "is-upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-2.0.2.tgz", + "integrity": "sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==", + "requires": { + "tslib": "^2.0.3" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -24927,8 +26623,7 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "devOptional": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "jsbn": { "version": "0.1.1", @@ -24981,8 +26676,7 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-parse-better-errors": { "version": "1.0.2", @@ -25027,7 +26721,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, "requires": { "minimist": "^1.2.5" } @@ -25042,27 +26735,10 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jsonpath": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", - "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "dev": true, "requires": { - "esprima": "1.2.2", - "static-eval": "2.0.2", - "underscore": "1.12.1" - }, - "dependencies": { - "esprima": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", - "integrity": "sha1-dqD9Zvz+FU/SkmZ9wmQBl1CxZXs=" - } + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" } }, "jsonwebtoken": { @@ -25235,7 +26911,9 @@ "libphonenumber-js": { "version": "1.9.50", "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.50.tgz", - "integrity": "sha512-cCzQPChw2XbordcO2LKiw5Htx5leHVfFk/EXkxNHqJfFo7Fndcb1kF5wPJpc316vCJhhikedYnVysMh3Sc7Ocw==" + "integrity": "sha512-cCzQPChw2XbordcO2LKiw5Htx5leHVfFk/EXkxNHqJfFo7Fndcb1kF5wPJpc316vCJhhikedYnVysMh3Sc7Ocw==", + "optional": true, + "peer": true }, "lines-and-columns": { "version": "1.1.6", @@ -25639,6 +27317,30 @@ "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "requires": { + "tslib": "^2.0.3" + } + }, + "lower-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-2.0.2.tgz", + "integrity": "sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==", + "requires": { + "tslib": "^2.0.3" + } + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -25714,6 +27416,11 @@ "tmpl": "1.0.x" } }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" + }, "mapcap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/mapcap/-/mapcap-1.0.0.tgz", @@ -25954,6 +27661,15 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node-adm": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/node-adm/-/node-adm-0.9.1.tgz", @@ -26001,8 +27717,7 @@ "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" }, "node-modules-regexp": { "version": "1.0.0", @@ -26058,10 +27773,9 @@ } }, "node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "dev": true + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" }, "nodemailer": { "version": "6.6.2", @@ -26457,6 +28171,11 @@ "boolbase": "~1.0.0" } }, + "nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" + }, "nunjucks": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.3.tgz", @@ -26524,14 +28243,17 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "devOptional": true + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-path": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", + "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==" }, "object.assign": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "devOptional": true, "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -26723,8 +28445,16 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "devOptional": true + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } }, "parent-module": { "version": "1.0.1", @@ -26735,6 +28465,16 @@ "callsites": "^3.0.0" } }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -26785,11 +28525,28 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "devOptional": true + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "path-is-absolute": { "version": "1.0.1", @@ -26807,6 +28564,19 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "devOptional": true }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==" + }, "path-to-regexp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", @@ -26823,6 +28593,11 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -26999,6 +28774,14 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, "promise-breaker": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-5.0.0.tgz", @@ -27272,6 +29055,16 @@ "integrity": "sha512-l18ha6HEZc+No/uK4GyAnNxgKW7nvEe35IaeN54sShMojtqik2a6GbTyuiezkjpPaqP874Z3lW5ysBo5irz4NA==", "optional": true }, + "relay-runtime": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-12.0.0.tgz", + "integrity": "sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==", + "requires": { + "@babel/runtime": "^7.0.0", + "fbjs": "^3.0.0", + "invariant": "^2.2.4" + } + }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -27333,8 +29126,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-from-string": { "version": "2.0.2", @@ -27353,6 +29145,11 @@ "resolve": "^1.12.0" } }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -27585,6 +29382,16 @@ } } }, + "sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -27605,12 +29412,22 @@ "send": "0.18.0" } }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "set-cookie-serde": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/set-cookie-serde/-/set-cookie-serde-1.0.0.tgz", "integrity": "sha512-Vq8e5GsupfJ7okHIvEPcfs5neCo7MZ1ZuWrO3sllYi3DOWt6bSSCpADzqXjz3k0fXehnoFIrmmhty9IN6U6BXQ==", "optional": true }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -27671,6 +29488,11 @@ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, + "signedsource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", + "integrity": "sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==" + }, "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -27766,6 +29588,15 @@ } } }, + "snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "socket.io": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", @@ -27986,6 +29817,14 @@ "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", "devOptional": true }, + "sponge-case": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-1.0.1.tgz", + "integrity": "sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==", + "requires": { + "tslib": "^2.0.3" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -28042,69 +29881,6 @@ "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==", "optional": true }, - "static-eval": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", - "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", - "requires": { - "escodegen": "^1.8.1" - }, - "dependencies": { - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - } - } - }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -28166,7 +29942,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -28208,7 +29983,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -28286,6 +30060,14 @@ "supports-color": "^7.0.0" } }, + "swap-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-2.0.2.tgz", + "integrity": "sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==", + "requires": { + "tslib": "^2.0.3" + } + }, "symbol-observable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", @@ -28360,14 +30142,14 @@ } }, "terser": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", - "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", "dev": true, "requires": { + "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.8.0-beta.0", "source-map-support": "~0.5.20" }, "dependencies": { @@ -28382,41 +30164,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true - }, - "source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dev": true, - "requires": { - "whatwg-url": "^7.0.0" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } } } }, @@ -28484,6 +30231,14 @@ "next-tick": "1" } }, + "title-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", + "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", + "requires": { + "tslib": "^2.0.3" + } + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -28508,8 +30263,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "to-regex-range": { "version": "5.0.1", @@ -28791,6 +30545,11 @@ "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", "dev": true }, + "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==" + }, "ultron": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", @@ -28809,16 +30568,16 @@ "which-boxed-primitive": "^1.0.2" } }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==" + }, "undefsafe": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" }, - "underscore": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" - }, "unicode-byte-truncate": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unicode-byte-truncate/-/unicode-byte-truncate-1.0.0.tgz", @@ -28846,6 +30605,31 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "requires": { + "tslib": "^2.0.3" + } + }, + "upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "requires": { + "tslib": "^2.0.3" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -28934,7 +30718,9 @@ "validator": { "version": "13.7.0", "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "optional": true, + "peer": true }, "value-or-promise": { "version": "1.0.10", @@ -29294,6 +31080,11 @@ "is-symbol": "^1.0.3" } }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, "which-pm-runs": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", @@ -29376,7 +31167,8 @@ "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true }, "wrap-ansi": { "version": "7.0.0", @@ -29474,6 +31266,93 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.0.0-7.tgz", "integrity": "sha512-RbI2Tm3hl9AoHY4wWyWvGvJfFIbHOzuzaxum6ez1A0vve+uXgNor03Wys4t+2sgjJSVSe+B2xerd1/dnvqHlOA==" }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "dependencies": { + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, "yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", diff --git a/package.json b/package.json index 08a34ec1..6f366ac7 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "validate-connection": "ts-node src/utils/validate-connection.ts" }, "dependencies": { - "@alkemio/client-lib": "^0.14.10", + "@alkemio/client-lib": "^0.16.2", "@nestjs/axios": "^0.0.1", "@nestjs/common": "^8.0.5", "@nestjs/config": "^1.0.1", @@ -47,8 +47,6 @@ "amqp-connection-manager": "^3.7.0", "amqplib": "^0.8.0", "apollo-server-express": "^3.3.0", - "class-transformer": "^0.4.0", - "class-validator": "^0.13.1", "cross-env": "^7.0.3", "dotenv": "^10.0.0", "helmet": "^4.6.0", diff --git a/src/app.controller.ts b/src/app.controller.ts index d8a9c259..1e175065 100644 --- a/src/app.controller.ts +++ b/src/app.controller.ts @@ -21,6 +21,7 @@ import { LogContext, USER_REGISTERED, COMMUNITY_COLLABORATION_INTEREST, + CALLOUT_PUBLISHED, } from './common'; import { IFeatureFlagProvider } from '@core/contracts'; import { @@ -33,6 +34,7 @@ import { CommunityNewMemberPayload, CommunityCollaborationInterestPayload, UserRegistrationEventPayload, + CalloutPublishedEventPayload, } from '@common/dto'; import { NotificationService } from './services/domain/notification/notification.service'; @@ -182,6 +184,19 @@ export class AppController { ); } + @EventPattern(CALLOUT_PUBLISHED, Transport.RMQ) + async sendCalloutPublishedNotifications( + @Payload() eventPayload: CalloutPublishedEventPayload, + @Ctx() context: RmqContext + ) { + this.sendNotifications( + eventPayload, + context, + this.notificationService.sendCalloutPublishedNotification(eventPayload), + ASPECT_CREATED + ); + } + private async sendNotifications( @Payload() eventPayload: Record, @Ctx() context: RmqContext, diff --git a/src/app.module.ts b/src/app.module.ts index 53b5a202..6097191f 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -21,6 +21,7 @@ import { CommunityCollaborationInterestNotificationBuilder, AspectCreatedNotificationBuilder, AspectCommentCreatedNotificationBuilder, + CalloutPublishedNotificationBuilder, } from './services/domain/builders'; import { NotificationService } from './services/domain/notification/notification.service'; import { @@ -59,6 +60,7 @@ import { CommunityCollaborationInterestNotificationBuilder, AspectCreatedNotificationBuilder, AspectCommentCreatedNotificationBuilder, + CalloutPublishedNotificationBuilder, NotificationService, ], controllers: [AppController], diff --git a/src/common/constants/events.ts b/src/common/constants/events.ts index 6e377d8d..18524a48 100644 --- a/src/common/constants/events.ts +++ b/src/common/constants/events.ts @@ -7,6 +7,7 @@ export const COMMUNICATION_DISCUSSION_CREATED = export const COMMUNITY_CONTEXT_REVIEW_SUBMITTED = 'communityContextReviewSubmitted'; export const ASPECT_CREATED = 'aspectCreated'; +export const CALLOUT_PUBLISHED = 'calloutPublished'; export const COMMENT_CREATED_ON_ASPECT = 'commentCreatedOnAspect'; export const COMMUNITY_COLLABORATION_INTEREST = 'communityCollaborationInterest'; diff --git a/src/common/dto/callout.published.event.payload.ts b/src/common/dto/callout.published.event.payload.ts new file mode 100644 index 00000000..94611234 --- /dev/null +++ b/src/common/dto/callout.published.event.payload.ts @@ -0,0 +1,24 @@ +export type CalloutPublishedEventPayload = { + userID: string; + callout: { + id: string; + displayName: string; + type: string; + }; + community: { + name: string; + type: string; + }; + hub: { + nameID: string; + id: string; + challenge?: { + nameID: string; + id: string; + opportunity?: { + nameID: string; + id: string; + }; + }; + }; +}; diff --git a/src/common/dto/index.ts b/src/common/dto/index.ts index 86a12d89..e4f5c978 100644 --- a/src/common/dto/index.ts +++ b/src/common/dto/index.ts @@ -8,3 +8,4 @@ export * from './user.registration.event.payload'; export * from './hub.payload'; export * from './aspect.created.event.payload'; export * from './aspect.comment.created.event.payload'; +export * from './callout.published.event.payload'; diff --git a/src/common/enums/email.template.ts b/src/common/enums/email.template.ts index c06a5121..0c2129a9 100644 --- a/src/common/enums/email.template.ts +++ b/src/common/enums/email.template.ts @@ -16,4 +16,5 @@ export enum EmailTemplate { ASPECT_CREATED_ADMIN = 'aspect.created.admin', ASPECT_CREATED_MEMBER = 'aspect.created.member', ASPECT_COMMENT_CREATED_MEMBER = 'aspect.comment.created.member', + CALLOUT_PUBLISHED_MEMBER = 'callout.published.member', } diff --git a/src/core/contracts/notification.recipient.template.provider.interface.ts b/src/core/contracts/notification.recipient.template.provider.interface.ts index cef54d95..761dc95c 100644 --- a/src/core/contracts/notification.recipient.template.provider.interface.ts +++ b/src/core/contracts/notification.recipient.template.provider.interface.ts @@ -23,6 +23,7 @@ export type TemplateConfig = { community_review_submitted?: TemplateRuleSet[]; community_new_member?: TemplateRuleSet[]; community_collaboration_interest?: TemplateRuleSet[]; + callout_published?: TemplateRuleSet[]; }; export interface INotificationRecipientTemplateProvider { diff --git a/src/services/application/notification-builder/notification.builder.ts b/src/services/application/notification-builder/notification.builder.ts index b51fb63e..3de1fbaf 100644 --- a/src/services/application/notification-builder/notification.builder.ts +++ b/src/services/application/notification-builder/notification.builder.ts @@ -34,14 +34,21 @@ export type TemplateBuilderFn = ( ) => Record; export type NotificationOptions> = { + /** The received event payload */ payload: TPayload; + /** the name of the template in notifications.yml */ templateType: TemplateType; + /** payload builder function for the email template */ templatePayloadBuilderFn: TemplateBuilderFn; + /** configuration to which roles the notification must be sent */ roleConfig: RoleConfig[]; + /** the creator of the event if any */ eventUserId?: string; + /** variables to be used into the chosen templateType if any */ templateVariables?: Record; }; - +// todo improve the type of templatePayloadBuilderFn with TEmailPayload extending BaseEmailPayload +// todo convert TPayload to extend Record export class NotificationBuilder> { constructor( @Inject(WINSTON_MODULE_NEST_PROVIDER) diff --git a/src/services/domain/builders/callout-published/callout.published.notification.builder.ts b/src/services/domain/builders/callout-published/callout.published.notification.builder.ts new file mode 100644 index 00000000..0ecaebfd --- /dev/null +++ b/src/services/domain/builders/callout-published/callout.published.notification.builder.ts @@ -0,0 +1,96 @@ +import { Inject, Injectable } from '@nestjs/common'; +import { INotificationBuilder } from '@core/contracts'; +import { + AlkemioUrlGenerator, + NotificationBuilder, + RoleConfig, +} from '@src/services/application'; +import { NotificationTemplateType } from '@src/types'; +import { UserPreferenceType } from '@alkemio/client-lib'; +import { User } from '@core/models'; +import { ALKEMIO_URL_GENERATOR, CALLOUT_PUBLISHED } from '@src/common'; +import { EmailTemplate } from '@common/enums/email.template'; +import { CalloutPublishedEventPayload } from '@common/dto'; + +@Injectable() +export class CalloutPublishedNotificationBuilder + implements INotificationBuilder +{ + constructor( + private readonly notificationBuilder: NotificationBuilder, // CalloutPublishedEmailPayload + @Inject(ALKEMIO_URL_GENERATOR) + private readonly alkemioUrlGenerator: AlkemioUrlGenerator + ) {} + build( + payload: CalloutPublishedEventPayload + ): Promise { + const roleConfig: RoleConfig[] = [ + { + role: 'user', + preferenceType: UserPreferenceType.NotificationCalloutCreated, + emailTemplate: EmailTemplate.CALLOUT_PUBLISHED_MEMBER, + }, + ]; + + const templateVariables = { + entityID: + payload.hub?.challenge?.opportunity?.id ?? + payload.hub?.challenge?.id ?? + payload.hub.id, + }; + + return this.notificationBuilder.build({ + payload, + eventUserId: payload.userID, + roleConfig, + templateType: 'callout_published', + templateVariables, + templatePayloadBuilderFn: this.createTemplatePayload.bind(this), + }); + } + + createTemplatePayload( + eventPayload: CalloutPublishedEventPayload, + recipient: User, + creator?: User + ): Record { + if (!creator) { + throw Error(`Creator not provided for '${CALLOUT_PUBLISHED} event'`); + } + + const notificationPreferenceURL = + this.alkemioUrlGenerator.createUserNotificationPreferencesURL( + recipient.nameID + ); + + const communityURL = this.alkemioUrlGenerator.createCommunityURL( + eventPayload.hub.nameID, + eventPayload.hub.challenge?.nameID, + eventPayload.hub.challenge?.opportunity?.nameID + ); + + const alkemioUrl = this.alkemioUrlGenerator.createHubURL(); + + return { + emailFrom: 'info@alkem.io', + recipient: { + firstName: recipient.firstName, + email: recipient.email, + notificationPreferences: notificationPreferenceURL, + }, + publishedBy: { + firstName: creator.firstName, + }, + callout: { + displayName: eventPayload.callout.displayName, + }, + community: { + name: eventPayload.community.name, + url: communityURL, + }, + hub: { + url: alkemioUrl, + }, + }; + } +} diff --git a/src/services/domain/builders/index.ts b/src/services/domain/builders/index.ts index 40c8a05b..95afb121 100644 --- a/src/services/domain/builders/index.ts +++ b/src/services/domain/builders/index.ts @@ -7,3 +7,4 @@ export * from './community-collaboration-interest/community.collaboration.intere export * from './user-registered/user.registered.notification.builder'; export * from './aspect-created/aspect.created.notification.builder'; export * from './aspect-comment-created/aspect.comment.created.notification.builder'; +export * from './callout-published/callout.published.notification.builder'; diff --git a/src/services/domain/notification/notification.service.spec.ts b/src/services/domain/notification/notification.service.spec.ts index dab66c39..afb7926e 100644 --- a/src/services/domain/notification/notification.service.spec.ts +++ b/src/services/domain/notification/notification.service.spec.ts @@ -24,6 +24,7 @@ import { AspectCreatedNotificationBuilder, AspectCommentCreatedNotificationBuilder, CommunityCollaborationInterestNotificationBuilder, + CalloutPublishedNotificationBuilder, } from '../builders'; import { AlkemioUrlGenerator } from '@src/services/application/alkemio-url-generator'; import { @@ -69,6 +70,7 @@ describe('NotificationService', () => { CommunityCollaborationInterestNotificationBuilder, AspectCreatedNotificationBuilder, AspectCommentCreatedNotificationBuilder, + CalloutPublishedNotificationBuilder, MockNotificationBuilderProvider, MockConfigServiceProvider, MockAlkemioClientAdapterProvider, diff --git a/src/services/domain/notification/notification.service.ts b/src/services/domain/notification/notification.service.ts index 471bd60f..624f1e65 100644 --- a/src/services/domain/notification/notification.service.ts +++ b/src/services/domain/notification/notification.service.ts @@ -17,11 +17,11 @@ import { AspectCreatedEventPayload, AspectCommentCreatedEventPayload, CommunityCollaborationInterestPayload, + CalloutPublishedEventPayload, } from '@common/dto'; import { AlkemioClientAdapter } from '@src/services/application/alkemio-client-adapter'; import { NotificationTemplateType } from '@src/types/notification.template.type'; import { INotificationBuilder } from '@core/contracts'; -import { CommunityNewMemberNotificationBuilder } from '@src/services/domain/builders'; import { ApplicationCreatedNotificationBuilder, CommunicationDiscussionCreatedNotificationBuilder, @@ -31,6 +31,8 @@ import { AspectCreatedNotificationBuilder, AspectCommentCreatedNotificationBuilder, CommunityCollaborationInterestNotificationBuilder, + CalloutPublishedNotificationBuilder, + CommunityNewMemberNotificationBuilder, } from '../builders'; @Injectable() @@ -50,6 +52,7 @@ export class NotificationService { private communityNewMemberNotificationBuilder: CommunityNewMemberNotificationBuilder, private aspectCreatedNotificationBuilder: AspectCreatedNotificationBuilder, private aspectCommentCreatedNotificationBuilder: AspectCommentCreatedNotificationBuilder, + private calloutPublishedNotificationBuilder: CalloutPublishedNotificationBuilder, private communityCollaborationInterestNotificationBuilder: CommunityCollaborationInterestNotificationBuilder ) {} @@ -146,6 +149,16 @@ export class NotificationService { this.aspectCommentCreatedNotificationBuilder ); } + + async sendCalloutPublishedNotification( + payload: CalloutPublishedEventPayload + ): Promise[]> { + return this.sendNotifications( + payload, + this.calloutPublishedNotificationBuilder + ); + } + async sendCommunityCollaborationInterestNotification( payload: CommunityCollaborationInterestPayload ): Promise[]> { diff --git a/src/services/external/notifme/notification.templates.builder.ts b/src/services/external/notifme/notification.templates.builder.ts index 7bbc8436..d39ade63 100644 --- a/src/services/external/notifme/notification.templates.builder.ts +++ b/src/services/external/notifme/notification.templates.builder.ts @@ -7,14 +7,16 @@ import { renderString } from 'nunjucks'; import { NotificationTemplateType } from '@src/types/notification.template.type'; @Injectable() -export class NotificationTemplateBuilder { +export class NotificationTemplateBuilder< + TTemplatePayload = Record +> { constructor( @Inject(WINSTON_MODULE_NEST_PROVIDER) private logger: LoggerService ) {} async buildTemplate( template: string, - templatePayload: Record + templatePayload: TTemplatePayload ): Promise { try { // eslint-disable-next-line @typescript-eslint/no-var-requires diff --git a/src/templates/callout.published.member.js b/src/templates/callout.published.member.js new file mode 100644 index 00000000..8301a63c --- /dev/null +++ b/src/templates/callout.published.member.js @@ -0,0 +1,24 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +var templates = require('./alkemio.template.blocks'); +/* eslint-disable quotes */ +module.exports = () => ({ + name: 'callout-published-member', + title: 'New callout is published on {{community.name}}: {{callout.displayName}}', + version: 1, + channels: { + email: { + from: '{{emailFrom}}', + to: '{{recipient.email}}', + subject: 'New callout is published on {{community.name}}: {{aspect.displayName}}', + html: `{% extends "src/templates/_layouts/email-transactional.html" %} + {% block content %} + Hi {{recipient.firstname}},

+ + A new callout was published by {{publishedBy.firstname}} on your community {{community.name}}: {{callout.displayName}}

+ + Sincerely yours, + {% endblock %} + ${templates.footerBlock}`, + }, + }, +}); From 23163d58764ee7b918c291f981889242a848e5c8 Mon Sep 17 00:00:00 2001 From: svetoslav Date: Wed, 31 Aug 2022 15:52:59 +0300 Subject: [PATCH 05/18] fixed some todos --- src/common/exceptions/not.supported.exception.ts | 2 +- .../aspect.comment.created.notification.builder.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/common/exceptions/not.supported.exception.ts b/src/common/exceptions/not.supported.exception.ts index 74966fb1..477c4835 100644 --- a/src/common/exceptions/not.supported.exception.ts +++ b/src/common/exceptions/not.supported.exception.ts @@ -1,4 +1,4 @@ -import { LogContext, AlkemioErrorStatus } from '@common/enums'; +import { LogContext, AlkemioErrorStatus } from '../enums'; import { BaseException } from './base.exception'; export class NotSupportedException extends BaseException { diff --git a/src/services/domain/builders/aspect-comment-created/aspect.comment.created.notification.builder.ts b/src/services/domain/builders/aspect-comment-created/aspect.comment.created.notification.builder.ts index abd401e8..18f17841 100644 --- a/src/services/domain/builders/aspect-comment-created/aspect.comment.created.notification.builder.ts +++ b/src/services/domain/builders/aspect-comment-created/aspect.comment.created.notification.builder.ts @@ -1,4 +1,5 @@ import { Inject, Injectable } from '@nestjs/common'; +import { UserPreferenceType } from '@alkemio/client-lib'; import { INotificationBuilder } from '@core/contracts'; import { AspectCommentCreatedEventPayload } from '@common/dto'; import { @@ -26,7 +27,7 @@ export class AspectCommentCreatedNotificationBuilder const roleConfig: RoleConfig[] = [ { role: 'owner', - preferenceType: 'NOTIFICATION_ASPECT_COMMENT_CREATED' as any, // UserPreferenceType.NotificationAspectCommentCreated, // todo not the correct one + preferenceType: UserPreferenceType.NotificationAspectCommentCreated, emailTemplate: EmailTemplate.ASPECT_COMMENT_CREATED_MEMBER, }, ]; From e545325f5aa70951b8fc47fdb71a0af3f1db1709 Mon Sep 17 00:00:00 2001 From: svetoslav Date: Wed, 31 Aug 2022 15:54:21 +0300 Subject: [PATCH 06/18] improved email template typings --- .../dto/application.created.event.payload.ts | 6 ++-- .../aspect.comment.created.event.payload.ts | 6 ++-- .../dto/aspect.created.event.payload.ts | 6 ++-- src/common/dto/base.event.payload.ts | 2 ++ .../dto/callout.published.event.payload.ts | 6 ++-- ...cation.discussion.created.event.payload.ts | 6 ++-- .../dto/communication.update.event.payload.ts | 5 +-- ...ommunity.collaboration.interest.payload.ts | 7 ++-- ...munity.context.review.submitted.payload.ts | 7 ++-- .../dto/community.new.member.payload.ts | 8 +++-- src/common/dto/hub.payload.ts | 1 + src/common/dto/index.ts | 1 + .../application.created.email.payload.ts | 24 +++++++++++++ .../aspect.comment.created.email.payload.ts | 20 +++++++++++ .../aspect.created.email.payload.ts | 20 +++++++++++ .../base.email.payload.ts | 9 +++++ .../callout.published.email.payload.ts | 23 ++++++++++++ ...cation.discussion.created.email.payload.ts | 30 ++++++++++++++++ ...munication.update.created.email.payload.ts | 26 ++++++++++++++ .../community.collaboration.email.payload.ts | 17 +++++++++ .../community.context.email.payload.ts | 16 +++++++++ .../community.new.member.email.payload.ts | 14 ++++++++ src/common/email-template-payload/index.ts | 11 ++++++ .../user.registered.email.payload.ts | 18 ++++++++++ .../notification.builder.interface.ts | 3 +- .../notification.builder.spec.ts | 4 +-- .../notification.builder.ts | 26 +++++++++----- ...pplication.created.notification.builder.ts | 9 +++-- ...ct.comment.created.notification.builder.ts | 15 +++++--- .../aspect.created.notification.builder.ts | 15 +++++--- .../callout.published.notification.builder.ts | 8 +++-- ...discussion.created.notification.builder.ts | 10 +++--- ...ion.update.created.notification.builder.ts | 11 +++--- ...aboration.interest.notification.builder.ts | 35 +++++++++++++++---- ...t.review.submitted.notification.builder.ts | 35 +++++++++++++++---- ...mmunity.new.member.notification.builder.ts | 33 +++++++++++++---- .../user.registered.notification.builder.ts | 10 +++--- .../notification/notification.service.spec.ts | 2 +- .../notification/notification.service.ts | 3 +- .../notifme/notification.templates.builder.ts | 5 +-- .../notification.builder.provider.mock.ts | 2 +- 41 files changed, 433 insertions(+), 82 deletions(-) create mode 100644 src/common/dto/base.event.payload.ts create mode 100644 src/common/email-template-payload/application.created.email.payload.ts create mode 100644 src/common/email-template-payload/aspect.comment.created.email.payload.ts create mode 100644 src/common/email-template-payload/aspect.created.email.payload.ts create mode 100644 src/common/email-template-payload/base.email.payload.ts create mode 100644 src/common/email-template-payload/callout.published.email.payload.ts create mode 100644 src/common/email-template-payload/communication.discussion.created.email.payload.ts create mode 100644 src/common/email-template-payload/communication.update.created.email.payload.ts create mode 100644 src/common/email-template-payload/community.collaboration.email.payload.ts create mode 100644 src/common/email-template-payload/community.context.email.payload.ts create mode 100644 src/common/email-template-payload/community.new.member.email.payload.ts create mode 100644 src/common/email-template-payload/index.ts create mode 100644 src/common/email-template-payload/user.registered.email.payload.ts diff --git a/src/common/dto/application.created.event.payload.ts b/src/common/dto/application.created.event.payload.ts index d232ad11..8c2f347c 100644 --- a/src/common/dto/application.created.event.payload.ts +++ b/src/common/dto/application.created.event.payload.ts @@ -1,4 +1,5 @@ import { HubPayload } from './hub.payload'; +import { BaseEventPayload } from '@common/dto/base.event.payload'; export enum CommunityType { HUB = 'hub', @@ -6,8 +7,7 @@ export enum CommunityType { OPPORTUNITY = 'opportunity', } -// toDo: fix this type - derive from base event payload. -export type ApplicationCreatedEventPayload = { +export interface ApplicationCreatedEventPayload extends BaseEventPayload { applicationCreatorID: string; applicantID: string; community: { @@ -15,4 +15,4 @@ export type ApplicationCreatedEventPayload = { type: CommunityType; }; hub: HubPayload; -}; +} diff --git a/src/common/dto/aspect.comment.created.event.payload.ts b/src/common/dto/aspect.comment.created.event.payload.ts index f7f0356b..8715f5a0 100644 --- a/src/common/dto/aspect.comment.created.event.payload.ts +++ b/src/common/dto/aspect.comment.created.event.payload.ts @@ -1,4 +1,6 @@ -export type AspectCommentCreatedEventPayload = { +import { BaseEventPayload } from './base.event.payload'; + +export interface AspectCommentCreatedEventPayload extends BaseEventPayload { aspect: { displayName: string; createdBy: string; @@ -23,4 +25,4 @@ export type AspectCommentCreatedEventPayload = { }; }; }; -}; +} diff --git a/src/common/dto/aspect.created.event.payload.ts b/src/common/dto/aspect.created.event.payload.ts index c16180b7..89442da4 100644 --- a/src/common/dto/aspect.created.event.payload.ts +++ b/src/common/dto/aspect.created.event.payload.ts @@ -1,4 +1,6 @@ -export type AspectCreatedEventPayload = { +import { BaseEventPayload } from './base.event.payload'; + +export interface AspectCreatedEventPayload extends BaseEventPayload { aspect: { id: string; createdBy: string; @@ -21,4 +23,4 @@ export type AspectCreatedEventPayload = { }; }; }; -}; +} diff --git a/src/common/dto/base.event.payload.ts b/src/common/dto/base.event.payload.ts new file mode 100644 index 00000000..5f526f07 --- /dev/null +++ b/src/common/dto/base.event.payload.ts @@ -0,0 +1,2 @@ +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface BaseEventPayload {} // todo when templates are more clearly defined diff --git a/src/common/dto/callout.published.event.payload.ts b/src/common/dto/callout.published.event.payload.ts index 94611234..cc25a439 100644 --- a/src/common/dto/callout.published.event.payload.ts +++ b/src/common/dto/callout.published.event.payload.ts @@ -1,4 +1,6 @@ -export type CalloutPublishedEventPayload = { +import { BaseEventPayload } from './base.event.payload'; + +export interface CalloutPublishedEventPayload extends BaseEventPayload { userID: string; callout: { id: string; @@ -21,4 +23,4 @@ export type CalloutPublishedEventPayload = { }; }; }; -}; +} diff --git a/src/common/dto/communication.discussion.created.event.payload.ts b/src/common/dto/communication.discussion.created.event.payload.ts index addd12b8..447b6fdc 100644 --- a/src/common/dto/communication.discussion.created.event.payload.ts +++ b/src/common/dto/communication.discussion.created.event.payload.ts @@ -1,7 +1,9 @@ import { CommunityType } from './application.created.event.payload'; import { HubPayload } from './hub.payload'; +import { BaseEventPayload } from './base.event.payload'; -export type CommunicationDiscussionCreatedEventPayload = { +export interface CommunicationDiscussionCreatedEventPayload + extends BaseEventPayload { discussion: { id: string; createdBy: string; @@ -13,4 +15,4 @@ export type CommunicationDiscussionCreatedEventPayload = { type: CommunityType; }; hub: HubPayload; -}; +} diff --git a/src/common/dto/communication.update.event.payload.ts b/src/common/dto/communication.update.event.payload.ts index 19116266..43a09087 100644 --- a/src/common/dto/communication.update.event.payload.ts +++ b/src/common/dto/communication.update.event.payload.ts @@ -1,7 +1,8 @@ import { HubPayload } from './hub.payload'; import { CommunityType } from './application.created.event.payload'; +import { BaseEventPayload } from '@common/dto/base.event.payload'; -export type CommunicationUpdateEventPayload = { +export interface CommunicationUpdateEventPayload extends BaseEventPayload { update: { id: string; createdBy: string; @@ -11,4 +12,4 @@ export type CommunicationUpdateEventPayload = { type: CommunityType; }; hub: HubPayload; -}; +} diff --git a/src/common/dto/community.collaboration.interest.payload.ts b/src/common/dto/community.collaboration.interest.payload.ts index c934bde0..e26cc030 100644 --- a/src/common/dto/community.collaboration.interest.payload.ts +++ b/src/common/dto/community.collaboration.interest.payload.ts @@ -1,4 +1,7 @@ -export type CommunityCollaborationInterestPayload = { +import { BaseEventPayload } from './base.event.payload'; + +export interface CommunityCollaborationInterestPayload + extends BaseEventPayload { userID: string; opportunity: { id: string; @@ -9,4 +12,4 @@ export type CommunityCollaborationInterestPayload = { role: string; description: string; }; -}; +} diff --git a/src/common/dto/community.context.review.submitted.payload.ts b/src/common/dto/community.context.review.submitted.payload.ts index 519e0387..74017d95 100644 --- a/src/common/dto/community.context.review.submitted.payload.ts +++ b/src/common/dto/community.context.review.submitted.payload.ts @@ -1,9 +1,12 @@ -export type CommunityContextReviewSubmittedPayload = { +import { BaseEventPayload } from './base.event.payload'; + +export interface CommunityContextReviewSubmittedPayload + extends BaseEventPayload { userId: string; challengeId: string; community: { name: string }; questions: FeedbackQuestions[]; -}; +} export type FeedbackQuestions = { name: string; diff --git a/src/common/dto/community.new.member.payload.ts b/src/common/dto/community.new.member.payload.ts index 4de49dd4..3754a141 100644 --- a/src/common/dto/community.new.member.payload.ts +++ b/src/common/dto/community.new.member.payload.ts @@ -1,11 +1,13 @@ -import { HubPayload } from './hub.payload'; import { CommunityType } from './application.created.event.payload'; +import { BaseEventPayload } from './base.event.payload'; +import { HubPayload } from './hub.payload'; -export type CommunityNewMemberPayload = { +export interface CommunityNewMemberPayload extends BaseEventPayload { userID: string; community: { name: string; + url: string; type: CommunityType; }; hub: HubPayload; -}; +} diff --git a/src/common/dto/hub.payload.ts b/src/common/dto/hub.payload.ts index 6ee6c243..2b5cf208 100644 --- a/src/common/dto/hub.payload.ts +++ b/src/common/dto/hub.payload.ts @@ -1,4 +1,5 @@ export type HubPayload = { + // todo remove when BaseEventPayload interface is defined id: string; nameID: string; challenge?: { diff --git a/src/common/dto/index.ts b/src/common/dto/index.ts index e4f5c978..42a98a91 100644 --- a/src/common/dto/index.ts +++ b/src/common/dto/index.ts @@ -1,3 +1,4 @@ +export * from './base.event.payload'; export * from './application.created.event.payload'; export * from './communication.discussion.created.event.payload'; export * from './communication.update.event.payload'; diff --git a/src/common/email-template-payload/application.created.email.payload.ts b/src/common/email-template-payload/application.created.email.payload.ts new file mode 100644 index 00000000..344ec745 --- /dev/null +++ b/src/common/email-template-payload/application.created.email.payload.ts @@ -0,0 +1,24 @@ +import { BaseEmailPayload } from '@common/email-template-payload'; +import { CommunityType } from '@common/dto'; + +export interface ApplicationCreatedEmailPayload extends BaseEmailPayload { + emailFrom: string; + applicant: { + name: string; + email: string; + profile: string; + }; + recipient: { + name: string; + email: string; + notificationPreferences: string; + }; + community: { + name: string; + type: CommunityType; + url: string; + }; + hub: { + url: string; + }; +} diff --git a/src/common/email-template-payload/aspect.comment.created.email.payload.ts b/src/common/email-template-payload/aspect.comment.created.email.payload.ts new file mode 100644 index 00000000..b6d77095 --- /dev/null +++ b/src/common/email-template-payload/aspect.comment.created.email.payload.ts @@ -0,0 +1,20 @@ +import { BaseEmailPayload } from '@common/email-template-payload/base.email.payload'; +// @ts- +export interface AspectCommentCreatedEmailPayload extends BaseEmailPayload { + aspect: { + displayName: string; + }; + recipient: { + firstname: string; + email: string; + notificationPreferences: string; + }; + createdBy: { + firstname: string; + email: string; + }; + community: { + name: string; + url: string; + }; +} diff --git a/src/common/email-template-payload/aspect.created.email.payload.ts b/src/common/email-template-payload/aspect.created.email.payload.ts new file mode 100644 index 00000000..dbd7a8ab --- /dev/null +++ b/src/common/email-template-payload/aspect.created.email.payload.ts @@ -0,0 +1,20 @@ +import { BaseEmailPayload } from './base.email.payload'; + +export interface AspectCreatedEmailPayload extends BaseEmailPayload { + createdBy: { + firstname: string; + email: string; + }; + aspect: { + displayName: string; + }; + recipient: { + firstname: string; + email: string; + notificationPreferences: string; + }; + community: { + name: string; + url: string; + }; +} diff --git a/src/common/email-template-payload/base.email.payload.ts b/src/common/email-template-payload/base.email.payload.ts new file mode 100644 index 00000000..52d302ad --- /dev/null +++ b/src/common/email-template-payload/base.email.payload.ts @@ -0,0 +1,9 @@ +export interface BaseEmailPayload { + emailFrom: string; + hub: { + url: string; // the url of alkemio + }; + recipient: { + notificationPreferences: string; + }; +} diff --git a/src/common/email-template-payload/callout.published.email.payload.ts b/src/common/email-template-payload/callout.published.email.payload.ts new file mode 100644 index 00000000..6989fd74 --- /dev/null +++ b/src/common/email-template-payload/callout.published.email.payload.ts @@ -0,0 +1,23 @@ +import { BaseEmailPayload } from '../email-template-payload/base.email.payload'; + +export interface CalloutPublishedEmailPayload extends BaseEmailPayload { + emailFrom: string; + recipient: { + email: string; + firstName: string; + notificationPreferences: string; + }; + community: { + name: string; + url: string; + }; + callout: { + displayName: string; + }; + publishedBy: { + firstName: string; + }; + hub: { + url: string; + }; +} diff --git a/src/common/email-template-payload/communication.discussion.created.email.payload.ts b/src/common/email-template-payload/communication.discussion.created.email.payload.ts new file mode 100644 index 00000000..8dcb5c73 --- /dev/null +++ b/src/common/email-template-payload/communication.discussion.created.email.payload.ts @@ -0,0 +1,30 @@ +import { BaseEmailPayload } from './base.email.payload'; +import { CommunityType } from '@common/dto'; + +export interface CommunicationDiscussionCreatedEmailPayload + extends BaseEmailPayload { + createdBy: { + name: string; + firstname: string; + email: string; + profile: string; + }; + discussion: { + id: string; + title: string; + description: string; + }; + recipient: { + firstname: string; + email: string; + notificationPreferences: string; + }; + community: { + name: string; + type: CommunityType; + url: string; + }; + hub: { + url: string; + }; +} diff --git a/src/common/email-template-payload/communication.update.created.email.payload.ts b/src/common/email-template-payload/communication.update.created.email.payload.ts new file mode 100644 index 00000000..15a16a7d --- /dev/null +++ b/src/common/email-template-payload/communication.update.created.email.payload.ts @@ -0,0 +1,26 @@ +import { BaseEmailPayload } from './base.email.payload'; + +export interface CommunicationUpdateCreatedEmailPayload + extends BaseEmailPayload { + sender: { + firstname: string; + email: string; + profile: string; + }; + update: { + id: string; + }; + recipient: { + firstname: string; + email: string; + notificationPreferences: string; + }; + community: { + name: string; + type: string; + url: string; + }; + hub: { + url: string; + }; +} diff --git a/src/common/email-template-payload/community.collaboration.email.payload.ts b/src/common/email-template-payload/community.collaboration.email.payload.ts new file mode 100644 index 00000000..c6a1974f --- /dev/null +++ b/src/common/email-template-payload/community.collaboration.email.payload.ts @@ -0,0 +1,17 @@ +import { BaseEmailPayload } from './base.email.payload'; + +export interface CommunityCollaborationInterestEmailPayload + extends BaseEmailPayload { + user: { + name: string; + email: string; + }; + recipient: { + firstname: string; + email: string; + notificationPreferences: string; + }; + opportunity: { + name: string; + }; +} diff --git a/src/common/email-template-payload/community.context.email.payload.ts b/src/common/email-template-payload/community.context.email.payload.ts new file mode 100644 index 00000000..b3e8f9d3 --- /dev/null +++ b/src/common/email-template-payload/community.context.email.payload.ts @@ -0,0 +1,16 @@ +import { BaseEmailPayload } from './base.email.payload'; + +export interface CommunityContextEmailPayload extends BaseEmailPayload { + reviewer: { + name: string; + }; + recipient: { + firstname: string; + email: string; + notificationPreferences: string; + }; + community: { + name: string; + }; + review: string; +} diff --git a/src/common/email-template-payload/community.new.member.email.payload.ts b/src/common/email-template-payload/community.new.member.email.payload.ts new file mode 100644 index 00000000..974028c7 --- /dev/null +++ b/src/common/email-template-payload/community.new.member.email.payload.ts @@ -0,0 +1,14 @@ +import { BaseEmailPayload } from './base.email.payload'; + +export interface CommunityNewMemberEmailPayload extends BaseEmailPayload { + member: { + email: string; + }; + recipient: { + firstname: string; + notificationPreferences: string; + }; + community: { + name: string; + }; +} diff --git a/src/common/email-template-payload/index.ts b/src/common/email-template-payload/index.ts new file mode 100644 index 00000000..8a81d74b --- /dev/null +++ b/src/common/email-template-payload/index.ts @@ -0,0 +1,11 @@ +export * from './base.email.payload'; +export * from './application.created.email.payload'; +export * from './aspect.comment.created.email.payload'; +export * from './aspect.created.email.payload'; +export * from './callout.published.email.payload'; +export * from './communication.discussion.created.email.payload'; +export * from './communication.update.created.email.payload'; +export * from './community.collaboration.email.payload'; +export * from './community.context.email.payload'; +export * from './community.new.member.email.payload'; +export * from './user.registered.email.payload'; diff --git a/src/common/email-template-payload/user.registered.email.payload.ts b/src/common/email-template-payload/user.registered.email.payload.ts new file mode 100644 index 00000000..982e73d7 --- /dev/null +++ b/src/common/email-template-payload/user.registered.email.payload.ts @@ -0,0 +1,18 @@ +import { BaseEmailPayload } from './base.email.payload'; + +export interface UserRegisteredEmailPayload extends BaseEmailPayload { + registrant: { + name: string; + firstname: string; + email: string; + profile: string; + }; + recipient: { + firstname: string; + email: string; + notificationPreferences: string; + }; + hub: { + url: string; + }; +} diff --git a/src/core/contracts/notification.builder.interface.ts b/src/core/contracts/notification.builder.interface.ts index 52ee0d63..24635266 100644 --- a/src/core/contracts/notification.builder.interface.ts +++ b/src/core/contracts/notification.builder.interface.ts @@ -1,5 +1,6 @@ import { NotificationTemplateType } from '@src/types'; +import { BaseEventPayload } from '@common/dto'; export interface INotificationBuilder { - build(payload: Record): Promise; + build(payload: BaseEventPayload): Promise; } diff --git a/src/services/application/notification-builder/notification.builder.spec.ts b/src/services/application/notification-builder/notification.builder.spec.ts index aab20e84..f886103d 100644 --- a/src/services/application/notification-builder/notification.builder.spec.ts +++ b/src/services/application/notification-builder/notification.builder.spec.ts @@ -25,7 +25,7 @@ import { WINSTON_MODULE_NEST_PROVIDER } from 'nest-winston'; describe('NotificationBuilder', () => { let alkemioAdapter: INotifiedUsersProvider; let recipientTemplateProvider: INotificationRecipientTemplateProvider; - let notificationBuilder: NotificationBuilder; + let notificationBuilder: NotificationBuilder; let logger: LoggerService; beforeAll(async () => { const moduleRef = await Test.createTestingModule({ @@ -86,7 +86,7 @@ describe('NotificationBuilder', () => { }); }); -const getBaseOptions = (): NotificationOptions => ({ +const getBaseOptions = (): NotificationOptions => ({ payload: {}, templateType: 'application_created', templatePayloadBuilderFn: () => ({}), diff --git a/src/services/application/notification-builder/notification.builder.ts b/src/services/application/notification-builder/notification.builder.ts index 3de1fbaf..4657b678 100644 --- a/src/services/application/notification-builder/notification.builder.ts +++ b/src/services/application/notification-builder/notification.builder.ts @@ -20,6 +20,8 @@ import { import { NotificationTemplateBuilder } from '@src/services/external'; import { WINSTON_MODULE_NEST_PROVIDER } from 'nest-winston'; import { NotificationTemplateType } from '@src/types/notification.template.type'; +import { BaseEmailPayload } from '@common/email-template-payload'; +import { BaseEventPayload } from '@common/dto'; export type RoleConfig = { role: string; @@ -27,19 +29,22 @@ export type RoleConfig = { preferenceType?: UserPreferenceType; }; export type TemplateType = keyof TemplateConfig; -export type TemplateBuilderFn = ( +export type TemplateBuilderFn = ( payload: TPayload, recipient: User, eventUser?: User -) => Record; +) => TEmailPayload; -export type NotificationOptions> = { +export type NotificationOptions< + TPayload extends BaseEventPayload, + TEmailPayload extends BaseEmailPayload +> = { /** The received event payload */ payload: TPayload; /** the name of the template in notifications.yml */ templateType: TemplateType; /** payload builder function for the email template */ - templatePayloadBuilderFn: TemplateBuilderFn; + templatePayloadBuilderFn: TemplateBuilderFn; /** configuration to which roles the notification must be sent */ roleConfig: RoleConfig[]; /** the creator of the event if any */ @@ -49,20 +54,23 @@ export type NotificationOptions> = { }; // todo improve the type of templatePayloadBuilderFn with TEmailPayload extending BaseEmailPayload // todo convert TPayload to extend Record -export class NotificationBuilder> { +export class NotificationBuilder< + TPayload extends BaseEventPayload, + TEmailPayload extends BaseEmailPayload +> { constructor( @Inject(WINSTON_MODULE_NEST_PROVIDER) private readonly logger: LoggerService, @Inject(ALKEMIO_CLIENT_ADAPTER) private alkemioAdapter: AlkemioClientAdapter, @Inject(TEMPLATE_PROVIDER) - private readonly notificationTemplateBuilder: NotificationTemplateBuilder, + private readonly notificationTemplateBuilder: NotificationTemplateBuilder, @Inject(NOTIFICATION_RECIPIENTS_YML_ADAPTER) private readonly recipientTemplateProvider: INotificationRecipientTemplateProvider ) {} async build( - options: NotificationOptions + options: NotificationOptions ): Promise { const { payload, eventUserId, roleConfig, templateType } = options; this.logger.verbose?.(JSON.stringify(payload), LogContext.NOTIFICATIONS); @@ -107,7 +115,7 @@ export class NotificationBuilder> { } private async buildNotificationsForRole( - options: NotificationOptions, + options: NotificationOptions, recipientRole: string, emailTemplate: EmailTemplate, extra?: { @@ -234,7 +242,7 @@ export class NotificationBuilder> { } private async buildNotificationTemplate( - options: NotificationOptions, + options: NotificationOptions, recipient: User, templateName: string, eventUser?: User diff --git a/src/services/domain/builders/application-created/application.created.notification.builder.ts b/src/services/domain/builders/application-created/application.created.notification.builder.ts index 58da09a8..555afddd 100644 --- a/src/services/domain/builders/application-created/application.created.notification.builder.ts +++ b/src/services/domain/builders/application-created/application.created.notification.builder.ts @@ -14,6 +14,7 @@ import { import { NotificationTemplateType } from '@src/types'; import { UserPreferenceType } from '@alkemio/client-lib'; import { EmailTemplate } from '@common/enums/email.template'; +import { ApplicationCreatedEmailPayload } from '@common/email-template-payload'; @Injectable() export class ApplicationCreatedNotificationBuilder @@ -22,7 +23,10 @@ export class ApplicationCreatedNotificationBuilder constructor( @Inject(ALKEMIO_URL_GENERATOR) private readonly alkemioUrlGenerator: AlkemioUrlGenerator, - private readonly notificationBuilder: NotificationBuilder + private readonly notificationBuilder: NotificationBuilder< + ApplicationCreatedEventPayload, + ApplicationCreatedEmailPayload + > ) {} build( @@ -62,7 +66,7 @@ export class ApplicationCreatedNotificationBuilder eventPayload: ApplicationCreatedEventPayload, recipient: User, applicant?: User - ): Record { + ): ApplicationCreatedEmailPayload { if (!applicant) { throw Error( `Applicant not provided for '${COMMUNITY_APPLICATION_CREATED} event'` @@ -101,7 +105,6 @@ export class ApplicationCreatedNotificationBuilder hub: { url: hubURL, }, - event: eventPayload, }; } } diff --git a/src/services/domain/builders/aspect-comment-created/aspect.comment.created.notification.builder.ts b/src/services/domain/builders/aspect-comment-created/aspect.comment.created.notification.builder.ts index 18f17841..2e420e8c 100644 --- a/src/services/domain/builders/aspect-comment-created/aspect.comment.created.notification.builder.ts +++ b/src/services/domain/builders/aspect-comment-created/aspect.comment.created.notification.builder.ts @@ -2,6 +2,7 @@ import { Inject, Injectable } from '@nestjs/common'; import { UserPreferenceType } from '@alkemio/client-lib'; import { INotificationBuilder } from '@core/contracts'; import { AspectCommentCreatedEventPayload } from '@common/dto'; +import { AspectCommentCreatedEmailPayload } from '@common/email-template-payload'; import { AlkemioUrlGenerator, NotificationBuilder, @@ -17,7 +18,10 @@ export class AspectCommentCreatedNotificationBuilder implements INotificationBuilder { constructor( - private readonly notificationBuilder: NotificationBuilder, + private readonly notificationBuilder: NotificationBuilder< + AspectCommentCreatedEventPayload, + AspectCommentCreatedEmailPayload + >, @Inject(ALKEMIO_URL_GENERATOR) private readonly alkemioUrlGenerator: AlkemioUrlGenerator ) {} @@ -50,7 +54,7 @@ export class AspectCommentCreatedNotificationBuilder eventPayload: AspectCommentCreatedEventPayload, recipient: User, commentAuthor?: User - ): Record { + ): AspectCommentCreatedEmailPayload { if (!commentAuthor) { throw Error( `Comment author not provided for '${COMMENT_CREATED_ON_ASPECT} event'` @@ -67,19 +71,19 @@ export class AspectCommentCreatedNotificationBuilder eventPayload.hub.challenge?.opportunity?.nameID ); + const hubURL = this.alkemioUrlGenerator.createHubURL(); + return { emailFrom: 'info@alkem.io', aspect: { displayName: eventPayload.aspect.displayName, }, recipient: { - name: recipient.displayName, firstname: recipient.firstName, email: recipient.email, notificationPreferences: notificationPreferenceURL, }, createdBy: { - name: commentAuthor.displayName, firstname: commentAuthor.firstName, email: commentAuthor.email, }, @@ -87,6 +91,9 @@ export class AspectCommentCreatedNotificationBuilder name: eventPayload.community.name, url: communityURL, }, + hub: { + url: hubURL, + }, }; } } diff --git a/src/services/domain/builders/aspect-created/aspect.created.notification.builder.ts b/src/services/domain/builders/aspect-created/aspect.created.notification.builder.ts index 6a9e013f..89e5d1e3 100644 --- a/src/services/domain/builders/aspect-created/aspect.created.notification.builder.ts +++ b/src/services/domain/builders/aspect-created/aspect.created.notification.builder.ts @@ -11,11 +11,15 @@ import { UserPreferenceType } from '@alkemio/client-lib'; import { User } from '@core/models'; import { ALKEMIO_URL_GENERATOR, ASPECT_CREATED } from '@src/common'; import { EmailTemplate } from '@common/enums/email.template'; +import { AspectCreatedEmailPayload } from '@common/email-template-payload'; @Injectable() export class AspectCreatedNotificationBuilder implements INotificationBuilder { constructor( - private readonly notificationBuilder: NotificationBuilder, + private readonly notificationBuilder: NotificationBuilder< + AspectCreatedEventPayload, + AspectCreatedEmailPayload + >, @Inject(ALKEMIO_URL_GENERATOR) private readonly alkemioUrlGenerator: AlkemioUrlGenerator ) {} @@ -59,7 +63,7 @@ export class AspectCreatedNotificationBuilder implements INotificationBuilder { eventPayload: AspectCreatedEventPayload, recipient: User, creator?: User - ): Record { + ): AspectCreatedEmailPayload { if (!creator) { throw Error(`Creator not provided for '${ASPECT_CREATED} event'`); } @@ -75,10 +79,11 @@ export class AspectCreatedNotificationBuilder implements INotificationBuilder { eventPayload.hub.challenge?.opportunity?.nameID ); + const hubURL = this.alkemioUrlGenerator.createHubURL(); + return { emailFrom: 'info@alkem.io', createdBy: { - name: creator.displayName, firstname: creator.firstName, email: creator.email, }, @@ -86,7 +91,6 @@ export class AspectCreatedNotificationBuilder implements INotificationBuilder { displayName: eventPayload.aspect.displayName, }, recipient: { - name: recipient.displayName, firstname: recipient.firstName, email: recipient.email, notificationPreferences: notificationPreferenceURL, @@ -95,6 +99,9 @@ export class AspectCreatedNotificationBuilder implements INotificationBuilder { name: eventPayload.community.name, url: communityURL, }, + hub: { + url: hubURL, + }, }; } } diff --git a/src/services/domain/builders/callout-published/callout.published.notification.builder.ts b/src/services/domain/builders/callout-published/callout.published.notification.builder.ts index 0ecaebfd..b0ccd8b8 100644 --- a/src/services/domain/builders/callout-published/callout.published.notification.builder.ts +++ b/src/services/domain/builders/callout-published/callout.published.notification.builder.ts @@ -11,13 +11,17 @@ import { User } from '@core/models'; import { ALKEMIO_URL_GENERATOR, CALLOUT_PUBLISHED } from '@src/common'; import { EmailTemplate } from '@common/enums/email.template'; import { CalloutPublishedEventPayload } from '@common/dto'; +import { CalloutPublishedEmailPayload } from '@common/email-template-payload'; @Injectable() export class CalloutPublishedNotificationBuilder implements INotificationBuilder { constructor( - private readonly notificationBuilder: NotificationBuilder, // CalloutPublishedEmailPayload + private readonly notificationBuilder: NotificationBuilder< + CalloutPublishedEventPayload, + CalloutPublishedEmailPayload + >, @Inject(ALKEMIO_URL_GENERATOR) private readonly alkemioUrlGenerator: AlkemioUrlGenerator ) {} @@ -53,7 +57,7 @@ export class CalloutPublishedNotificationBuilder eventPayload: CalloutPublishedEventPayload, recipient: User, creator?: User - ): Record { + ): CalloutPublishedEmailPayload { if (!creator) { throw Error(`Creator not provided for '${CALLOUT_PUBLISHED} event'`); } diff --git a/src/services/domain/builders/communication-discussion-created/communication.discussion.created.notification.builder.ts b/src/services/domain/builders/communication-discussion-created/communication.discussion.created.notification.builder.ts index d72d9dc5..9ec34a21 100644 --- a/src/services/domain/builders/communication-discussion-created/communication.discussion.created.notification.builder.ts +++ b/src/services/domain/builders/communication-discussion-created/communication.discussion.created.notification.builder.ts @@ -14,6 +14,7 @@ import { RoleConfig, } from '../../../application'; import { NotificationTemplateType } from '@src/types'; +import { CommunicationDiscussionCreatedEmailPayload } from '@common/email-template-payload'; @Injectable() export class CommunicationDiscussionCreatedNotificationBuilder @@ -22,7 +23,10 @@ export class CommunicationDiscussionCreatedNotificationBuilder constructor( @Inject(ALKEMIO_URL_GENERATOR) private readonly alkemioUrlGenerator: AlkemioUrlGenerator, - private readonly notificationBuilder: NotificationBuilder + private readonly notificationBuilder: NotificationBuilder< + CommunicationDiscussionCreatedEventPayload, + CommunicationDiscussionCreatedEmailPayload + > ) {} build( @@ -67,7 +71,7 @@ export class CommunicationDiscussionCreatedNotificationBuilder eventPayload: CommunicationDiscussionCreatedEventPayload, recipient: User, sender?: User - ): Record { + ): CommunicationDiscussionCreatedEmailPayload { if (!sender) { throw Error( `Sender not provided for '${COMMUNICATION_DISCUSSION_CREATED}' event` @@ -99,7 +103,6 @@ export class CommunicationDiscussionCreatedNotificationBuilder description: eventPayload.discussion.description, }, recipient: { - name: recipient.displayName, firstname: recipient.firstName, email: recipient.email, notificationPreferences: notificationPreferenceURL, @@ -112,7 +115,6 @@ export class CommunicationDiscussionCreatedNotificationBuilder hub: { url: hubURL, }, - event: eventPayload, }; } } diff --git a/src/services/domain/builders/communication-update-created/communication.update.created.notification.builder.ts b/src/services/domain/builders/communication-update-created/communication.update.created.notification.builder.ts index c9044e22..17eb0be4 100644 --- a/src/services/domain/builders/communication-update-created/communication.update.created.notification.builder.ts +++ b/src/services/domain/builders/communication-update-created/communication.update.created.notification.builder.ts @@ -11,6 +11,7 @@ import { RoleConfig, } from '../../../application'; import { NotificationTemplateType } from '@src/types'; +import { CommunicationUpdateCreatedEmailPayload } from '@common/email-template-payload'; @Injectable() export class CommunicationUpdateCreatedNotificationBuilder @@ -19,7 +20,10 @@ export class CommunicationUpdateCreatedNotificationBuilder constructor( @Inject(ALKEMIO_URL_GENERATOR) private readonly alkemioUrlGenerator: AlkemioUrlGenerator, - private readonly notificationBuilder: NotificationBuilder + private readonly notificationBuilder: NotificationBuilder< + CommunicationUpdateEventPayload, + CommunicationUpdateCreatedEmailPayload + > ) {} build( @@ -63,7 +67,7 @@ export class CommunicationUpdateCreatedNotificationBuilder eventPayload: CommunicationUpdateEventPayload, recipient: User, sender?: User - ): any { + ): CommunicationUpdateCreatedEmailPayload { if (!sender) { throw Error( `Sender not provided for '${COMMUNICATION_UPDATE_SENT}' event` @@ -83,7 +87,6 @@ export class CommunicationUpdateCreatedNotificationBuilder return { emailFrom: 'info@alkem.io', sender: { - name: sender.displayName, firstname: sender.firstName, email: sender.email, profile: senderProfile, @@ -92,7 +95,6 @@ export class CommunicationUpdateCreatedNotificationBuilder id: eventPayload.update.id, }, recipient: { - name: recipient.displayName, firstname: recipient.firstName, email: recipient.email, notificationPreferences: notificationPreferenceURL, @@ -105,7 +107,6 @@ export class CommunicationUpdateCreatedNotificationBuilder hub: { url: hubURL, }, - event: eventPayload, }; } } diff --git a/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts b/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts index c10a967b..d8e6f647 100644 --- a/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts +++ b/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts @@ -1,19 +1,32 @@ -import { Injectable } from '@nestjs/common'; +import { Inject, Injectable } from '@nestjs/common'; import { UserPreferenceType } from '@alkemio/client-lib'; import { INotificationBuilder } from '@core/contracts'; import { User } from '@core/models'; -import { NotificationBuilder, RoleConfig } from '../../../application'; +import { + AlkemioUrlGenerator, + NotificationBuilder, + RoleConfig, +} from '../../../application'; import { EmailTemplate } from '@common/enums/email.template'; import { CommunityCollaborationInterestPayload } from '@common/dto'; import { NotificationTemplateType } from '@src/types'; -import { COMMUNITY_COLLABORATION_INTEREST } from '@src/common'; +import { + ALKEMIO_URL_GENERATOR, + COMMUNITY_COLLABORATION_INTEREST, +} from '@src/common'; +import { CommunityCollaborationInterestEmailPayload } from '@common/email-template-payload'; @Injectable() export class CommunityCollaborationInterestNotificationBuilder implements INotificationBuilder { constructor( - private readonly notificationBuilder: NotificationBuilder + @Inject(ALKEMIO_URL_GENERATOR) + private readonly alkemioUrlGenerator: AlkemioUrlGenerator, + private readonly notificationBuilder: NotificationBuilder< + CommunityCollaborationInterestPayload, + CommunityCollaborationInterestEmailPayload + > ) {} build( @@ -53,13 +66,20 @@ export class CommunityCollaborationInterestNotificationBuilder eventPayload: CommunityCollaborationInterestPayload, recipient: User, user?: User - ) { + ): CommunityCollaborationInterestEmailPayload { if (!user) { throw Error( `Interested user not provided for '${COMMUNITY_COLLABORATION_INTEREST} event'` ); } + const notificationPreferenceURL = + this.alkemioUrlGenerator.createUserNotificationPreferencesURL( + recipient.nameID + ); + + const hubURL = this.alkemioUrlGenerator.createHubURL(); + return { emailFrom: 'info@alkem.io', user: { @@ -69,10 +89,13 @@ export class CommunityCollaborationInterestNotificationBuilder recipient: { firstname: recipient.firstName, email: recipient.email, + notificationPreferences: notificationPreferenceURL, }, opportunity: { name: eventPayload.opportunity.name, - communityName: eventPayload.opportunity.communityName, + }, + hub: { + url: hubURL, }, relation: { role: eventPayload.relation.role, diff --git a/src/services/domain/builders/community-context-feedback/community.context.review.submitted.notification.builder.ts b/src/services/domain/builders/community-context-feedback/community.context.review.submitted.notification.builder.ts index 04d43893..9a5fcc74 100644 --- a/src/services/domain/builders/community-context-feedback/community.context.review.submitted.notification.builder.ts +++ b/src/services/domain/builders/community-context-feedback/community.context.review.submitted.notification.builder.ts @@ -1,5 +1,8 @@ -import { Injectable } from '@nestjs/common'; -import { COMMUNITY_CONTEXT_REVIEW_SUBMITTED } from '@src/common'; +import { Inject, Injectable } from '@nestjs/common'; +import { + ALKEMIO_URL_GENERATOR, + COMMUNITY_CONTEXT_REVIEW_SUBMITTED, +} from '@src/common'; import { INotificationBuilder } from '@core/contracts'; import { CommunityContextReviewSubmittedPayload, @@ -8,15 +11,25 @@ import { import { EmailTemplate } from '@common/enums/email.template'; import { UserPreferenceType } from '@alkemio/client-lib'; import { User } from '@core/models'; -import { NotificationBuilder, RoleConfig } from '../../../application'; +import { + AlkemioUrlGenerator, + NotificationBuilder, + RoleConfig, +} from '../../../application'; import { NotificationTemplateType } from '@src/types'; +import { CommunityContextEmailPayload } from '@common/email-template-payload'; @Injectable() export class CommunityContextReviewSubmittedNotificationBuilder implements INotificationBuilder { constructor( - private readonly notificationBuilder: NotificationBuilder + @Inject(ALKEMIO_URL_GENERATOR) + private readonly alkemioUrlGenerator: AlkemioUrlGenerator, + private readonly notificationBuilder: NotificationBuilder< + CommunityContextReviewSubmittedPayload, + CommunityContextEmailPayload + > ) {} build( @@ -56,27 +69,37 @@ export class CommunityContextReviewSubmittedNotificationBuilder eventPayload: CommunityContextReviewSubmittedPayload, recipient: User, reviewer?: User - ): any { + ): CommunityContextEmailPayload { if (!reviewer) { throw Error( `Reviewer not provided for '${COMMUNITY_CONTEXT_REVIEW_SUBMITTED}' event` ); } + const notificationPreferenceURL = + this.alkemioUrlGenerator.createUserNotificationPreferencesURL( + recipient.nameID + ); + + const hubURL = this.alkemioUrlGenerator.createHubURL(); + return { emailFrom: 'info@alkem.io', reviewer: { name: reviewer.displayName, }, recipient: { - name: recipient.displayName, firstname: recipient.firstName, email: recipient.email, + notificationPreferences: notificationPreferenceURL, }, community: { name: eventPayload.community.name, }, review: toStringReview(eventPayload.questions), + hub: { + url: hubURL, + }, }; } } diff --git a/src/services/domain/builders/community-new-member/community.new.member.notification.builder.ts b/src/services/domain/builders/community-new-member/community.new.member.notification.builder.ts index b396bd10..73de9ce0 100644 --- a/src/services/domain/builders/community-new-member/community.new.member.notification.builder.ts +++ b/src/services/domain/builders/community-new-member/community.new.member.notification.builder.ts @@ -1,19 +1,29 @@ -import { Injectable } from '@nestjs/common'; +import { Inject, Injectable } from '@nestjs/common'; import { UserPreferenceType } from '@alkemio/client-lib'; import { INotificationBuilder } from '@core/contracts'; import { User } from '@core/models'; -import { NotificationBuilder, RoleConfig } from '../../../application'; +import { + AlkemioUrlGenerator, + NotificationBuilder, + RoleConfig, +} from '../../../application'; import { EmailTemplate } from '@common/enums/email.template'; import { CommunityNewMemberPayload } from '@common/dto'; import { NotificationTemplateType } from '@src/types'; -import { COMMUNITY_NEW_MEMBER } from '@src/common'; +import { ALKEMIO_URL_GENERATOR, COMMUNITY_NEW_MEMBER } from '@src/common'; +import { CommunityNewMemberEmailPayload } from '@common/email-template-payload'; @Injectable() export class CommunityNewMemberNotificationBuilder implements INotificationBuilder { constructor( - private readonly notificationBuilder: NotificationBuilder + private readonly notificationBuilder: NotificationBuilder< + CommunityNewMemberPayload, + CommunityNewMemberEmailPayload + >, + @Inject(ALKEMIO_URL_GENERATOR) + private readonly alkemioUrlGenerator: AlkemioUrlGenerator ) {} build( @@ -53,24 +63,33 @@ export class CommunityNewMemberNotificationBuilder eventPayload: CommunityNewMemberPayload, recipient: User, member?: User - ) { + ): CommunityNewMemberEmailPayload { if (!member) { throw Error(`member not provided for '${COMMUNITY_NEW_MEMBER} event'`); } + const notificationPreferenceURL = + this.alkemioUrlGenerator.createUserNotificationPreferencesURL( + recipient.nameID + ); + + const hubURL = this.alkemioUrlGenerator.createHubURL(); + return { emailFrom: 'info@alkem.io', member: { - name: member.displayName, email: member.email, }, recipient: { firstname: recipient.firstName, - email: recipient.email, + notificationPreferences: notificationPreferenceURL, }, community: { name: eventPayload.community.name, }, + hub: { + url: hubURL, + }, }; } } diff --git a/src/services/domain/builders/user-registered/user.registered.notification.builder.ts b/src/services/domain/builders/user-registered/user.registered.notification.builder.ts index 8ca01069..8c72cf78 100644 --- a/src/services/domain/builders/user-registered/user.registered.notification.builder.ts +++ b/src/services/domain/builders/user-registered/user.registered.notification.builder.ts @@ -8,13 +8,17 @@ import { NotificationBuilder, RoleConfig } from '../../../application'; import { UserPreferenceType } from '@alkemio/client-lib'; import { EmailTemplate } from '@common/enums/email.template'; import { NotificationTemplateType } from '@src/types/notification.template.type'; +import { UserRegisteredEmailPayload } from '@common/email-template-payload'; @Injectable() export class UserRegisteredNotificationBuilder implements INotificationBuilder { constructor( @Inject(ALKEMIO_URL_GENERATOR) private readonly alkemioUrlGenerator: AlkemioUrlGenerator, - private readonly notificationBuilder: NotificationBuilder + private readonly notificationBuilder: NotificationBuilder< + UserRegistrationEventPayload, + UserRegisteredEmailPayload + > ) {} build( @@ -48,7 +52,7 @@ export class UserRegisteredNotificationBuilder implements INotificationBuilder { eventPayload: UserRegistrationEventPayload, recipient: User, registrant?: User - ): Record { + ): UserRegisteredEmailPayload { if (!registrant) { throw Error(`Registrant not provided for '${USER_REGISTERED}' event`); } @@ -70,7 +74,6 @@ export class UserRegisteredNotificationBuilder implements INotificationBuilder { profile: registrantProfileURL, }, recipient: { - name: recipient.displayName, firstname: recipient.firstName, email: recipient.email, notificationPreferences: notificationPreferenceURL, @@ -78,7 +81,6 @@ export class UserRegisteredNotificationBuilder implements INotificationBuilder { hub: { url: hubURL, }, - event: eventPayload, }; } } diff --git a/src/services/domain/notification/notification.service.spec.ts b/src/services/domain/notification/notification.service.spec.ts index afb7926e..fa0c0ff2 100644 --- a/src/services/domain/notification/notification.service.spec.ts +++ b/src/services/domain/notification/notification.service.spec.ts @@ -49,7 +49,7 @@ const testData = { describe('NotificationService', () => { let notificationService: NotificationService; let alkemioAdapter: INotifiedUsersProvider; - let notificationBuilder: NotificationBuilder; + let notificationBuilder: NotificationBuilder; let notifmeService: NotifmeSdk; beforeAll(async () => { diff --git a/src/services/domain/notification/notification.service.ts b/src/services/domain/notification/notification.service.ts index 624f1e65..8433b1cc 100644 --- a/src/services/domain/notification/notification.service.ts +++ b/src/services/domain/notification/notification.service.ts @@ -18,6 +18,7 @@ import { AspectCommentCreatedEventPayload, CommunityCollaborationInterestPayload, CalloutPublishedEventPayload, + BaseEventPayload, } from '@common/dto'; import { AlkemioClientAdapter } from '@src/services/application/alkemio-client-adapter'; import { NotificationTemplateType } from '@src/types/notification.template.type'; @@ -57,7 +58,7 @@ export class NotificationService { ) {} async sendNotifications( - payload: Record, + payload: BaseEventPayload, notificationBuilder: INotificationBuilder ): Promise[]> { const notificationsEnabled = diff --git a/src/services/external/notifme/notification.templates.builder.ts b/src/services/external/notifme/notification.templates.builder.ts index d39ade63..36071559 100644 --- a/src/services/external/notifme/notification.templates.builder.ts +++ b/src/services/external/notifme/notification.templates.builder.ts @@ -5,10 +5,11 @@ import { LogContext } from '@src/common'; import { WINSTON_MODULE_NEST_PROVIDER } from 'nest-winston'; import { renderString } from 'nunjucks'; import { NotificationTemplateType } from '@src/types/notification.template.type'; +import { BaseEmailPayload } from '@common/email-template-payload'; @Injectable() export class NotificationTemplateBuilder< - TTemplatePayload = Record + TEmailPayload extends BaseEmailPayload > { constructor( @Inject(WINSTON_MODULE_NEST_PROVIDER) @@ -16,7 +17,7 @@ export class NotificationTemplateBuilder< ) {} async buildTemplate( template: string, - templatePayload: TTemplatePayload + templatePayload: TEmailPayload ): Promise { try { // eslint-disable-next-line @typescript-eslint/no-var-requires diff --git a/test/mocks/notification.builder.provider.mock.ts b/test/mocks/notification.builder.provider.mock.ts index b53c987f..55a3ccdd 100644 --- a/test/mocks/notification.builder.provider.mock.ts +++ b/test/mocks/notification.builder.provider.mock.ts @@ -3,7 +3,7 @@ import { PublicPart } from '@test/utils'; import { NotificationBuilder } from '@src/services/application'; export const MockNotificationBuilderProvider: ValueProvider< - PublicPart + PublicPart> > = { provide: NotificationBuilder, useValue: { From 2ae0ea194e03248a4d872a28d6df6a1db83e3e4b Mon Sep 17 00:00:00 2001 From: svetoslav Date: Wed, 31 Aug 2022 17:14:58 +0300 Subject: [PATCH 07/18] removed done todo --- .../application/notification-builder/notification.builder.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/services/application/notification-builder/notification.builder.ts b/src/services/application/notification-builder/notification.builder.ts index 4657b678..30e275a4 100644 --- a/src/services/application/notification-builder/notification.builder.ts +++ b/src/services/application/notification-builder/notification.builder.ts @@ -52,8 +52,7 @@ export type NotificationOptions< /** variables to be used into the chosen templateType if any */ templateVariables?: Record; }; -// todo improve the type of templatePayloadBuilderFn with TEmailPayload extending BaseEmailPayload -// todo convert TPayload to extend Record + export class NotificationBuilder< TPayload extends BaseEventPayload, TEmailPayload extends BaseEmailPayload From 5dfea8afc684c9e6ffb567adee6638e950df23b6 Mon Sep 17 00:00:00 2001 From: svetoslav Date: Wed, 31 Aug 2022 17:25:48 +0300 Subject: [PATCH 08/18] fixed broken tests --- src/app.controller.ts | 3 ++- .../notification-builder/notification.builder.spec.ts | 4 ++-- .../community.collaboration.interest.notification.builder.ts | 4 ---- src/services/domain/notification/notification.service.spec.ts | 2 +- test/mocks/notification.builder.provider.mock.ts | 2 +- test/mocks/notification.template.builder.provider.mock.ts | 2 +- 6 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/app.controller.ts b/src/app.controller.ts index 1e175065..7a45f252 100644 --- a/src/app.controller.ts +++ b/src/app.controller.ts @@ -35,6 +35,7 @@ import { CommunityCollaborationInterestPayload, UserRegistrationEventPayload, CalloutPublishedEventPayload, + BaseEventPayload, } from '@common/dto'; import { NotificationService } from './services/domain/notification/notification.service'; @@ -198,7 +199,7 @@ export class AppController { } private async sendNotifications( - @Payload() eventPayload: Record, + @Payload() eventPayload: BaseEventPayload, @Ctx() context: RmqContext, sentNotifications: Promise[]>, eventName: string diff --git a/src/services/application/notification-builder/notification.builder.spec.ts b/src/services/application/notification-builder/notification.builder.spec.ts index f886103d..22106aa2 100644 --- a/src/services/application/notification-builder/notification.builder.spec.ts +++ b/src/services/application/notification-builder/notification.builder.spec.ts @@ -25,7 +25,7 @@ import { WINSTON_MODULE_NEST_PROVIDER } from 'nest-winston'; describe('NotificationBuilder', () => { let alkemioAdapter: INotifiedUsersProvider; let recipientTemplateProvider: INotificationRecipientTemplateProvider; - let notificationBuilder: NotificationBuilder; + let notificationBuilder: NotificationBuilder; let logger: LoggerService; beforeAll(async () => { const moduleRef = await Test.createTestingModule({ @@ -86,7 +86,7 @@ describe('NotificationBuilder', () => { }); }); -const getBaseOptions = (): NotificationOptions => ({ +const getBaseOptions = (): NotificationOptions => ({ payload: {}, templateType: 'application_created', templatePayloadBuilderFn: () => ({}), diff --git a/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts b/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts index d8e6f647..cabfb18e 100644 --- a/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts +++ b/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts @@ -97,10 +97,6 @@ export class CommunityCollaborationInterestNotificationBuilder hub: { url: hubURL, }, - relation: { - role: eventPayload.relation.role, - description: eventPayload.relation.description, - }, }; } } diff --git a/src/services/domain/notification/notification.service.spec.ts b/src/services/domain/notification/notification.service.spec.ts index fa0c0ff2..1509016e 100644 --- a/src/services/domain/notification/notification.service.spec.ts +++ b/src/services/domain/notification/notification.service.spec.ts @@ -49,7 +49,7 @@ const testData = { describe('NotificationService', () => { let notificationService: NotificationService; let alkemioAdapter: INotifiedUsersProvider; - let notificationBuilder: NotificationBuilder; + let notificationBuilder: NotificationBuilder; let notifmeService: NotifmeSdk; beforeAll(async () => { diff --git a/test/mocks/notification.builder.provider.mock.ts b/test/mocks/notification.builder.provider.mock.ts index 55a3ccdd..f3ca971b 100644 --- a/test/mocks/notification.builder.provider.mock.ts +++ b/test/mocks/notification.builder.provider.mock.ts @@ -3,7 +3,7 @@ import { PublicPart } from '@test/utils'; import { NotificationBuilder } from '@src/services/application'; export const MockNotificationBuilderProvider: ValueProvider< - PublicPart> + PublicPart> > = { provide: NotificationBuilder, useValue: { diff --git a/test/mocks/notification.template.builder.provider.mock.ts b/test/mocks/notification.template.builder.provider.mock.ts index 9f7e1744..0bad4d1e 100644 --- a/test/mocks/notification.template.builder.provider.mock.ts +++ b/test/mocks/notification.template.builder.provider.mock.ts @@ -4,7 +4,7 @@ import { NotificationTemplateBuilder } from '@src/services/external'; import { TEMPLATE_PROVIDER } from '@src/common'; export const MockNotificationTemplateBuilderProvider: ValueProvider< - PublicPart + PublicPart> > = { provide: TEMPLATE_PROVIDER, useValue: { From c30bb8dfed2e8b67c76df0ea3b49fb3674e07621 Mon Sep 17 00:00:00 2001 From: svetoslav Date: Thu, 1 Sep 2022 11:07:14 +0300 Subject: [PATCH 09/18] reviewers suggestions --- package-lock.json | 14 +++++++------- package.json | 2 +- src/app.controller.ts | 2 +- src/common/dto/callout.published.event.payload.ts | 1 + .../callout.published.email.payload.ts | 1 + .../callout.published.notification.builder.ts | 3 ++- src/templates/callout.published.member.js | 4 +++- 7 files changed, 16 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3eede4fb..1b283e03 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.5.8", "license": "EUPL-1.2", "dependencies": { - "@alkemio/client-lib": "^0.16.2", + "@alkemio/client-lib": "^0.17.0", "@nestjs/axios": "^0.0.1", "@nestjs/common": "^8.0.5", "@nestjs/config": "^1.0.1", @@ -72,9 +72,9 @@ } }, "node_modules/@alkemio/client-lib": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@alkemio/client-lib/-/client-lib-0.16.2.tgz", - "integrity": "sha512-7WxrIbgimwlgUS9DNAdX1OzeOIorIf8mvrrU1N+jbAq+Gju+J1/QNoMUMYr6FR2sPZo2ejTP1qqM3Bb+xiWHKA==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@alkemio/client-lib/-/client-lib-0.17.0.tgz", + "integrity": "sha512-G9PR9pLmGVoVgUV0/bbnuOpwAiZ+CYlh3Pdh+CGjcqQBbg+sGihzdAZt7uXAKcI8kPam9f6REotmYcL5w9tY+w==", "dependencies": { "@graphql-codegen/typescript-graphql-request": "^4.5.3", "@graphql-codegen/typescript-operations": "^2.5.3", @@ -17630,9 +17630,9 @@ }, "dependencies": { "@alkemio/client-lib": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@alkemio/client-lib/-/client-lib-0.16.2.tgz", - "integrity": "sha512-7WxrIbgimwlgUS9DNAdX1OzeOIorIf8mvrrU1N+jbAq+Gju+J1/QNoMUMYr6FR2sPZo2ejTP1qqM3Bb+xiWHKA==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@alkemio/client-lib/-/client-lib-0.17.0.tgz", + "integrity": "sha512-G9PR9pLmGVoVgUV0/bbnuOpwAiZ+CYlh3Pdh+CGjcqQBbg+sGihzdAZt7uXAKcI8kPam9f6REotmYcL5w9tY+w==", "requires": { "@graphql-codegen/typescript-graphql-request": "^4.5.3", "@graphql-codegen/typescript-operations": "^2.5.3", diff --git a/package.json b/package.json index 6f366ac7..70d5eef1 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "validate-connection": "ts-node src/utils/validate-connection.ts" }, "dependencies": { - "@alkemio/client-lib": "^0.16.2", + "@alkemio/client-lib": "^0.17.0", "@nestjs/axios": "^0.0.1", "@nestjs/common": "^8.0.5", "@nestjs/config": "^1.0.1", diff --git a/src/app.controller.ts b/src/app.controller.ts index 7a45f252..6c359633 100644 --- a/src/app.controller.ts +++ b/src/app.controller.ts @@ -194,7 +194,7 @@ export class AppController { eventPayload, context, this.notificationService.sendCalloutPublishedNotification(eventPayload), - ASPECT_CREATED + CALLOUT_PUBLISHED ); } diff --git a/src/common/dto/callout.published.event.payload.ts b/src/common/dto/callout.published.event.payload.ts index cc25a439..8a330ab1 100644 --- a/src/common/dto/callout.published.event.payload.ts +++ b/src/common/dto/callout.published.event.payload.ts @@ -5,6 +5,7 @@ export interface CalloutPublishedEventPayload extends BaseEventPayload { callout: { id: string; displayName: string; + description: string; type: string; }; community: { diff --git a/src/common/email-template-payload/callout.published.email.payload.ts b/src/common/email-template-payload/callout.published.email.payload.ts index 6989fd74..6ae5b7be 100644 --- a/src/common/email-template-payload/callout.published.email.payload.ts +++ b/src/common/email-template-payload/callout.published.email.payload.ts @@ -13,6 +13,7 @@ export interface CalloutPublishedEmailPayload extends BaseEmailPayload { }; callout: { displayName: string; + description: string; }; publishedBy: { firstName: string; diff --git a/src/services/domain/builders/callout-published/callout.published.notification.builder.ts b/src/services/domain/builders/callout-published/callout.published.notification.builder.ts index b0ccd8b8..fa3cb012 100644 --- a/src/services/domain/builders/callout-published/callout.published.notification.builder.ts +++ b/src/services/domain/builders/callout-published/callout.published.notification.builder.ts @@ -31,7 +31,7 @@ export class CalloutPublishedNotificationBuilder const roleConfig: RoleConfig[] = [ { role: 'user', - preferenceType: UserPreferenceType.NotificationCalloutCreated, + preferenceType: UserPreferenceType.NotificationCalloutPublished, emailTemplate: EmailTemplate.CALLOUT_PUBLISHED_MEMBER, }, ]; @@ -87,6 +87,7 @@ export class CalloutPublishedNotificationBuilder }, callout: { displayName: eventPayload.callout.displayName, + description: eventPayload.callout.description, }, community: { name: eventPayload.community.name, diff --git a/src/templates/callout.published.member.js b/src/templates/callout.published.member.js index 8301a63c..34157bea 100644 --- a/src/templates/callout.published.member.js +++ b/src/templates/callout.published.member.js @@ -9,12 +9,14 @@ module.exports = () => ({ email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: 'New callout is published on {{community.name}}: {{aspect.displayName}}', + subject: 'New Callout is published on {{community.name}}: {{aspect.displayName}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

A new callout was published by {{publishedBy.firstname}} on your community {{community.name}}: {{callout.displayName}}

+ + {{callout.description}}

Sincerely yours, {% endblock %} From cb5f835cec657828034f9e6a5c9daf1f0ece1700 Mon Sep 17 00:00:00 2001 From: svetoslav Date: Fri, 2 Sep 2022 12:22:42 +0300 Subject: [PATCH 10/18] fixed some fields on email templates --- .../application.created.email.payload.ts | 2 +- .../callout.published.email.payload.ts | 1 - .../communication.discussion.created.email.payload.ts | 7 ------- .../communication.update.created.email.payload.ts | 6 ------ .../community.collaboration.email.payload.ts | 5 ++++- .../application.created.notification.builder.ts | 1 + .../callout.published.notification.builder.ts | 1 - ...mmunication.discussion.created.notification.builder.ts | 7 ------- .../communication.update.created.notification.builder.ts | 7 ------- ...mmunity.collaboration.interest.notification.builder.ts | 5 ++++- src/templates/callout.published.member.js | 8 +++----- 11 files changed, 13 insertions(+), 37 deletions(-) diff --git a/src/common/email-template-payload/application.created.email.payload.ts b/src/common/email-template-payload/application.created.email.payload.ts index 344ec745..096ec594 100644 --- a/src/common/email-template-payload/application.created.email.payload.ts +++ b/src/common/email-template-payload/application.created.email.payload.ts @@ -2,9 +2,9 @@ import { BaseEmailPayload } from '@common/email-template-payload'; import { CommunityType } from '@common/dto'; export interface ApplicationCreatedEmailPayload extends BaseEmailPayload { - emailFrom: string; applicant: { name: string; + firstname: string; email: string; profile: string; }; diff --git a/src/common/email-template-payload/callout.published.email.payload.ts b/src/common/email-template-payload/callout.published.email.payload.ts index 6ae5b7be..6989fd74 100644 --- a/src/common/email-template-payload/callout.published.email.payload.ts +++ b/src/common/email-template-payload/callout.published.email.payload.ts @@ -13,7 +13,6 @@ export interface CalloutPublishedEmailPayload extends BaseEmailPayload { }; callout: { displayName: string; - description: string; }; publishedBy: { firstName: string; diff --git a/src/common/email-template-payload/communication.discussion.created.email.payload.ts b/src/common/email-template-payload/communication.discussion.created.email.payload.ts index 8dcb5c73..606070dd 100644 --- a/src/common/email-template-payload/communication.discussion.created.email.payload.ts +++ b/src/common/email-template-payload/communication.discussion.created.email.payload.ts @@ -1,18 +1,12 @@ import { BaseEmailPayload } from './base.email.payload'; -import { CommunityType } from '@common/dto'; export interface CommunicationDiscussionCreatedEmailPayload extends BaseEmailPayload { createdBy: { - name: string; firstname: string; - email: string; - profile: string; }; discussion: { - id: string; title: string; - description: string; }; recipient: { firstname: string; @@ -21,7 +15,6 @@ export interface CommunicationDiscussionCreatedEmailPayload }; community: { name: string; - type: CommunityType; url: string; }; hub: { diff --git a/src/common/email-template-payload/communication.update.created.email.payload.ts b/src/common/email-template-payload/communication.update.created.email.payload.ts index 15a16a7d..1e9136c7 100644 --- a/src/common/email-template-payload/communication.update.created.email.payload.ts +++ b/src/common/email-template-payload/communication.update.created.email.payload.ts @@ -4,11 +4,6 @@ export interface CommunicationUpdateCreatedEmailPayload extends BaseEmailPayload { sender: { firstname: string; - email: string; - profile: string; - }; - update: { - id: string; }; recipient: { firstname: string; @@ -17,7 +12,6 @@ export interface CommunicationUpdateCreatedEmailPayload }; community: { name: string; - type: string; url: string; }; hub: { diff --git a/src/common/email-template-payload/community.collaboration.email.payload.ts b/src/common/email-template-payload/community.collaboration.email.payload.ts index c6a1974f..47754de5 100644 --- a/src/common/email-template-payload/community.collaboration.email.payload.ts +++ b/src/common/email-template-payload/community.collaboration.email.payload.ts @@ -4,7 +4,6 @@ export interface CommunityCollaborationInterestEmailPayload extends BaseEmailPayload { user: { name: string; - email: string; }; recipient: { firstname: string; @@ -14,4 +13,8 @@ export interface CommunityCollaborationInterestEmailPayload opportunity: { name: string; }; + relation: { + role: string; + description: string; + }; } diff --git a/src/services/domain/builders/application-created/application.created.notification.builder.ts b/src/services/domain/builders/application-created/application.created.notification.builder.ts index 555afddd..3ba9b92f 100644 --- a/src/services/domain/builders/application-created/application.created.notification.builder.ts +++ b/src/services/domain/builders/application-created/application.created.notification.builder.ts @@ -88,6 +88,7 @@ export class ApplicationCreatedNotificationBuilder return { emailFrom: 'info@alkem.io', applicant: { + firstname: applicant.firstName, name: applicant.displayName, email: applicant.email, profile: applicantProfileURL, diff --git a/src/services/domain/builders/callout-published/callout.published.notification.builder.ts b/src/services/domain/builders/callout-published/callout.published.notification.builder.ts index fa3cb012..bc74adc7 100644 --- a/src/services/domain/builders/callout-published/callout.published.notification.builder.ts +++ b/src/services/domain/builders/callout-published/callout.published.notification.builder.ts @@ -87,7 +87,6 @@ export class CalloutPublishedNotificationBuilder }, callout: { displayName: eventPayload.callout.displayName, - description: eventPayload.callout.description, }, community: { name: eventPayload.community.name, diff --git a/src/services/domain/builders/communication-discussion-created/communication.discussion.created.notification.builder.ts b/src/services/domain/builders/communication-discussion-created/communication.discussion.created.notification.builder.ts index 9ec34a21..93f2d35d 100644 --- a/src/services/domain/builders/communication-discussion-created/communication.discussion.created.notification.builder.ts +++ b/src/services/domain/builders/communication-discussion-created/communication.discussion.created.notification.builder.ts @@ -83,7 +83,6 @@ export class CommunicationDiscussionCreatedNotificationBuilder eventPayload.hub.challenge?.nameID, eventPayload.hub.challenge?.opportunity?.nameID ); - const senderProfile = this.alkemioUrlGenerator.createUserURL(sender.nameID); const notificationPreferenceURL = this.alkemioUrlGenerator.createUserNotificationPreferencesURL( recipient.nameID @@ -92,15 +91,10 @@ export class CommunicationDiscussionCreatedNotificationBuilder return { emailFrom: 'info@alkem.io', createdBy: { - name: sender.displayName, firstname: sender.firstName, - email: sender.email, - profile: senderProfile, }, discussion: { - id: eventPayload.discussion.id, title: eventPayload.discussion.title, - description: eventPayload.discussion.description, }, recipient: { firstname: recipient.firstName, @@ -109,7 +103,6 @@ export class CommunicationDiscussionCreatedNotificationBuilder }, community: { name: eventPayload.community.name, - type: eventPayload.community.type, url: communityURL, }, hub: { diff --git a/src/services/domain/builders/communication-update-created/communication.update.created.notification.builder.ts b/src/services/domain/builders/communication-update-created/communication.update.created.notification.builder.ts index 17eb0be4..848ac8f9 100644 --- a/src/services/domain/builders/communication-update-created/communication.update.created.notification.builder.ts +++ b/src/services/domain/builders/communication-update-created/communication.update.created.notification.builder.ts @@ -78,7 +78,6 @@ export class CommunicationUpdateCreatedNotificationBuilder eventPayload.hub.challenge?.nameID, eventPayload.hub.challenge?.opportunity?.nameID ); - const senderProfile = this.alkemioUrlGenerator.createUserURL(sender.nameID); const notificationPreferenceURL = this.alkemioUrlGenerator.createUserNotificationPreferencesURL( recipient.nameID @@ -88,11 +87,6 @@ export class CommunicationUpdateCreatedNotificationBuilder emailFrom: 'info@alkem.io', sender: { firstname: sender.firstName, - email: sender.email, - profile: senderProfile, - }, - update: { - id: eventPayload.update.id, }, recipient: { firstname: recipient.firstName, @@ -101,7 +95,6 @@ export class CommunicationUpdateCreatedNotificationBuilder }, community: { name: eventPayload.community.name, - type: eventPayload.community.type, url: communityURL, }, hub: { diff --git a/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts b/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts index cabfb18e..4dc8a45d 100644 --- a/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts +++ b/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts @@ -84,7 +84,6 @@ export class CommunityCollaborationInterestNotificationBuilder emailFrom: 'info@alkem.io', user: { name: user.displayName, - email: user.email, }, recipient: { firstname: recipient.firstName, @@ -94,6 +93,10 @@ export class CommunityCollaborationInterestNotificationBuilder opportunity: { name: eventPayload.opportunity.name, }, + relation: { + role: eventPayload.relation.role, + description: eventPayload.relation.description, + }, hub: { url: hubURL, }, diff --git a/src/templates/callout.published.member.js b/src/templates/callout.published.member.js index 34157bea..859c48e3 100644 --- a/src/templates/callout.published.member.js +++ b/src/templates/callout.published.member.js @@ -9,14 +9,12 @@ module.exports = () => ({ email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: 'New Callout is published on {{community.name}}: {{aspect.displayName}}', + subject: 'New Callout is published on {{community.name}}: {{callout.displayName}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} - Hi {{recipient.firstname}},

+ Hi {{recipient.firstName}},

- A new callout was published by {{publishedBy.firstname}} on your community {{community.name}}: {{callout.displayName}}

- - {{callout.description}}

+ A new callout was published by {{publishedBy.firstName}} on your community {{community.name}}: {{callout.displayName}}

Sincerely yours, {% endblock %} From f3111cf9d5f73cda45f78078791dc8152eb0b029 Mon Sep 17 00:00:00 2001 From: svetoslav Date: Fri, 2 Sep 2022 11:59:04 +0300 Subject: [PATCH 11/18] improved reporting on rejection reason --- src/app.controller.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/app.controller.ts b/src/app.controller.ts index 6c359633..9d45a929 100644 --- a/src/app.controller.ts +++ b/src/app.controller.ts @@ -222,7 +222,7 @@ export class AppController { .then(x => { const nacked = x.filter( (y: { status: string }) => y.status === 'rejected' - ); + ) as PromiseRejectedResult[]; if (nacked.length === 0) { this.logger.verbose?.(`All ${x.length} messages successfully sent!`); @@ -243,6 +243,8 @@ export class AppController { // dead-lettered / discarded, providing 'false' to the 3rd parameter, requeue channel.nack(originalMsg, false, false); } + // print all rejected notifications + nacked.forEach(x => this.logger?.warn(x.reason)); } }) .catch(err => { From cffc6879d765efb90844b2315e4e101f157ad54b Mon Sep 17 00:00:00 2001 From: svetoslav Date: Fri, 2 Sep 2022 11:59:32 +0300 Subject: [PATCH 12/18] missing fields in email payload added --- .../community.new.member.email.payload.ts | 2 ++ .../community.new.member.notification.builder.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/common/email-template-payload/community.new.member.email.payload.ts b/src/common/email-template-payload/community.new.member.email.payload.ts index 974028c7..69aaa997 100644 --- a/src/common/email-template-payload/community.new.member.email.payload.ts +++ b/src/common/email-template-payload/community.new.member.email.payload.ts @@ -3,9 +3,11 @@ import { BaseEmailPayload } from './base.email.payload'; export interface CommunityNewMemberEmailPayload extends BaseEmailPayload { member: { email: string; + name: string; }; recipient: { firstname: string; + email: string; notificationPreferences: string; }; community: { diff --git a/src/services/domain/builders/community-new-member/community.new.member.notification.builder.ts b/src/services/domain/builders/community-new-member/community.new.member.notification.builder.ts index 73de9ce0..96b42da1 100644 --- a/src/services/domain/builders/community-new-member/community.new.member.notification.builder.ts +++ b/src/services/domain/builders/community-new-member/community.new.member.notification.builder.ts @@ -78,10 +78,12 @@ export class CommunityNewMemberNotificationBuilder return { emailFrom: 'info@alkem.io', member: { + name: member.displayName, email: member.email, }, recipient: { firstname: recipient.firstName, + email: recipient.email, notificationPreferences: notificationPreferenceURL, }, community: { From 07ce1a71077205fd0b81456a9abcdd41fd240301 Mon Sep 17 00:00:00 2001 From: Neil Smyth Date: Fri, 9 Sep 2022 09:27:16 +0200 Subject: [PATCH 13/18] updated payload for collaboration interest + associated email templates; tidied up typing --- package-lock.json | 4 ++-- package.json | 2 +- .../dto/application.created.event.payload.ts | 7 +------ ...ication.discussion.created.event.payload.ts | 2 +- .../dto/communication.update.event.payload.ts | 2 +- ...community.collaboration.interest.payload.ts | 13 ++++++++----- src/common/dto/community.new.member.payload.ts | 2 +- .../application.created.email.payload.ts | 2 +- .../community.collaboration.email.payload.ts | 12 +++++++++--- src/common/enums/community.type.ts | 6 ++++++ ...laboration.interest.notification.builder.ts | 18 ++++++++++++++---- .../community.collaboration.interest.admin.js | 6 +++--- .../community.collaboration.interest.user.js | 4 ++-- 13 files changed, 50 insertions(+), 30 deletions(-) create mode 100644 src/common/enums/community.type.ts diff --git a/package-lock.json b/package-lock.json index 1b283e03..7347d211 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "alkemio-notifications", - "version": "0.5.8", + "version": "0.5.9", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "alkemio-notifications", - "version": "0.5.8", + "version": "0.5.9", "license": "EUPL-1.2", "dependencies": { "@alkemio/client-lib": "^0.17.0", diff --git a/package.json b/package.json index 70d5eef1..a6a587eb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "alkemio-notifications", - "version": "0.5.8", + "version": "0.5.9", "description": "Alkemio notifications service", "author": "Alkemio Foundation", "private": false, diff --git a/src/common/dto/application.created.event.payload.ts b/src/common/dto/application.created.event.payload.ts index 8c2f347c..36c27fff 100644 --- a/src/common/dto/application.created.event.payload.ts +++ b/src/common/dto/application.created.event.payload.ts @@ -1,11 +1,6 @@ import { HubPayload } from './hub.payload'; import { BaseEventPayload } from '@common/dto/base.event.payload'; - -export enum CommunityType { - HUB = 'hub', - CHALLENGE = 'challenge', - OPPORTUNITY = 'opportunity', -} +import { CommunityType } from '../enums/community.type'; export interface ApplicationCreatedEventPayload extends BaseEventPayload { applicationCreatorID: string; diff --git a/src/common/dto/communication.discussion.created.event.payload.ts b/src/common/dto/communication.discussion.created.event.payload.ts index 447b6fdc..7fb44cf9 100644 --- a/src/common/dto/communication.discussion.created.event.payload.ts +++ b/src/common/dto/communication.discussion.created.event.payload.ts @@ -1,6 +1,6 @@ -import { CommunityType } from './application.created.event.payload'; import { HubPayload } from './hub.payload'; import { BaseEventPayload } from './base.event.payload'; +import { CommunityType } from '../enums/community.type'; export interface CommunicationDiscussionCreatedEventPayload extends BaseEventPayload { diff --git a/src/common/dto/communication.update.event.payload.ts b/src/common/dto/communication.update.event.payload.ts index 43a09087..cef9fc50 100644 --- a/src/common/dto/communication.update.event.payload.ts +++ b/src/common/dto/communication.update.event.payload.ts @@ -1,6 +1,6 @@ import { HubPayload } from './hub.payload'; -import { CommunityType } from './application.created.event.payload'; import { BaseEventPayload } from '@common/dto/base.event.payload'; +import { CommunityType } from '../enums/community.type'; export interface CommunicationUpdateEventPayload extends BaseEventPayload { update: { diff --git a/src/common/dto/community.collaboration.interest.payload.ts b/src/common/dto/community.collaboration.interest.payload.ts index e26cc030..4d057715 100644 --- a/src/common/dto/community.collaboration.interest.payload.ts +++ b/src/common/dto/community.collaboration.interest.payload.ts @@ -1,15 +1,18 @@ +import { CommunityType } from '../enums/community.type'; import { BaseEventPayload } from './base.event.payload'; +import { HubPayload } from './hub.payload'; export interface CommunityCollaborationInterestPayload extends BaseEventPayload { userID: string; - opportunity: { - id: string; - name: string; - communityName: string | undefined; - }; + relation: { role: string; description: string; }; + community: { + name: string; + type: CommunityType; + }; + hub: HubPayload; } diff --git a/src/common/dto/community.new.member.payload.ts b/src/common/dto/community.new.member.payload.ts index 3754a141..adf6d145 100644 --- a/src/common/dto/community.new.member.payload.ts +++ b/src/common/dto/community.new.member.payload.ts @@ -1,4 +1,4 @@ -import { CommunityType } from './application.created.event.payload'; +import { CommunityType } from '../enums/community.type'; import { BaseEventPayload } from './base.event.payload'; import { HubPayload } from './hub.payload'; diff --git a/src/common/email-template-payload/application.created.email.payload.ts b/src/common/email-template-payload/application.created.email.payload.ts index 096ec594..0fe40ef0 100644 --- a/src/common/email-template-payload/application.created.email.payload.ts +++ b/src/common/email-template-payload/application.created.email.payload.ts @@ -1,5 +1,5 @@ import { BaseEmailPayload } from '@common/email-template-payload'; -import { CommunityType } from '@common/dto'; +import { CommunityType } from '../enums/community.type'; export interface ApplicationCreatedEmailPayload extends BaseEmailPayload { applicant: { diff --git a/src/common/email-template-payload/community.collaboration.email.payload.ts b/src/common/email-template-payload/community.collaboration.email.payload.ts index 47754de5..25a09aca 100644 --- a/src/common/email-template-payload/community.collaboration.email.payload.ts +++ b/src/common/email-template-payload/community.collaboration.email.payload.ts @@ -1,3 +1,4 @@ +import { CommunityType } from '../enums/community.type'; import { BaseEmailPayload } from './base.email.payload'; export interface CommunityCollaborationInterestEmailPayload @@ -10,11 +11,16 @@ export interface CommunityCollaborationInterestEmailPayload email: string; notificationPreferences: string; }; - opportunity: { - name: string; - }; relation: { role: string; description: string; }; + community: { + name: string; + type: CommunityType; + url: string; + }; + hub: { + url: string; + }; } diff --git a/src/common/enums/community.type.ts b/src/common/enums/community.type.ts new file mode 100644 index 00000000..f4b4890e --- /dev/null +++ b/src/common/enums/community.type.ts @@ -0,0 +1,6 @@ +// todo: remove once notifications can use the types directly from +export enum CommunityType { + HUB = 'hub', + CHALLENGE = 'challenge', + OPPORTUNITY = 'opportunity', +} diff --git a/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts b/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts index 4dc8a45d..3e8d2552 100644 --- a/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts +++ b/src/services/domain/builders/community-collaboration-interest/community.collaboration.interest.notification.builder.ts @@ -49,7 +49,9 @@ export class CommunityCollaborationInterestNotificationBuilder const templateVariables = { userID: payload.userID, - opportunityID: payload.opportunity.id, + hubID: payload.hub.id, + challengeID: payload.hub.challenge?.id ?? '', + opportunityID: payload.hub.challenge?.opportunity?.id ?? '', }; return this.notificationBuilder.build({ @@ -80,6 +82,12 @@ export class CommunityCollaborationInterestNotificationBuilder const hubURL = this.alkemioUrlGenerator.createHubURL(); + const communityURL = this.alkemioUrlGenerator.createCommunityURL( + eventPayload.hub.nameID, + eventPayload.hub.challenge?.nameID, + eventPayload.hub.challenge?.opportunity?.nameID + ); + return { emailFrom: 'info@alkem.io', user: { @@ -90,13 +98,15 @@ export class CommunityCollaborationInterestNotificationBuilder email: recipient.email, notificationPreferences: notificationPreferenceURL, }, - opportunity: { - name: eventPayload.opportunity.name, - }, relation: { role: eventPayload.relation.role, description: eventPayload.relation.description, }, + community: { + name: eventPayload.community.name, + type: eventPayload.community.type, + url: communityURL, + }, hub: { url: hubURL, }, diff --git a/src/templates/community.collaboration.interest.admin.js b/src/templates/community.collaboration.interest.admin.js index d914b623..c36db72e 100644 --- a/src/templates/community.collaboration.interest.admin.js +++ b/src/templates/community.collaboration.interest.admin.js @@ -3,19 +3,19 @@ const templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'community-collaboration-interest-admin', - title: 'Interest to collaborate on opportunity received', + title: 'Interest to collaborate on {{community.type}} received', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - '{{user.name}} is interested to collaborate on opportunity: {{opportunity.name}}', + '{{user.name}} is interested to collaborate on {{community.type}}: {{community.name}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

- The user '{{user.name}}' is interested to participate in '{{opportunity.name}}' opportunity: + The user '{{user.name}}' is interested to participate in '{{community.name}}' [{{community.type}}]:
- role: {{relation.role}}
- description: {{relation.description}}
diff --git a/src/templates/community.collaboration.interest.user.js b/src/templates/community.collaboration.interest.user.js index a73ad58d..58a95ed1 100644 --- a/src/templates/community.collaboration.interest.user.js +++ b/src/templates/community.collaboration.interest.user.js @@ -3,7 +3,7 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'community-collaboration-interest-user', - title: 'Interest to collaborate on opportunity', + title: 'Interest to collaborate on {community.name}} [{{community.type}}]', version: 1, channels: { email: { @@ -13,7 +13,7 @@ module.exports = () => ({ html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{user.name}},

- Thank you for expressing the interest to collaborate on {{opportunity.name}} opportunity. The community needs all the help it can get! + Thank you for expressing the interest to collaborate on '{{community.name}}' [{{community.type}}]!

Sincerely yours, {% endblock %} From 83181863ac16eca606a0af8999e4737f26efd8af Mon Sep 17 00:00:00 2001 From: Denise Larsson <99027423+larssondenise@users.noreply.github.com> Date: Fri, 9 Sep 2022 12:16:03 +0200 Subject: [PATCH 14/18] Update email notifications uploaded as gpg failed to sign the date --- src/templates/aspect.comment.created.member.js | 7 +++---- src/templates/aspect.created.admin.js | 7 +++---- src/templates/aspect.created.member.js | 4 ++-- src/templates/callout.published.member.js | 6 +++--- src/templates/communication.discussion.created.admin.js | 5 ++--- src/templates/communication.discussion.created.member.js | 4 ++-- src/templates/communication.update.admin.js | 6 +++--- src/templates/communication.update.member.js | 7 +++---- src/templates/community.collaboration.interest.admin.js | 6 +++--- src/templates/community.collaboration.interest.user.js | 8 +++++--- src/templates/community.new.member.admin.js | 6 +++--- src/templates/community.new.member.member.js | 6 +++--- src/templates/community.review.submitted.admin.js | 4 ++-- src/templates/community.review.submitted.reviewer.js | 4 ++-- src/templates/user.application.admin.js | 4 ++-- src/templates/user.application.applicant.js | 4 ++-- src/templates/user.registration.admin.js | 4 ++-- src/templates/user.registration.registrant.js | 4 ++-- 18 files changed, 47 insertions(+), 49 deletions(-) diff --git a/src/templates/aspect.comment.created.member.js b/src/templates/aspect.comment.created.member.js index a73e98b0..c39a4ea0 100644 --- a/src/templates/aspect.comment.created.member.js +++ b/src/templates/aspect.comment.created.member.js @@ -3,20 +3,19 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'aspect-created-member', - title: - '[{{community.name}}] New comment received on your aspect {{aspect.displayName}}', + title: '{{community.name}} - New comment received on your Card "{{aspect.displayName}}"', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - '[{{community.name}}] New comment received on your aspect {{aspect.displayName}}', + '{{community.name}} - New comment received on your Card "{{aspect.displayName}}", have a look!', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

- A new comment was created by {{createdBy.firstname}} on your community {{community.name}}: {{aspect.displayName}}

+ A new comment was created by {{createdBy.firstname}} on your Card {{aspect.displayName}} within the Callout "{{callout.displayName}}".

Sincerely yours, {% endblock %} diff --git a/src/templates/aspect.created.admin.js b/src/templates/aspect.created.admin.js index 60406e48..d4ca6f6a 100644 --- a/src/templates/aspect.created.admin.js +++ b/src/templates/aspect.created.admin.js @@ -3,20 +3,19 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'aspect-created-admin', - title: - '[{{community.name}}] Admin - New aspect created: {{aspect.displayName}}', + title: '[{{community.name}}] New Card created by {{createdBy.firstname}} in Callout "{{callout.displayName}}"', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - '[{{community.name}}] Admin - New aspect created: {{aspect.displayName}}', + '[{{community.name}}] New Card created by {{createdBy.firstname}} in Callout "{{callout.displayName}}"', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

- A new aspect was created by {{createdBy.firstname}} on {{community.name}}: {{aspect.displayName}}

+ A new Card was created by {{createdBy.firstname}} within Callout "{{callout.displayName}}": {{aspect.Displayname}}.

Sincerely yours, {% endblock %} diff --git a/src/templates/aspect.created.member.js b/src/templates/aspect.created.member.js index b513671f..94b31da9 100644 --- a/src/templates/aspect.created.member.js +++ b/src/templates/aspect.created.member.js @@ -3,14 +3,14 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'aspect-created-member', - title: '[{{community.name}}] New aspect created: {{aspect.displayName}}', + title: '{{community.name}} - New aspect created by {{createdBy.firstname}} in Callout "{{callout.displayName}}", have a look!', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - '[{{community.name}}] New aspect created: {{aspect.displayName}}', + '{{community.name}} - New aspect created by {{createdBy.firstname}} in Callout "{{callout.displayName}}", have a look!', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/callout.published.member.js b/src/templates/callout.published.member.js index 859c48e3..a60efb13 100644 --- a/src/templates/callout.published.member.js +++ b/src/templates/callout.published.member.js @@ -3,18 +3,18 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'callout-published-member', - title: 'New callout is published on {{community.name}}: {{callout.displayName}}', + title: '{{community.name}} - New callout is published "{{callout.displayName}}", have a look!', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: 'New Callout is published on {{community.name}}: {{callout.displayName}}', + subject: '{{community.name}} - New callout is published "{{callout.displayName}}", have a look!', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstName}},

- A new callout was published by {{publishedBy.firstName}} on your community {{community.name}}: {{callout.displayName}}

+ A new callout was published by {{publishedBy.firstName}} on your community {{community.name}}: {{callout.displayName}}.

Sincerely yours, {% endblock %} diff --git a/src/templates/communication.discussion.created.admin.js b/src/templates/communication.discussion.created.admin.js index 2f22e4ec..47dbe3a6 100644 --- a/src/templates/communication.discussion.created.admin.js +++ b/src/templates/communication.discussion.created.admin.js @@ -3,15 +3,14 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'communication-discussion-created-admin', - title: - '[{{community.name}}] Admin - New discussion created: {{discussion.title}}', + title: '[{{community.name}}] New discussion created: {{discussion.title}}', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - '[{{community.name}}] Admin - New discussion created: {{discussion.title}}', + '[{{community.name}}] - New discussion created: {{discussion.title}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/communication.discussion.created.member.js b/src/templates/communication.discussion.created.member.js index d2038e3d..77e88dff 100644 --- a/src/templates/communication.discussion.created.member.js +++ b/src/templates/communication.discussion.created.member.js @@ -3,14 +3,14 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'communication-discussion-created-member', - title: '[{{community.name}}] New discussion created: {{discussion.title}}', + title: '{{community.name}} - New discussion created: {{discussion.title}}, have a look!', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - '[{{community.name}}] New discussion created: {{discussion.title}}', + '{{community.name}} - New discussion created: {{discussion.title}}, have a look!', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/communication.update.admin.js b/src/templates/communication.update.admin.js index 276e1814..0c356b14 100644 --- a/src/templates/communication.update.admin.js +++ b/src/templates/communication.update.admin.js @@ -3,18 +3,18 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'communication-update-admin', - title: '[{{community.name}}] Admin - New update shared', + title: '[{{community.name}}] New update shared', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: '[{{community.name}}] Admin - new update shared!', + subject: '[{{community.name}}] New update shared', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

- A new update was shared by {{sender.firstname}} on the following community: {{community.name}}.

+ A new update was shared by {{sender.firstname}} on community: {{community.name}}.

Sincerely yours, {% endblock %} diff --git a/src/templates/communication.update.member.js b/src/templates/communication.update.member.js index 1bd53c5f..0674546a 100644 --- a/src/templates/communication.update.member.js +++ b/src/templates/communication.update.member.js @@ -3,19 +3,18 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'communication-update-member', - title: '[{{community.name}}] New update shared', + title: '{{community.name}} - New update, have a look!', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: '[{{community.name}}] New update shared', + subject: '{{community.name}} - New update, have a look!', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

- A new update was shared by {{sender.firstname}} with your community.
- To view the update please navigate to {{community.name}}.

+ A new update was shared by {{sender.firstname}} on your community {{community.name}}.

Sincerely yours, {% endblock %} diff --git a/src/templates/community.collaboration.interest.admin.js b/src/templates/community.collaboration.interest.admin.js index d914b623..e5b9e0df 100644 --- a/src/templates/community.collaboration.interest.admin.js +++ b/src/templates/community.collaboration.interest.admin.js @@ -3,19 +3,19 @@ const templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'community-collaboration-interest-admin', - title: 'Interest to collaborate on opportunity received', + title: '[{{opportunity.name}}] Interest to collaborate received from {{user.name}}', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - '{{user.name}} is interested to collaborate on opportunity: {{opportunity.name}}', + '[{{opportunity.name}}] Interest to collaborate received from {{user.name}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

- The user '{{user.name}}' is interested to participate in '{{opportunity.name}}' opportunity: + The user '{{user.name}}' is interested to participate in Opportunity "{{opportunity.name}}":
- role: {{relation.role}}
- description: {{relation.description}}
diff --git a/src/templates/community.collaboration.interest.user.js b/src/templates/community.collaboration.interest.user.js index a73ad58d..86897c52 100644 --- a/src/templates/community.collaboration.interest.user.js +++ b/src/templates/community.collaboration.interest.user.js @@ -3,18 +3,20 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'community-collaboration-interest-user', - title: 'Interest to collaborate on opportunity', + title: '{{opportunity.name}} - Your interest to collaborate was received!', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: 'Your interest to collaborate was received!', + subject: '{{opportunity.name}} - Your interest to collaborate was received!', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{user.name}},

- Thank you for expressing the interest to collaborate on {{opportunity.name}} opportunity. The community needs all the help it can get! + + Thank you for expressing your interest to collaborate on Opportunity {{opportunity.name}}. The community needs all the help it can get!

+ Sincerely yours, {% endblock %} ${templates.footerBlock}`, diff --git a/src/templates/community.new.member.admin.js b/src/templates/community.new.member.admin.js index f688ab6f..9a1f92d6 100644 --- a/src/templates/community.new.member.admin.js +++ b/src/templates/community.new.member.admin.js @@ -4,19 +4,19 @@ const templates = require('./alkemio.template.blocks'); module.exports = () => ({ name: 'community-new-member-admin', title: - '[{{community.name}}] Admin - User {{member.name}} joined the community', + '[{{community.name}}] User {{member.name}} joined the community', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - '[{{community.name}}] Admin - User {{member.name}} joined the community', + '[{{community.name}}] User {{member.name}} joined the community', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

- User {{member.name}} joined the {{community.name}} community + User {{member.name}} has joined the {{community.name}} community. The profile of the new member is available here.
Sincerely yours, {% endblock %} diff --git a/src/templates/community.new.member.member.js b/src/templates/community.new.member.member.js index e10f883e..c8cc44b4 100644 --- a/src/templates/community.new.member.member.js +++ b/src/templates/community.new.member.member.js @@ -3,18 +3,18 @@ const templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'community-new-member-member', - title: '[{{community.name}}] You have joined this community', + title: '{{community.name}} - You have joined this community', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{member.email}}', - subject: '[{{community.name}}] You have joined this community', + subject: '{{community.name}} - Welcome to the Community!', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

- You have joined the {{community.name}} community + You have joined the {{community.name}} community! You can now start contributing to the various published Callouts under Explore, further deepen your knowledge about this topic, and connect with other Contributors.
Sincerely yours, {% endblock %} diff --git a/src/templates/community.review.submitted.admin.js b/src/templates/community.review.submitted.admin.js index baf9a2dc..6fd60820 100644 --- a/src/templates/community.review.submitted.admin.js +++ b/src/templates/community.review.submitted.admin.js @@ -4,14 +4,14 @@ const templates = require('./alkemio.template.blocks'); module.exports = () => ({ name: 'community-review-submitted-admin', title: - '[{{community.name}}] Admin - The member {{reviewer.name}} submitted a review', + '[{{community.name}}] Member {{reviewer.name}} submitted a review', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - '[{{community.name}}] Admin - The member {{reviewer.name}} submitted a review', + '[{{community.name}}] Member {{reviewer.name}} submitted a review', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/community.review.submitted.reviewer.js b/src/templates/community.review.submitted.reviewer.js index 072dea33..771f51d8 100644 --- a/src/templates/community.review.submitted.reviewer.js +++ b/src/templates/community.review.submitted.reviewer.js @@ -3,13 +3,13 @@ const templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'community-review-submitted-reviewer', - title: '[{{community.name}}] You have submitted a review', + title: '{{community.name}} - You have submitted a review', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: '[{{community.name}}] You have submitted a review', + subject: '{{community.name}} - You have submitted a review', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/user.application.admin.js b/src/templates/user.application.admin.js index c4df9f04..f944c4b6 100644 --- a/src/templates/user.application.admin.js +++ b/src/templates/user.application.admin.js @@ -4,14 +4,14 @@ var templates = require('./alkemio.template.blocks'); module.exports = () => ({ name: 'user-application-admin', title: - '[{{community.name}}] Admin - Application from {{applicant.firstname}}', + '[{{community.name}}] Application from {{applicant.firstname}}', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - '[{{community.name}}] Admin - Application from {{applicant.firstname}} received!', + '[{{community.name}}] Admin - Application from {{applicant.firstname}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.name}},

diff --git a/src/templates/user.application.applicant.js b/src/templates/user.application.applicant.js index f9098aeb..de9f6d44 100644 --- a/src/templates/user.application.applicant.js +++ b/src/templates/user.application.applicant.js @@ -3,13 +3,13 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'user-application-applicant', - title: '[{{community.name}}] Application to join received', + title: '{{community.name}} - Your Application to join was received!', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: '[{{community.name}}] Application to join received!', + subject: '{{community.name}} - Your Application to join was received!', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{applicant.name}},

diff --git a/src/templates/user.registration.admin.js b/src/templates/user.registration.admin.js index 1501426a..8a9de415 100644 --- a/src/templates/user.registration.admin.js +++ b/src/templates/user.registration.admin.js @@ -3,13 +3,13 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'user-registration-admin', - title: '[Alkemio] - New user registration: {{registrant.name}}', + title: '[Alkemio] New user registration: {{registrant.name}}', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: '[Alkemio] - New user registration: {{registrant.name}}', + subject: '[Alkemio] New user registration: {{registrant.name}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

diff --git a/src/templates/user.registration.registrant.js b/src/templates/user.registration.registrant.js index 415d3c11..52b12c4c 100644 --- a/src/templates/user.registration.registrant.js +++ b/src/templates/user.registration.registrant.js @@ -3,13 +3,13 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'user-registration-registrant', - title: '[Alkemio] Welcome {{recipient.firstname}}', + title: 'Alkemio Welcome {{recipient.firstname}}', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: '[Alkemio] Registration successful!', + subject: 'Alkemio - Registration successful!', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{registrant.name}},

From e56e324f695d35322e024a9c7c5087a46b2e3317 Mon Sep 17 00:00:00 2001 From: Neil Smyth Date: Fri, 9 Sep 2022 15:44:07 +0200 Subject: [PATCH 15/18] refined mail contents after edits --- .../notifme/notification.templates.builder.ts | 2 +- src/templates/aspect.comment.created.member.js | 6 ++++-- src/templates/aspect.created.admin.js | 10 ++++++---- src/templates/aspect.created.member.js | 7 ++++--- src/templates/callout.published.member.js | 13 ++++++++----- .../community.collaboration.interest.admin.js | 4 ++-- .../community.collaboration.interest.user.js | 2 +- 7 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/services/external/notifme/notification.templates.builder.ts b/src/services/external/notifme/notification.templates.builder.ts index 36071559..a3a98130 100644 --- a/src/services/external/notifme/notification.templates.builder.ts +++ b/src/services/external/notifme/notification.templates.builder.ts @@ -24,7 +24,7 @@ export class NotificationTemplateBuilder< const getRenderer = require('notifme-template'); const render = getRenderer(renderString, './src/templates'); return await render(template, templatePayload, 'en-US'); - } catch (error) { + } catch (error: any) { this.logger.error( `Could not render template '${template}': ${error}`, LogContext.NOTIFICATIONS diff --git a/src/templates/aspect.comment.created.member.js b/src/templates/aspect.comment.created.member.js index c39a4ea0..7c350b4a 100644 --- a/src/templates/aspect.comment.created.member.js +++ b/src/templates/aspect.comment.created.member.js @@ -3,7 +3,8 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'aspect-created-member', - title: '{{community.name}} - New comment received on your Card "{{aspect.displayName}}"', + title: + '{{community.name}} - New comment received on your Card: "{{aspect.displayName}}"', version: 1, channels: { email: { @@ -15,7 +16,8 @@ module.exports = () => ({ {% block content %} Hi {{recipient.firstname}},

- A new comment was created by {{createdBy.firstname}} on your Card {{aspect.displayName}} within the Callout "{{callout.displayName}}".

+ A new comment was created by {{createdBy.firstname}} on your '{{aspect.displayName}}' Card in '{{community.name}}'. +

Sincerely yours, {% endblock %} diff --git a/src/templates/aspect.created.admin.js b/src/templates/aspect.created.admin.js index d4ca6f6a..8d157552 100644 --- a/src/templates/aspect.created.admin.js +++ b/src/templates/aspect.created.admin.js @@ -3,19 +3,21 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'aspect-created-admin', - title: '[{{community.name}}] New Card created by {{createdBy.firstname}} in Callout "{{callout.displayName}}"', + title: '[{{community.name}}] New Card created by {{createdBy.firstname}}', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - '[{{community.name}}] New Card created by {{createdBy.firstname}} in Callout "{{callout.displayName}}"', + '[{{community.name}}] New Card created by {{createdBy.firstname}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} - Hi {{recipient.firstname}},

+ Hi {{recipient.firstname}}, +

- A new Card was created by {{createdBy.firstname}} within Callout "{{callout.displayName}}": {{aspect.Displayname}}.

+ A new Card was created by {{createdBy.firstname}} on your community '{{community.name}}': {{aspect.displayName}}. +

Sincerely yours, {% endblock %} diff --git a/src/templates/aspect.created.member.js b/src/templates/aspect.created.member.js index 94b31da9..55220cc0 100644 --- a/src/templates/aspect.created.member.js +++ b/src/templates/aspect.created.member.js @@ -3,19 +3,20 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'aspect-created-member', - title: '{{community.name}} - New aspect created by {{createdBy.firstname}} in Callout "{{callout.displayName}}", have a look!', + title: + '{{community.name}} - New aspect created by {{createdBy.firstname}}, have a look!', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - '{{community.name}} - New aspect created by {{createdBy.firstname}} in Callout "{{callout.displayName}}", have a look!', + '{{community.name}} - New aspect created by {{createdBy.firstname}}, have a look!', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

- A new aspect was created by {{createdBy.firstname}} on your community {{community.name}}: {{aspect.displayName}}

+ A new Card was created by {{createdBy.firstname}} on your community '{{community.name}}': {{aspect.displayName}}

Sincerely yours, {% endblock %} diff --git a/src/templates/callout.published.member.js b/src/templates/callout.published.member.js index a60efb13..3dc5ad89 100644 --- a/src/templates/callout.published.member.js +++ b/src/templates/callout.published.member.js @@ -3,18 +3,21 @@ var templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'callout-published-member', - title: '{{community.name}} - New callout is published "{{callout.displayName}}", have a look!', + title: + '{{community.name}} - New callout is published: "{{callout.displayName}}", have a look!', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: '{{community.name}} - New callout is published "{{callout.displayName}}", have a look!', + subject: + '{{community.name}} - New callout is published "{{callout.displayName}}", have a look!', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} - Hi {{recipient.firstName}},

- - A new callout was published by {{publishedBy.firstName}} on your community {{community.name}}: {{callout.displayName}}.

+ Hi {{recipient.firstName}}, +

+ A new callout was published by {{publishedBy.firstName}} on your community '{{community.name}}': {{callout.displayName}}. +

Sincerely yours, {% endblock %} diff --git a/src/templates/community.collaboration.interest.admin.js b/src/templates/community.collaboration.interest.admin.js index e61850e9..544b3fe7 100644 --- a/src/templates/community.collaboration.interest.admin.js +++ b/src/templates/community.collaboration.interest.admin.js @@ -3,7 +3,8 @@ const templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'community-collaboration-interest-admin', - title: '[{{community.name}}] Interest to collaborate received from {{user.name}}', + title: + '[{{community.name}}] Interest to collaborate received from {{user.name}}', version: 1, channels: { email: { @@ -20,7 +21,6 @@ module.exports = () => ({ - role: {{relation.role}}
- description: {{relation.description}}

-
Sincerely yours, {% endblock %} diff --git a/src/templates/community.collaboration.interest.user.js b/src/templates/community.collaboration.interest.user.js index bc2ca890..5b72b5fb 100644 --- a/src/templates/community.collaboration.interest.user.js +++ b/src/templates/community.collaboration.interest.user.js @@ -9,7 +9,7 @@ module.exports = () => ({ email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: '{{opportunity.name}} - Your interest to collaborate was received!', + subject: '{{user.name}} - Your interest to collaborate was received!', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{user.name}},

From 8b22d40069248b1a22c9f5103983696db672d48e Mon Sep 17 00:00:00 2001 From: Denise Larsson <99027423+larssondenise@users.noreply.github.com> Date: Fri, 9 Sep 2022 16:27:41 +0200 Subject: [PATCH 16/18] small change --- src/templates/communication.discussion.created.admin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/templates/communication.discussion.created.admin.js b/src/templates/communication.discussion.created.admin.js index 47dbe3a6..df4b9c54 100644 --- a/src/templates/communication.discussion.created.admin.js +++ b/src/templates/communication.discussion.created.admin.js @@ -10,7 +10,7 @@ module.exports = () => ({ from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - '[{{community.name}}] - New discussion created: {{discussion.title}}', + '[{{community.name}}] New discussion created: {{discussion.title}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.firstname}},

From 0cfb3c87c9e804568a3540ada2f9d40e7bacf762 Mon Sep 17 00:00:00 2001 From: Denise Larsson <99027423+larssondenise@users.noreply.github.com> Date: Fri, 9 Sep 2022 16:28:37 +0200 Subject: [PATCH 17/18] small change 2 --- src/templates/user.application.admin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/templates/user.application.admin.js b/src/templates/user.application.admin.js index f944c4b6..c0deccbe 100644 --- a/src/templates/user.application.admin.js +++ b/src/templates/user.application.admin.js @@ -11,7 +11,7 @@ module.exports = () => ({ from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - '[{{community.name}}] Admin - Application from {{applicant.firstname}}', + '[{{community.name}}] Application from {{applicant.firstname}}', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} Hi {{recipient.name}},

From 234ca1929a79a980d23edad1dfe6914a222148e4 Mon Sep 17 00:00:00 2001 From: Neil Smyth <30729240+techsmyth@users.noreply.github.com> Date: Wed, 14 Sep 2022 08:53:48 +0200 Subject: [PATCH 18/18] fixed passing of new member profile link; adjusted text in aspect created (#146) --- .../community.new.member.email.payload.ts | 1 + .../community.new.member.notification.builder.ts | 4 ++++ src/templates/aspect.created.admin.js | 4 +--- src/templates/aspect.created.member.js | 12 ++++++------ src/templates/community.new.member.admin.js | 14 +++++++------- 5 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/common/email-template-payload/community.new.member.email.payload.ts b/src/common/email-template-payload/community.new.member.email.payload.ts index 69aaa997..f4feb566 100644 --- a/src/common/email-template-payload/community.new.member.email.payload.ts +++ b/src/common/email-template-payload/community.new.member.email.payload.ts @@ -4,6 +4,7 @@ export interface CommunityNewMemberEmailPayload extends BaseEmailPayload { member: { email: string; name: string; + profile: string; }; recipient: { firstname: string; diff --git a/src/services/domain/builders/community-new-member/community.new.member.notification.builder.ts b/src/services/domain/builders/community-new-member/community.new.member.notification.builder.ts index 96b42da1..93b6654f 100644 --- a/src/services/domain/builders/community-new-member/community.new.member.notification.builder.ts +++ b/src/services/domain/builders/community-new-member/community.new.member.notification.builder.ts @@ -74,12 +74,16 @@ export class CommunityNewMemberNotificationBuilder ); const hubURL = this.alkemioUrlGenerator.createHubURL(); + const memberProfileURL = this.alkemioUrlGenerator.createUserURL( + member.nameID + ); return { emailFrom: 'info@alkem.io', member: { name: member.displayName, email: member.email, + profile: memberProfileURL, }, recipient: { firstname: recipient.firstName, diff --git a/src/templates/aspect.created.admin.js b/src/templates/aspect.created.admin.js index 8d157552..677b1b36 100644 --- a/src/templates/aspect.created.admin.js +++ b/src/templates/aspect.created.admin.js @@ -15,10 +15,8 @@ module.exports = () => ({ {% block content %} Hi {{recipient.firstname}},

- - A new Card was created by {{createdBy.firstname}} on your community '{{community.name}}': {{aspect.displayName}}. + A new Card was created by {{createdBy.firstname}} on your community '{{community.name}}' with name '{{aspect.displayName}}'.

- Sincerely yours, {% endblock %} ${templates.footerBlock}`, diff --git a/src/templates/aspect.created.member.js b/src/templates/aspect.created.member.js index 55220cc0..231a2144 100644 --- a/src/templates/aspect.created.member.js +++ b/src/templates/aspect.created.member.js @@ -4,20 +4,20 @@ var templates = require('./alkemio.template.blocks'); module.exports = () => ({ name: 'aspect-created-member', title: - '{{community.name}} - New aspect created by {{createdBy.firstname}}, have a look!', + '{{community.name}} - New Card created by {{createdBy.firstname}}, have a look!', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', subject: - '{{community.name}} - New aspect created by {{createdBy.firstname}}, have a look!', + '{{community.name}} - New Card created by {{createdBy.firstname}}, have a look!', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} - Hi {{recipient.firstname}},

- - A new Card was created by {{createdBy.firstname}} on your community '{{community.name}}': {{aspect.displayName}}

- + Hi {{recipient.firstname}}, +

+ A new Card was created by {{createdBy.firstname}} on your community '{{community.name}}' with name '{{aspect.displayName}}' +

Sincerely yours, {% endblock %} ${templates.footerBlock}`, diff --git a/src/templates/community.new.member.admin.js b/src/templates/community.new.member.admin.js index 9a1f92d6..c28f0727 100644 --- a/src/templates/community.new.member.admin.js +++ b/src/templates/community.new.member.admin.js @@ -3,20 +3,20 @@ const templates = require('./alkemio.template.blocks'); /* eslint-disable quotes */ module.exports = () => ({ name: 'community-new-member-admin', - title: - '[{{community.name}}] User {{member.name}} joined the community', + title: '[{{community.name}}] User {{member.name}} joined the community', version: 1, channels: { email: { from: '{{emailFrom}}', to: '{{recipient.email}}', - subject: - '[{{community.name}}] User {{member.name}} joined the community', + subject: '[{{community.name}}] User {{member.name}} joined the community', html: `{% extends "src/templates/_layouts/email-transactional.html" %} {% block content %} - Hi {{recipient.firstname}},

- - User {{member.name}} has joined the {{community.name}} community. The profile of the new member is available here. + Hi {{recipient.firstname}}, +

+ User {{member.name}} has joined the {{community.name}} community. +
+ The profile of the new member is available here.
Sincerely yours, {% endblock %}