From c3f7a4d529420c7f1e7d8b26856f789d531c9e96 Mon Sep 17 00:00:00 2001 From: Rui Gao Date: Wed, 8 Jul 2026 06:41:29 +0000 Subject: [PATCH] remove unused email notification from alert-handler Email notification is no longer used in production (not in actions-available). Removing nodemailer and all related code eliminates the S360 CVE for nodemailer without needing a major version upgrade of an unused dependency. Removed: - nodemailer, email-templates, ejs dependencies - mail model/controller and 3 email routes - email EJS templates (deploy/alert-templates/) - SMTP env vars and template volume mount from deployment - email webhook URLs from alertmanager configmap - alert-templates configmap creation/deletion from start/stop scripts - nodemailer/mailparser resolutions from job-status-change-notification Co-Authored-By: Claude --- .../alert-manager-configmap.yaml.template | 80 +- .../alert-manager-deployment.yaml.template | 29 - .../adjust-user-quota/html.ejs | 22 - .../adjust-user-quota/subject.ejs | 1 - .../alert-templates/cert-expiration/html.ejs | 37 - .../cert-expiration/subject.ejs | 1 - .../cluster-report-lucia/html.ejs | 18 - .../cluster-report-lucia/subject.ejs | 1 - .../alert-templates/cluster-usage/html.ejs | 92 - .../alert-templates/cluster-usage/subject.ejs | 1 - .../general-templates/html.ejs | 170 -- .../general-templates/subject.ejs | 8 - .../job-status-change/html.ejs | 30 - .../job-status-change/subject.ejs | 1 - .../kill-low-efficiency-job-alert/html.ejs | 45 - .../kill-low-efficiency-job-alert/subject.ejs | 1 - src/alert-manager/deploy/start.sh.template | 12 - src/alert-manager/deploy/stop.sh | 1 - .../src/alert-handler/controllers/mail.js | 124 -- .../src/alert-handler/models/mail.js | 113 -- .../src/alert-handler/package.json | 10 +- .../src/alert-handler/routes/actions.js | 17 - src/alert-manager/src/alert-handler/yarn.lock | 1630 +---------------- .../package.json | 2 - 24 files changed, 13 insertions(+), 2433 deletions(-) delete mode 100644 src/alert-manager/deploy/alert-templates/adjust-user-quota/html.ejs delete mode 100644 src/alert-manager/deploy/alert-templates/adjust-user-quota/subject.ejs delete mode 100644 src/alert-manager/deploy/alert-templates/cert-expiration/html.ejs delete mode 100644 src/alert-manager/deploy/alert-templates/cert-expiration/subject.ejs delete mode 100644 src/alert-manager/deploy/alert-templates/cluster-report-lucia/html.ejs delete mode 100644 src/alert-manager/deploy/alert-templates/cluster-report-lucia/subject.ejs delete mode 100644 src/alert-manager/deploy/alert-templates/cluster-usage/html.ejs delete mode 100644 src/alert-manager/deploy/alert-templates/cluster-usage/subject.ejs delete mode 100644 src/alert-manager/deploy/alert-templates/general-templates/html.ejs delete mode 100644 src/alert-manager/deploy/alert-templates/general-templates/subject.ejs delete mode 100644 src/alert-manager/deploy/alert-templates/job-status-change/html.ejs delete mode 100644 src/alert-manager/deploy/alert-templates/job-status-change/subject.ejs delete mode 100644 src/alert-manager/deploy/alert-templates/kill-low-efficiency-job-alert/html.ejs delete mode 100644 src/alert-manager/deploy/alert-templates/kill-low-efficiency-job-alert/subject.ejs delete mode 100755 src/alert-manager/src/alert-handler/controllers/mail.js delete mode 100644 src/alert-manager/src/alert-handler/models/mail.js diff --git a/src/alert-manager/deploy/alert-manager-configmap.yaml.template b/src/alert-manager/deploy/alert-manager-configmap.yaml.template index 4b30d0ee..59682b71 100644 --- a/src/alert-manager/deploy/alert-manager-configmap.yaml.template +++ b/src/alert-manager/deploy/alert-manager-configmap.yaml.template @@ -153,10 +153,6 @@ data: receivers: - name: "pai-email-admin" webhook_configs: - {% if 'email-admin' in cluster_cfg["alert-manager"]["actions-available"] %} - - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/send-email-to-admin' - send_resolved: true - {% endif %} - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/log-alerts' send_resolved: false @@ -164,48 +160,26 @@ data: webhook_configs: - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/log-alerts' send_resolved: false - {% if 'cert-expiration-checker' in cluster_cfg["alert-manager"]["actions-available"] %} - - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/send-email-to-group/?template=cert-expiration' - send_resolved: false - {% endif %} - name: pai-cluster-usage webhook_configs: - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/log-alerts' send_resolved: false - {% if 'email-group' in cluster_cfg["alert-manager"]["actions-available"] %} - - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/send-email-to-group/?template=cluster-usage' - send_resolved: false - {% endif %} - name: pai-job-status-change webhook_configs: - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/log-alerts' send_resolved: false - {% if 'email-user' in cluster_cfg["alert-manager"]["actions-available"] %} - - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/send-email-to-user/?template=job-status-change' - send_resolved: false - http_config: - bearer_token: {{ cluster_cfg["alert-manager"]["pai-bearer-token"] }} - {% endif %} - + - name: pai-prod-job-status-change webhook_configs: - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/log-alerts' send_resolved: false - {% if 'email-group' in cluster_cfg["alert-manager"]["actions-available"] %} - - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/send-email-to-group/?template=job-status-change' - send_resolved: false - {% endif %} - name: pai-unvalidate-nodes webhook_configs: - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/log-alerts' send_resolved: false - {% if 'email-admin' in cluster_cfg["alert-manager"]["actions-available"] %} - - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/send-email-to-admin' - send_resolved: false - {% endif %} - name: pai-cordon-nodes webhook_configs: @@ -215,11 +189,7 @@ data: - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/cordon-nodes' send_resolved: false {% endif %} - {% if 'email-admin' in cluster_cfg["alert-manager"]["actions-available"] %} - - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/send-email-to-admin' - send_resolved: true - {% endif %} - + - name: pai-uncordon-nodes webhook_configs: - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/log-alerts' @@ -228,11 +198,7 @@ data: - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/uncordon-nodes' send_resolved: false {% endif %} - {% if 'email-admin' in cluster_cfg["alert-manager"]["actions-available"] %} - - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/send-email-to-admin' - send_resolved: true - {% endif %} - + - name: pai-reboot-nodes webhook_configs: - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/log-alerts' @@ -241,10 +207,6 @@ data: - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/reboot-nodes' send_resolved: false {% endif %} - {% if 'email-admin' in cluster_cfg["alert-manager"]["actions-available"] %} - - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/send-email-to-admin' - send_resolved: true - {% endif %} - name: pai-drain-nodes webhook_configs: @@ -254,21 +216,12 @@ data: - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/drain-nodes' send_resolved: false {% endif %} - {% if 'email-admin' in cluster_cfg["alert-manager"]["actions-available"] %} - - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/send-email-to-admin' - send_resolved: true - {% endif %} - name: pai-abnormal-job-email webhook_configs: - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/log-alerts' send_resolved: false - {% if 'email-user' in cluster_cfg["alert-manager"]["actions-available"] %} - - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/send-email-to-user/?template=kill-low-efficiency-job-alert' - send_resolved: false - http_config: - bearer_token: {{ cluster_cfg["alert-manager"]["pai-bearer-token"] }} - {% endif %} + - name: pai-abnormal-job-terminate webhook_configs: - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/log-alerts' @@ -295,37 +248,12 @@ data: webhook_configs: - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/log-alerts' send_resolved: false - {% if 'email-user' in cluster_cfg["alert-manager"]["actions-available"] %} - - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/send-email-to-user/?template=adjust-user-quota' - send_resolved: false - http_config: - bearer_token: {{ cluster_cfg["alert-manager"]["pai-bearer-token"] }} - {% endif %} {% for receiver in cluster_cfg["alert-manager"]["customized-receivers"] %} - name: {{ receiver.name}} webhook_configs: - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/log-alerts' send_resolved: false - {% if (receiver["actions"]["email-admin"] is defined) and ('email-admin' in cluster_cfg["alert-manager"]["actions-available"]) %} - {% set template = receiver["actions"]["email-admin"]["template"] %} - - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/send-email-to-admin/?template={{ template }}' - send_resolved: true - {% endif %} - - {% if (receiver["actions"]["email-group"] is defined) and ('email-group' in cluster_cfg["alert-manager"]["actions-available"]) %} - {% set template = receiver["actions"]["email-group"]["template"] %} - - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/send-email-to-group/?template={{ template }}' - send_resolved: false - {% endif %} - - {% if (receiver["actions"]["email-user"] is defined) and ('email-user' in cluster_cfg["alert-manager"]["actions-available"]) %} - {% set template = receiver["actions"]["email-user"]["template"] %} - - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/send-email-to-user/?template={{ template }}' - send_resolved: false - http_config: - bearer_token: {{ cluster_cfg["alert-manager"]["pai-bearer-token"] }} - {% endif %} {% if (receiver["actions"]["stop-jobs"] is defined) and ('stop-jobs' in cluster_cfg["alert-manager"]["actions-available"]) %} - url: 'http://localhost:{{ cluster_cfg["alert-manager"]["alert-handler"]["port"] }}/alert-handler/stop-jobs' diff --git a/src/alert-manager/deploy/alert-manager-deployment.yaml.template b/src/alert-manager/deploy/alert-manager-deployment.yaml.template index 21d4ff40..4758d480 100755 --- a/src/alert-manager/deploy/alert-manager-deployment.yaml.template +++ b/src/alert-manager/deploy/alert-manager-deployment.yaml.template @@ -89,23 +89,6 @@ spec: - name: POSTGRES_SCHEMA value: "{{ cluster_cfg['alert-manager']['postgresql'].get('schema', 'ltp_sdk') }}" {% endif %} -{% if 'email-admin' in cluster_cfg["alert-manager"]["actions-available"] %} - - name: EMAIL_CONFIGS_ADMIN_RECEIVER - value: {{ cluster_cfg["alert-manager"]["alert-handler"]["email-configs"]["admin-receiver"] }} - - name: EMAIL_CONFIGS_SMTP_HOST - value: {{ cluster_cfg["alert-manager"]["alert-handler"]["email-configs"]["smtp-host"] }} - - name: EMAIL_CONFIGS_SMTP_PORT - value: "{{ cluster_cfg["alert-manager"]["alert-handler"]["email-configs"]["smtp-port"] }}" - - name: EMAIL_CONFIGS_SMTP_FROM - value: {{ cluster_cfg["alert-manager"]["alert-handler"]["email-configs"]["smtp-from"] }} - - name: EMAIL_CONFIGS_SMTP_AUTH_USERNAME - value: {{ cluster_cfg["alert-manager"]["alert-handler"]["email-configs"]["smtp-auth-username"] }} - - name: EMAIL_CONFIGS_SMTP_AUTH_PASSWORD - value: {{ cluster_cfg["alert-manager"]["alert-handler"]["email-configs"]["smtp-auth-password"] }} - volumeMounts: - - name: templates-volume - mountPath: /etc/alerthandler/templates -{% endif %} {% endif %} {% if cluster_cfg["alert-manager"]["job-status-change-notification"]["configured"] %} - name: job-status-change-notification @@ -457,18 +440,6 @@ spec: configMap: name: alertmanager-configmap {% if cluster_cfg["alert-manager"]["alert-handler"]["configured"] %} -{% if 'email-admin' in cluster_cfg["alert-manager"]["actions-available"] %} - - name: templates-volume - configMap: - name: alert-templates - items: - {% for template in cluster_cfg["alert-manager"]["alert-handler"]["email-configs"]["templates"] -%} - - key: {{ template }}-html.ejs - path: {{ template }}/html.ejs - - key: {{ template }}-subject.ejs - path: {{ template }}/subject.ejs - {% endfor -%} -{% endif %} {% endif %} {% if cluster_cfg["alert-manager"]["node-recycler"]["configured"] %} {% if "icm" in cluster_cfg["alert-manager"]["node-recycler"] %} diff --git a/src/alert-manager/deploy/alert-templates/adjust-user-quota/html.ejs b/src/alert-manager/deploy/alert-templates/adjust-user-quota/html.ejs deleted file mode 100644 index 211ff4cc..00000000 --- a/src/alert-manager/deploy/alert-templates/adjust-user-quota/html.ejs +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - Dear OpenPAI user: -
-
- Your quota is adjusted: <%- alerts[0].annotations.description %>. - -
-
- - Thanks for your comprehension, -
-
- OpenPAI Admin Team - - - diff --git a/src/alert-manager/deploy/alert-templates/adjust-user-quota/subject.ejs b/src/alert-manager/deploy/alert-templates/adjust-user-quota/subject.ejs deleted file mode 100644 index ae5d8bb6..00000000 --- a/src/alert-manager/deploy/alert-templates/adjust-user-quota/subject.ejs +++ /dev/null @@ -1 +0,0 @@ -<%= cluster_id %>: Adjust User Quota Alert diff --git a/src/alert-manager/deploy/alert-templates/cert-expiration/html.ejs b/src/alert-manager/deploy/alert-templates/cert-expiration/html.ejs deleted file mode 100644 index 14de43e9..00000000 --- a/src/alert-manager/deploy/alert-templates/cert-expiration/html.ejs +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - Dear LTP admin: -
-
- There are certificate expiration alerts for cluster - <%= cluster_id %> - . -
-
- Related Certificate(s): -
-
- <% alerts.filter(element=> element.status == "firing").forEach(function(alert) { %> - Certificate: <%= alert.annotations.cert %> -
-
- Certificate Expiry Date: <%= alert.annotations.expiry_date %> -
-
- <%= alert.annotations.description %> -
-
- <% }); %> -
- Please check the certificate expiration status and renew the certificate if necessary. -
-
- LTP Admin Team - - - \ No newline at end of file diff --git a/src/alert-manager/deploy/alert-templates/cert-expiration/subject.ejs b/src/alert-manager/deploy/alert-templates/cert-expiration/subject.ejs deleted file mode 100644 index 85e75612..00000000 --- a/src/alert-manager/deploy/alert-templates/cert-expiration/subject.ejs +++ /dev/null @@ -1 +0,0 @@ -<%= cluster_id %>: Pai Certificate Expiration Alert diff --git a/src/alert-manager/deploy/alert-templates/cluster-report-lucia/html.ejs b/src/alert-manager/deploy/alert-templates/cluster-report-lucia/html.ejs deleted file mode 100644 index 1b023e04..00000000 --- a/src/alert-manager/deploy/alert-templates/cluster-report-lucia/html.ejs +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - <%= cluster_id %>: PAI Cluster Utilization Report - - - - - <%- alerts[0].annotations.description %> - - - \ No newline at end of file diff --git a/src/alert-manager/deploy/alert-templates/cluster-report-lucia/subject.ejs b/src/alert-manager/deploy/alert-templates/cluster-report-lucia/subject.ejs deleted file mode 100644 index eabeec7b..00000000 --- a/src/alert-manager/deploy/alert-templates/cluster-report-lucia/subject.ejs +++ /dev/null @@ -1 +0,0 @@ -<%= cluster_id %>: PAI Cluster Utilization Report diff --git a/src/alert-manager/deploy/alert-templates/cluster-usage/html.ejs b/src/alert-manager/deploy/alert-templates/cluster-usage/html.ejs deleted file mode 100644 index 20456e3a..00000000 --- a/src/alert-manager/deploy/alert-templates/cluster-usage/html.ejs +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - <%= cluster_id %>: Cluster GPU utilization for One Week - - - - -

Cluster GPU utilization for One Week

- - <% alerts.filter( element=> typeof element.labels.cluster_usage !== 'undefined').forEach(function(alert){ %> - - - - - <% }); %> -
Cluster GPU utilization - <%= alert.labels.cluster_usage %> -
-
-
-

User GPU Utilization for One Week

- - - - - - - <% alerts.filter( element=> typeof element.labels.username !== 'undefined' && typeof element.labels.usage !== - 'undefined').forEach(function(alert){ %> - - - - - - <% }); %> -
User nameResources occupied (GPU*hour)GPU utilization
- <%= alert.labels.username %> - - <%= alert.labels.resources_occupied %> - - <%= alert.labels.usage %> -
-
-
-

Job GPU Utilization for One Week (Top 10 Resources Occupied)

- - - - - - - - - - - <% alerts.filter( element=> typeof element.labels.job_name !== 'undefined' && typeof element.labels.usage !== - 'undefined').forEach(function(alert){ %> - - - - - - - - - - <% }); %> -
Job nameResources occupied (GPU*hour)GPU numberGPU utilizationJob durationJob start timeJob status
- <%= alert.labels.job_name %> - - <%= alert.labels.resources_occupied %> - - <%= alert.labels.gpu_number %> - - <%= alert.labels.usage %> - - <%= alert.labels.duration %> - - <%= alert.labels.start_time %> - - <%= alert.labels.status %> -
- - - diff --git a/src/alert-manager/deploy/alert-templates/cluster-usage/subject.ejs b/src/alert-manager/deploy/alert-templates/cluster-usage/subject.ejs deleted file mode 100644 index b9a30f2c..00000000 --- a/src/alert-manager/deploy/alert-templates/cluster-usage/subject.ejs +++ /dev/null @@ -1 +0,0 @@ -<%= cluster_id %>: Cluster GPU Utilization for One Week diff --git a/src/alert-manager/deploy/alert-templates/general-templates/html.ejs b/src/alert-manager/deploy/alert-templates/general-templates/html.ejs deleted file mode 100644 index c96d3515..00000000 --- a/src/alert-manager/deploy/alert-templates/general-templates/html.ejs +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - OpenPAI Alerts: [<%= alerts[0].status %>:<%= alerts.length %>] <%= alerts[0].labels.alertname %> - - - - - - - - - - -
-
- - - <% if (alerts.filter( element => element.status =="firing").length > 0) { %> - - - - - -
- <% } %> - <% if (alerts.filter( element => element.status =="firing").length == 0) { %> - - - <% } %> - <%= alerts.length %> alert<% if (alerts.length > 1) { %>s <% } %> for - <%= JSON.stringify(groupLabels) %> - from Cluster-ID: <%= cluster_id %> -
- - - - - <% if (alerts.filter( element => element.status =="firing").length > 0) { %> - - - - <% } %> - <% alerts.filter( element => element.status =="firing").forEach(function(alert){ %> - - - - <% }); %> - - <% if (alerts.filter( element => element.status =="resolved").length > 0) { %> - - - - <% } %> - <% alerts.filter( element => element.status =="resolved").forEach(function(alert){ %> - - - - <% }); %> -
- - style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 14px; color: #FFF; text-decoration: none; line-height: 2em; font-weight: bold; text-align: center; cursor: pointer; display: inline-block; border-radius: 5px; text-transform: capitalize; background-color: #348eda; margin: 5px; border-color: #348eda; border-style: solid; border-width: 10px 20px;"> - View in AlertManager - - - style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 14px; color: #FFF; text-decoration: none; line-height: 2em; font-weight: bold; text-align: center; cursor: pointer; display: inline-block; border-radius: 5px; text-transform: capitalize; background-color: #348eda; margin: 5px; border-color: #348eda; border-style: solid; border-width: 10px 20px;"> - Troubleshooting -
- [<%= alerts.filter( element => element.status =="firing").length %>] - Firing -
- <% if (alert.annotations.summary) { %> - <%= alert.annotations.summary %> - <% } %> - <% if (!alert.annotations.summary) { %> - Labels
- <%= JSON.stringify(alert.labels) %> - <% if (alert.annotations.length > 0) { %> - Annotations
- <%= JSON.stringify(alert.annotations) %> - <% } %> - <% } %> - - style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 14px; color: #348eda; text-decoration: underline; margin: 0;">Source
-
- [<%= alerts.filter( element => element.status =="resolved").length %>] - Resolved -
- <% if (alert.annotations.summary) { %> - <%= alert.annotations.summary %> - <% } %> - <% if (!alert.annotations.summary) { %> - Labels
- <%= JSON.stringify(alert.labels) %> - <% if (alert.annotations.length > 0) { %> - Annotations
- <%= JSON.stringify(alert.annotations) %> - <% } %> - <% } %> - - style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 14px; color: #348eda; text-decoration: underline; margin: 0;">Source
-
-
- - -
-
- - - - \ No newline at end of file diff --git a/src/alert-manager/deploy/alert-templates/general-templates/subject.ejs b/src/alert-manager/deploy/alert-templates/general-templates/subject.ejs deleted file mode 100644 index 7aace1fe..00000000 --- a/src/alert-manager/deploy/alert-templates/general-templates/subject.ejs +++ /dev/null @@ -1,8 +0,0 @@ -<%= cluster_id %> <%= groupLabels.severity %>: -<% if (alerts.filter( element => element.status =="firing").length > 0) { %> -[FIRING: <%= alerts.filter( element => element.status =="firing").length %> ] -<% } %> -<% if (alerts.filter( element => element.status =="firing").length === 0) { %> -[RESOLVED: <%= alerts.filter( element => element.status =="resolved").length %> ] -<% } %> -<%= groupLabels.alertname %> \ No newline at end of file diff --git a/src/alert-manager/deploy/alert-templates/job-status-change/html.ejs b/src/alert-manager/deploy/alert-templates/job-status-change/html.ejs deleted file mode 100644 index d184fd2a..00000000 --- a/src/alert-manager/deploy/alert-templates/job-status-change/html.ejs +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - Dear OpenPAI user: -
-
- The status of your job(s) have(s) changed in OpenPAI cluster <%= cluster_id %>. -
-
- Related Job(s): -
-
- <% alerts.filter( element => element.status =="firing").forEach(function(alert){ %> - /job-detail.html?username=<%= alert.labels.username %>&jobName=<%= alert.labels.job_name.split("~").slice(-1)[0] %>> - <%= alert.labels.job_name.split("~").slice(-1)[0]%> - : <%= alert.annotations.summary %> -
- <% }); %> -
-
- - OpenPAI Admin Team - - - diff --git a/src/alert-manager/deploy/alert-templates/job-status-change/subject.ejs b/src/alert-manager/deploy/alert-templates/job-status-change/subject.ejs deleted file mode 100644 index 64ab0316..00000000 --- a/src/alert-manager/deploy/alert-templates/job-status-change/subject.ejs +++ /dev/null @@ -1 +0,0 @@ -<%= cluster_id %>: Job Status Change Alert diff --git a/src/alert-manager/deploy/alert-templates/kill-low-efficiency-job-alert/html.ejs b/src/alert-manager/deploy/alert-templates/kill-low-efficiency-job-alert/html.ejs deleted file mode 100644 index 9ec6ba99..00000000 --- a/src/alert-manager/deploy/alert-templates/kill-low-efficiency-job-alert/html.ejs +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - Dear OpenPAI user: -
-
- Some of your jobs in OpenPAI cluster <%= cluster_id %> are considered low-efficiency. -
- The may be caused by: -
- - The jobs have low GPU utilization -
- - The jobs have been running too long -
- - A combination of the above reasons -
-

The jobs will be killed automatically by OpenPAI services.

-
- Refer to the following summary to check details. -
-
- Related Job(s): -
-
- <% alerts.filter( element => element.status =="firing").forEach(function(alert){ %> - /job-detail.html?username=<%= alert.labels.username %>&jobName=<%= alert.labels.job_name.split("~").slice(-1)[0] %>> - <%= alert.labels.job_name.split("~").slice(-1)[0] %> - : <%= alert.annotations.summary %> -
- <% }); %> -
-
- - Thanks for your comprehension, -
-
- OpenPAI Admin Team - - - \ No newline at end of file diff --git a/src/alert-manager/deploy/alert-templates/kill-low-efficiency-job-alert/subject.ejs b/src/alert-manager/deploy/alert-templates/kill-low-efficiency-job-alert/subject.ejs deleted file mode 100644 index 495bde27..00000000 --- a/src/alert-manager/deploy/alert-templates/kill-low-efficiency-job-alert/subject.ejs +++ /dev/null @@ -1 +0,0 @@ -<%= cluster_id %>: Low Efficiency Job Alert \ No newline at end of file diff --git a/src/alert-manager/deploy/start.sh.template b/src/alert-manager/deploy/start.sh.template index e6f3854f..719bd253 100644 --- a/src/alert-manager/deploy/start.sh.template +++ b/src/alert-manager/deploy/start.sh.template @@ -19,18 +19,6 @@ pushd $(dirname "$0") > /dev/null -# create configmap for alert-templates -{% if cluster_cfg["alert-manager"]["alert-handler"]["configured"] -%} -{% if 'email-admin' in cluster_cfg["alert-manager"]["actions-available"] -%} -kubectl create configmap alert-templates \ -{% for template in cluster_cfg["alert-manager"]["alert-handler"]["email-configs"]["templates"] -%} ---from-file={{ template }}-html.ejs=alert-templates/{{ template }}/html.ejs \ ---from-file={{ template }}-subject.ejs=alert-templates/{{ template }}/subject.ejs \ -{% endfor -%} ---dry-run=client -o yaml | kubectl apply --overwrite=true -f - || exit $? -{% endif -%} -{% endif -%} - # create configmap for node-recycler {% if cluster_cfg["alert-manager"]["node-recycler"]["configured"] -%} {% if "icm" in cluster_cfg["alert-manager"]["node-recycler"] -%} diff --git a/src/alert-manager/deploy/stop.sh b/src/alert-manager/deploy/stop.sh index f4de8068..99690434 100644 --- a/src/alert-manager/deploy/stop.sh +++ b/src/alert-manager/deploy/stop.sh @@ -18,7 +18,6 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -kubectl delete --ignore-not-found --now configmap/alert-templates kubectl delete --ignore-not-found --now configmap/alertmanager kubectl delete --ignore-not-found --now configmap/redis-config kubectl delete --ignore-not-found --now configmap/monitor-specs-config diff --git a/src/alert-manager/src/alert-handler/controllers/mail.js b/src/alert-manager/src/alert-handler/controllers/mail.js deleted file mode 100755 index a8673c25..00000000 --- a/src/alert-manager/src/alert-handler/controllers/mail.js +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (c) Microsoft Corporation -// under the MIT license. - -const mail = require('@alert-handler/models/mail'); -const logger = require('@alert-handler/common/logger'); - -// send email to admin -const sendEmailToAdmin = async (req, res) => { - logger.info( - 'alert-handler received `send-email-to-admin` post request from alert-manager.', - ); - - const timestamp = new Date().toISOString(); - // Add logging for each alert to be sent to admin - req.body.alerts.forEach(alert => { - const summary = alert.annotations?.summary || 'No summary available'; - const labels = JSON.stringify(alert.labels); - const annotations = alert.annotations && Object.keys(alert.annotations).length > 0 - ? JSON.stringify(alert.annotations) - : 'No annotations available'; - logger.info( - `[${timestamp}] alert-handler send alert to admin with alerts: Alertname: ${alert.labels?.alertname}, Severity: ${alert.labels?.severity}, Summary: ${summary}, Labels: ${labels}, Annotations: ${annotations}` - ); - }); - - const template = req.query.template - ? req.query.template - : 'general-templates'; - const receiver = process.env.EMAIL_CONFIGS_ADMIN_RECEIVER; - try { - await mail.sendEmail( - template, - process.env.EMAIL_CONFIGS_ADMIN_RECEIVER, - req.body.alerts, - req, - ); - res.status(200).json({ - message: `alert-handler successfully send email to ${receiver}`, - }); - } catch (error) { - res.status(500).json({ - message: `alert-handler failed to send email to ${receiver}`, - }); - } -}; - -// send email to group -const sendEmailToGroup = async (req, res) => { - logger.info( - 'alert-handler received `send-email-to-group` post request from alert-manager.', - ); - - // group alerts by groupemail - const alerts = req.body.alerts; - const alertsGrouped = {}; - alerts.map((alert, index) => { - const groupEmail = alert.labels.group_email; - if (groupEmail in alertsGrouped) { - alertsGrouped[groupEmail].push(alerts[index]); - } else { - alertsGrouped[groupEmail] = [alerts[index]]; - } - }); - - const template = req.query.template - ? req.query.template - : 'general-templates'; - if (alertsGrouped) { - await Promise.all( - Object.keys(alertsGrouped).map(async (groupEmail) => { - mail.sendEmail(template, groupEmail, alertsGrouped[groupEmail], req); - }), - ) - .then(() => { - res.status(200).json({ - message: `alert-handler successfully send emails to groups`, - }); - }) - .catch((error) => { - res.status(500).json({ - message: `alert-handler failed to send emails to groups`, - }); - }); - } -}; - -// send email to job user -const sendEmailToUser = async (req, res) => { - logger.info( - 'alert-handler received `send-email-to-user` post request from alert-manager.', - ); - // filter alerts which are firing and contain `job_name` as label - const alerts = req.body.alerts.filter( - (alert) => - alert.status === 'firing' && - ('job_name' in alert.labels || 'username' in alert.labels), - ); - if (alerts.length === 0) { - return res.status(200).json({ - message: 'No alert need to be send to users.', - }); - } - - const template = req.query.template - ? req.query.template - : 'general-templates'; - try { - await mail.sendEmailToUsers(alerts, template, req); - res.status(200).json({ - message: 'alert-handler successfully send emails to users', - }); - } catch (error) { - res.status(500).json({ - message: 'alert-handler failed to send emails to users', - }); - } -}; - -// module exports -module.exports = { - sendEmailToAdmin, - sendEmailToUser, - sendEmailToGroup, -}; diff --git a/src/alert-manager/src/alert-handler/models/mail.js b/src/alert-manager/src/alert-handler/models/mail.js deleted file mode 100644 index 2c5da4a8..00000000 --- a/src/alert-manager/src/alert-handler/models/mail.js +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright (c) Microsoft Corporation -// All rights reserved. - -const axios = require('axios'); -const nodemailer = require('nodemailer'); -const Email = require('email-templates'); -const logger = require('@alert-handler/common/logger'); -const path = require('path'); - -// create reusable transporter object using the default SMTP transport -const transporter = nodemailer.createTransport({ - host: process.env.EMAIL_CONFIGS_SMTP_HOST, - port: parseInt(process.env.EMAIL_CONFIGS_SMTP_PORT), - secure: false, - auth: { - user: process.env.EMAIL_CONFIGS_SMTP_AUTH_USERNAME, - pass: process.env.EMAIL_CONFIGS_SMTP_AUTH_PASSWORD, - }, -}); - -const email = new Email({ - message: { - from: process.env.EMAIL_CONFIGS_SMTP_FROM, - }, - send: true, - preview: false, - transport: transporter, - views: { - options: { - extension: 'ejs', - }, - }, -}); - -// OpenPAI handbook troubleshooting -const troubleshootingURL = - 'https://openpai.readthedocs.io/en/latest/manual/cluster-admin/troubleshooting.html'; - -const sendEmail = async (template, receiver, alerts, req) => { - try { - await email.send({ - template: path.join('/etc/alerthandler/templates/', template), - message: { - to: receiver, - }, - locals: { - cluster_id: process.env.CLUSTER_ID, - alerts: alerts, - groupLabels: req.body.groupLabels, - externalURL: req.body.externalURL, - webportalURL: process.env.WEBPORTAL_URI, - troubleshootingURL: troubleshootingURL, - }, - }); - logger.info(`alert-handler successfully send email to ${receiver}`); - } catch (error) { - logger.error(`alert-handler failed to send email to ${receiver}`, error); - throw error; - } -}; - -const sendEmailToUsers = async (alerts, template, req) => { - // group alerts by username - const alertsGrouped = {}; - alerts.map((alert, index) => { - const userName = alert.labels.username; - if (userName in alertsGrouped) { - alertsGrouped[userName].push(alerts[index]); - } else { - alertsGrouped[userName] = [alerts[index]]; - } - }); - - if (alertsGrouped) { - // send emails to different users separately - try { - await Promise.all( - Object.keys(alertsGrouped).map(async (username) => { - const userEmail = await getUserEmail(username, req.token); - if (userEmail) { - sendEmail(template, userEmail, alertsGrouped[username], req); - } else { - logger.info(`User ${username} has no email configured`); - } - }), - ); - logger.info('alert-handler successfully send emails to users'); - } catch (error) { - logger.error('alert-handler failed to send email to users', error); - throw error; - } - } -}; - -const getUserEmail = async (username, token) => { - return axios - .get(`${process.env.REST_SERVER_URI}/api/v2/users/${username}`, { - headers: { - Authorization: `Bearer ${token}`, - 'Content-Type': 'application/json', - }, - }) - .then((response) => { - return response.data.email; - }); -}; - -// module exports -module.exports = { - sendEmail, - getUserEmail, - sendEmailToUsers, -}; diff --git a/src/alert-manager/src/alert-handler/package.json b/src/alert-manager/src/alert-handler/package.json index 9688431c..ba94ac60 100644 --- a/src/alert-manager/src/alert-handler/package.json +++ b/src/alert-manager/src/alert-handler/package.json @@ -38,26 +38,20 @@ "axios": "^1.16.0", "body-parser": "^2.2.1", "cookie-parser": "^1.4.7", - "ejs": "^3.1.10", - "email-templates": "^12.0.2", "express": "^5.2.0", "express-bearer-token": "^3.0.0", "joi": "^17.13.3", "module-alias": "^2.2.3", - "nodemailer": "^8.0.5", "winston": "2", "ws": "^8.20.1" }, "overrides": { "express@*": "5.2.1", "body-parser@*": "2.2.1", - "@messageformat/runtime@*": "3.0.2", "js-yaml@*": "4.1.1", - "@messageformat/core@* > @messageformat/runtime": "3.0.2", "express@* > body-parser": "2.2.1", "@eslint/eslintrc@* > js-yaml": "4.1.1", - "@kubernetes/client-node@* > js-yaml": "4.1.1", - "@messageformat/core@3.4.0 > @messageformat/runtime": "3.0.2" + "@kubernetes/client-node@* > js-yaml": "4.1.1" }, "resolutions": { "tar-fs": "^3.1.1", @@ -70,10 +64,8 @@ "underscore": "^1.13.8", "path-to-regexp": "^8.4.0", "brace-expansion": "^5.0.6", - "mailparser": "^3.9.3", "flatted": "^3.4.2", "ajv": "^6.14.0", - "nodemailer": "^8.0.5", "follow-redirects": "^1.16.0", "ip-address": "^10.1.1", "ws": "^8.20.1", diff --git a/src/alert-manager/src/alert-handler/routes/actions.js b/src/alert-manager/src/alert-handler/routes/actions.js index 31d8549f..6adeb51e 100644 --- a/src/alert-manager/src/alert-handler/routes/actions.js +++ b/src/alert-manager/src/alert-handler/routes/actions.js @@ -16,7 +16,6 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. const express = require('express'); -const emailController = require('@alert-handler/controllers/mail'); const jobController = require('@alert-handler/controllers/job'); const nodeController = require('@alert-handler/controllers/node'); const userController = require('@alert-handler/controllers/user'); @@ -24,22 +23,6 @@ const logController = require('@alert-handler/controllers/log'); const router = express.Router(); -// email -router - .route('/alert-handler/send-email-to-admin') - /** POST /alert-handler/send-email-to-admin */ - .post(emailController.sendEmailToAdmin); - -router - .route('/alert-handler/send-email-to-group') - /** POST /alert-handler/send-email-to-admin */ - .post(emailController.sendEmailToGroup); - -router - .route('/alert-handler/send-email-to-user') - /** POST /alert-handler/send-email-to-user */ - .post(emailController.sendEmailToUser); - // job router .route('/alert-handler/stop-jobs') diff --git a/src/alert-manager/src/alert-handler/yarn.lock b/src/alert-manager/src/alert-handler/yarn.lock index 29600761..637c12d1 100644 --- a/src/alert-manager/src/alert-handler/yarn.lock +++ b/src/alert-manager/src/alert-handler/yarn.lock @@ -5,41 +5,6 @@ __metadata: version: 8 cacheKey: 10c0 -"@babel/helper-string-parser@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-string-parser@npm:7.27.1" - checksum: 10c0/8bda3448e07b5583727c103560bcf9c4c24b3c1051a4c516d4050ef69df37bb9a4734a585fe12725b8c2763de0a265aa1e909b485a4e3270b7cfd3e4dbe4b602 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/helper-validator-identifier@npm:7.28.5" - checksum: 10c0/42aaebed91f739a41f3d80b72752d1f95fd7c72394e8e4bd7cdd88817e0774d80a432451bcba17c2c642c257c483bf1d409dd4548883429ea9493a3bc4ab0847 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.6.0, @babel/parser@npm:^7.9.6": - version: 7.28.5 - resolution: "@babel/parser@npm:7.28.5" - dependencies: - "@babel/types": "npm:^7.28.5" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/5bbe48bf2c79594ac02b490a41ffde7ef5aa22a9a88ad6bcc78432a6ba8a9d638d531d868bd1f104633f1f6bba9905746e15185b8276a3756c42b765d131b1ef - languageName: node - linkType: hard - -"@babel/types@npm:^7.28.5, @babel/types@npm:^7.6.1, @babel/types@npm:^7.9.6": - version: 7.28.5 - resolution: "@babel/types@npm:7.28.5" - dependencies: - "@babel/helper-string-parser": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.28.5" - checksum: 10c0/a5a483d2100befbf125793640dec26b90b95fd233a94c19573325898a5ce1e52cdfa96e495c7dcc31b5eca5b66ce3e6d4a0f5a4a62daec271455959f208ab08a - languageName: node - linkType: hard - "@eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.8.0": version: 4.9.0 resolution: "@eslint-community/eslint-utils@npm:4.9.0" @@ -137,22 +102,6 @@ __metadata: languageName: node linkType: hard -"@hapi/boom@npm:^10.0.0": - version: 10.0.1 - resolution: "@hapi/boom@npm:10.0.1" - dependencies: - "@hapi/hoek": "npm:^11.0.2" - checksum: 10c0/e4ae8a69bb67c5687320d320a0706ac66e797a659c19fb1c9b909eaefe3b41780e4ecd4382de1297b10c33e9db81f79667324576b9153f57b0cf701293b908d0 - languageName: node - linkType: hard - -"@hapi/hoek@npm:^11.0.2": - version: 11.0.7 - resolution: "@hapi/hoek@npm:11.0.7" - checksum: 10c0/39a4a3ae9526ed66509f6d03c6eb43179a2590df6e98443328c966cfa5e7cbb9d340f61fdbe0afe092662d5377d5a611c3303c808fee26a9c9cfd6bd3737dc1c - languageName: node - linkType: hard - "@hapi/hoek@npm:^9.0.0, @hapi/hoek@npm:^9.3.0": version: 9.3.0 resolution: "@hapi/hoek@npm:9.3.0" @@ -241,241 +190,6 @@ __metadata: languageName: node linkType: hard -"@ladjs/consolidate@npm:^1.0.4": - version: 1.0.4 - resolution: "@ladjs/consolidate@npm:1.0.4" - peerDependencies: - "@babel/core": ^7.22.5 - arc-templates: ^0.5.3 - atpl: ">=0.7.6" - bracket-template: ^1.1.5 - coffee-script: ^1.12.7 - dot: ^1.1.3 - dust: ^0.3.0 - dustjs-helpers: ^1.7.4 - dustjs-linkedin: ^2.7.5 - eco: ^1.1.0-rc-3 - ect: ^0.5.9 - ejs: ^3.1.5 - haml-coffee: ^1.14.1 - hamlet: ^0.3.3 - hamljs: ^0.6.2 - handlebars: ^4.7.6 - hogan.js: ^3.0.2 - htmling: ^0.0.8 - jazz: ^0.0.18 - jqtpl: ~1.1.0 - just: ^0.1.8 - liquid-node: ^3.0.1 - liquor: ^0.0.5 - lodash: ^4.17.20 - mote: ^0.2.0 - mustache: ^4.0.1 - nunjucks: ^3.2.2 - plates: ~0.4.11 - pug: ^3.0.0 - qejs: ^3.0.5 - ractive: ^1.3.12 - react: ">=16.13.1" - react-dom: ">=16.13.1" - slm: ^2.0.0 - swig: ^1.4.2 - swig-templates: ^2.0.3 - teacup: ^2.0.0 - templayed: ">=0.2.3" - then-pug: "*" - tinyliquid: ^0.2.34 - toffee: ^0.3.6 - twig: ^1.15.2 - twing: ^5.0.2 - underscore: ^1.11.0 - vash: ^0.13.0 - velocityjs: ^2.0.1 - walrus: ^0.10.1 - whiskers: ^0.4.0 - peerDependenciesMeta: - "@babel/core": - optional: true - arc-templates: - optional: true - atpl: - optional: true - bracket-template: - optional: true - coffee-script: - optional: true - dot: - optional: true - dust: - optional: true - dustjs-helpers: - optional: true - dustjs-linkedin: - optional: true - eco: - optional: true - ect: - optional: true - ejs: - optional: true - haml-coffee: - optional: true - hamlet: - optional: true - hamljs: - optional: true - handlebars: - optional: true - hogan.js: - optional: true - htmling: - optional: true - jazz: - optional: true - jqtpl: - optional: true - just: - optional: true - liquid-node: - optional: true - liquor: - optional: true - lodash: - optional: true - mote: - optional: true - mustache: - optional: true - nunjucks: - optional: true - plates: - optional: true - pug: - optional: true - qejs: - optional: true - ractive: - optional: true - react: - optional: true - react-dom: - optional: true - slm: - optional: true - swig: - optional: true - swig-templates: - optional: true - teacup: - optional: true - templayed: - optional: true - then-pug: - optional: true - tinyliquid: - optional: true - toffee: - optional: true - twig: - optional: true - twing: - optional: true - underscore: - optional: true - vash: - optional: true - velocityjs: - optional: true - walrus: - optional: true - whiskers: - optional: true - checksum: 10c0/28a338314ddfe2258af36b1b7ace4d502c54326ea5629c4daa0dce8f3943681c953a9ce7c7a995b09931d2f83cb64b64dbad77d2e6341cc10c062867afa8c8aa - languageName: node - linkType: hard - -"@ladjs/country-language@npm:^0.2.1": - version: 0.2.1 - resolution: "@ladjs/country-language@npm:0.2.1" - dependencies: - underscore: "npm:~1.13.1" - underscore.deep: "npm:~0.5.1" - checksum: 10c0/fc7532573d543d232ae1ca1f2fad39dccc985a49a276825a3af62206368c4990651d5f032cbcc8365e21104ce3d4e984c1badb43a514628bd4a89c4f5c07dc2a - languageName: node - linkType: hard - -"@ladjs/country-language@npm:^1.0.1": - version: 1.0.3 - resolution: "@ladjs/country-language@npm:1.0.3" - checksum: 10c0/fc019a8cf81afe96f40e3a5cb0b844b65b648c9157f5d7184443e1edcbca016e67c43b1af5e5115c878c9576e005408c6b1a5812167aeacabe78c350ae2ed922 - languageName: node - linkType: hard - -"@ladjs/i18n@npm:^8.0.3": - version: 8.0.3 - resolution: "@ladjs/i18n@npm:8.0.3" - dependencies: - "@hapi/boom": "npm:^10.0.0" - "@ladjs/country-language": "npm:^1.0.1" - boolean: "npm:3.2.0" - i18n: "npm:^0.15.0" - i18n-locales: "npm:^0.0.5" - lodash: "npm:^4.17.21" - multimatch: "npm:5" - punycode: "npm:^2.1.1" - qs: "npm:^6.11.0" - titleize: "npm:2" - tlds: "npm:^1.231.0" - checksum: 10c0/1d8538c409d5e901aa30034b553ce1006f2463544a4ade49c9a99b788d0bb10e9b1da7eceef4029f95ebd3e70cff76b2a5750bacc451bce3c0a591b9fd90abf7 - languageName: node - linkType: hard - -"@messageformat/core@npm:^3.4.0": - version: 3.4.0 - resolution: "@messageformat/core@npm:3.4.0" - dependencies: - "@messageformat/date-skeleton": "npm:^1.0.0" - "@messageformat/number-skeleton": "npm:^1.0.0" - "@messageformat/parser": "npm:^5.1.0" - "@messageformat/runtime": "npm:^3.0.1" - make-plural: "npm:^7.0.0" - safe-identifier: "npm:^0.4.1" - checksum: 10c0/8f5591c3e72b7771b036452465ee60c912c1cea6adb3d0f55e7a4be8737c02e1d1cb8620bb894dbc9dfcf28f77faff378c3c159e177a0cbe500b1ee74c41f70f - languageName: node - linkType: hard - -"@messageformat/date-skeleton@npm:^1.0.0": - version: 1.1.0 - resolution: "@messageformat/date-skeleton@npm:1.1.0" - checksum: 10c0/5dffb194a3f067be427123de0a567433e1e9219afe2e8c20e78afaf61cb24de479b8e52c5dfb94200d9757c3504e4d52c1cb3e13ff3c837fa7c71d0cc01980c3 - languageName: node - linkType: hard - -"@messageformat/number-skeleton@npm:^1.0.0": - version: 1.2.0 - resolution: "@messageformat/number-skeleton@npm:1.2.0" - checksum: 10c0/a1ad6b6eed4508996121b7f0283bca3e18e755240eefb30c0dfa58f70de0494d390397ffa105689fbb314e06af6365b4a9e9ab1e8902d11fefe673a4e024642e - languageName: node - linkType: hard - -"@messageformat/parser@npm:^5.1.0": - version: 5.1.1 - resolution: "@messageformat/parser@npm:5.1.1" - dependencies: - moo: "npm:^0.5.1" - checksum: 10c0/fc24596d85a20fa9959a0a1c34f9bfd341e4f6eb235d0648e54296e0bed2ebe91d067c7b91036aea8cc2e4af4ddb0722257b0c04f3c610cd9c7ef4f7659d8668 - languageName: node - linkType: hard - -"@messageformat/runtime@npm:^3.0.1": - version: 3.0.2 - resolution: "@messageformat/runtime@npm:3.0.2" - dependencies: - make-plural: "npm:^7.0.0" - checksum: 10c0/5efb037fab20ab9529da220553f868f857be9ee7c3dd58b12eb96ee16c7d3b32e3bc1f88821e458a4e35fce71ed93e8846818532d97f5e933b442c4b56b1d176 - languageName: node - linkType: hard - "@pkgr/core@npm:^0.2.9": version: 0.2.9 resolution: "@pkgr/core@npm:0.2.9" @@ -490,16 +204,6 @@ __metadata: languageName: node linkType: hard -"@selderee/plugin-htmlparser2@npm:^0.11.0": - version: 0.11.0 - resolution: "@selderee/plugin-htmlparser2@npm:0.11.0" - dependencies: - domhandler: "npm:^5.0.3" - selderee: "npm:^0.11.0" - checksum: 10c0/e938ba9aeb31a9cf30dcb2977ef41685c598bf744bedc88c57aa9e8b7e71b51781695cf99c08aac50773fd7714eba670bd2a079e46db0788abe40c6d220084eb - languageName: node - linkType: hard - "@sideway/address@npm:^4.1.5": version: 4.1.5 resolution: "@sideway/address@npm:4.1.5" @@ -551,13 +255,6 @@ __metadata: languageName: node linkType: hard -"@types/minimatch@npm:^3.0.3": - version: 3.0.5 - resolution: "@types/minimatch@npm:3.0.5" - checksum: 10c0/a1a19ba342d6f39b569510f621ae4bbe972dc9378d15e9a5e47904c440ee60744f5b09225bc73be1c6490e3a9c938eee69eb53debf55ce1f15761201aa965f97 - languageName: node - linkType: hard - "@types/node-fetch@npm:^2.6.9": version: 2.6.13 resolution: "@types/node-fetch@npm:2.6.13" @@ -595,17 +292,6 @@ __metadata: languageName: node linkType: hard -"@zone-eu/mailsplit@npm:5.4.8": - version: 5.4.8 - resolution: "@zone-eu/mailsplit@npm:5.4.8" - dependencies: - libbase64: "npm:1.3.0" - libmime: "npm:5.3.7" - libqp: "npm:2.1.1" - checksum: 10c0/a054bdf50e2378c773f9c54861d27095b6f3ef4c7828576aaaa9e2173de8edb59d603e052282eebfe8c5d442efc6896a22c374daa855e9e3d55af9771b97484a - languageName: node - linkType: hard - "accepts@npm:^2.0.0": version: 2.0.0 resolution: "accepts@npm:2.0.0" @@ -625,15 +311,6 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^7.1.1": - version: 7.4.1 - resolution: "acorn@npm:7.4.1" - bin: - acorn: bin/acorn - checksum: 10c0/bd0b2c2b0f334bbee48828ff897c12bd2eb5898d03bf556dcc8942022cec795ac5bb5b6b585e2de687db6231faf07e096b59a361231dd8c9344d5df5f7f0e526 - languageName: node - linkType: hard - "acorn@npm:^8.15.0": version: 8.15.0 resolution: "acorn@npm:8.15.0" @@ -671,23 +348,6 @@ __metadata: languageName: node linkType: hard -"alce@npm:1.2.0": - version: 1.2.0 - resolution: "alce@npm:1.2.0" - dependencies: - esprima: "npm:^1.2.0" - estraverse: "npm:^1.5.0" - checksum: 10c0/ece85d4cceb25a6c182a6f94c6f67e50205a55f48c30ff9cf3088c35d452dc275f6586d9f8c6f66471ad970700dc08093e25d6fce5578b001444af8014251275 - languageName: node - linkType: hard - -"ansi-colors@npm:^4.1.1": - version: 4.1.3 - resolution: "ansi-colors@npm:4.1.3" - checksum: 10c0/ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 - languageName: node - linkType: hard - "ansi-styles@npm:^4.1.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" @@ -714,13 +374,6 @@ __metadata: languageName: node linkType: hard -"array-differ@npm:^3.0.0": - version: 3.0.0 - resolution: "array-differ@npm:3.0.0" - checksum: 10c0/c0d924cc2b7e3f5a0e6ae932e8941c5fddc0412bcecf8d5152641910e60f5e1c1e87da2b32083dec2f92f9a8f78e916ea68c22a0579794ba49886951ae783123 - languageName: node - linkType: hard - "array-includes@npm:^3.1.9": version: 3.1.9 resolution: "array-includes@npm:3.1.9" @@ -737,13 +390,6 @@ __metadata: languageName: node linkType: hard -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 - languageName: node - linkType: hard - "array.prototype.findlastindex@npm:^1.2.6": version: 1.2.6 resolution: "array.prototype.findlastindex@npm:1.2.6" @@ -798,27 +444,6 @@ __metadata: languageName: node linkType: hard -"arrify@npm:^2.0.1": - version: 2.0.1 - resolution: "arrify@npm:2.0.1" - checksum: 10c0/3fb30b5e7c37abea1907a60b28a554d2f0fc088757ca9bf5b684786e583fdf14360721eb12575c1ce6f995282eab936712d3c4389122682eafab0e0b57f78dbb - languageName: node - linkType: hard - -"asap@npm:~2.0.3": - version: 2.0.6 - resolution: "asap@npm:2.0.6" - checksum: 10c0/c6d5e39fe1f15e4b87677460bd66b66050cd14c772269cee6688824c1410a08ab20254bb6784f9afb75af9144a9f9a7692d49547f4d19d715aeb7c0318f3136d - languageName: node - linkType: hard - -"assert-never@npm:^1.2.1": - version: 1.4.0 - resolution: "assert-never@npm:1.4.0" - checksum: 10c0/494db08b89fb43d6231c9b4c48da22824f1912d88992bf0268e43b3dad0f64bd56d380addbb997d2dea7d859421d5e2904e8bd01243794f2bb5bfbc8d32d1fc6 - languageName: node - linkType: hard - "async-function@npm:^1.0.0": version: 1.0.0 resolution: "async-function@npm:1.0.0" @@ -842,13 +467,6 @@ __metadata: languageName: node linkType: hard -"async@npm:^3.2.6": - version: 3.2.6 - resolution: "async@npm:3.2.6" - checksum: 10c0/36484bb15ceddf07078688d95e27076379cc2f87b10c03b6dd8a83e89475a3c8df5848859dd06a4c95af1e4c16fc973de0171a77f18ea00be899aca2a4f85e70 - languageName: node - linkType: hard - "asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" @@ -889,15 +507,6 @@ __metadata: languageName: node linkType: hard -"babel-walk@npm:3.0.0-canary-5": - version: 3.0.0-canary-5 - resolution: "babel-walk@npm:3.0.0-canary-5" - dependencies: - "@babel/types": "npm:^7.9.6" - checksum: 10c0/17b689874d15c37714cedf6797dd9321dcb998d8e0dda9a8fe8c8bbbf128bbdeb8935cf56e8630d6b67eae76d2a0bc1e470751e082c3b0e30b80d58beafb5e64 - languageName: node - linkType: hard - "balanced-match@npm:^4.0.2": version: 4.0.4 resolution: "balanced-match@npm:4.0.4" @@ -994,20 +603,6 @@ __metadata: languageName: node linkType: hard -"boolbase@npm:^1.0.0": - version: 1.0.0 - resolution: "boolbase@npm:1.0.0" - checksum: 10c0/e4b53deb4f2b85c52be0e21a273f2045c7b6a6ea002b0e139c744cb6f95e9ec044439a52883b0d74dedd1ff3da55ed140cfdddfed7fb0cccbed373de5dce1bcf - languageName: node - linkType: hard - -"boolean@npm:3.2.0": - version: 3.2.0 - resolution: "boolean@npm:3.2.0" - checksum: 10c0/6a0dc9668f6f3dda42a53c181fcbdad223169c8d87b6c4011b87a8b14a21770efb2934a778f063d7ece17280f8c06d313c87f7b834bb1dd526a867ffcd00febf - languageName: node - linkType: hard - "brace-expansion@npm:^5.0.6": version: 5.0.6 resolution: "brace-expansion@npm:5.0.6" @@ -1063,16 +658,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^3.0.0": - version: 3.0.0 - resolution: "chalk@npm:3.0.0" - dependencies: - ansi-styles: "npm:^4.1.0" - supports-color: "npm:^7.1.0" - checksum: 10c0/ee650b0a065b3d7a6fda258e75d3a86fc8e4effa55871da730a9e42ccb035bf5fd203525e5a1ef45ec2582ecc4f65b47eb11357c526b84dd29a14fb162c414d2 - languageName: node - linkType: hard - "chalk@npm:^4.0.0": version: 4.1.2 resolution: "chalk@npm:4.1.2" @@ -1083,51 +668,6 @@ __metadata: languageName: node linkType: hard -"character-parser@npm:^2.2.0": - version: 2.2.0 - resolution: "character-parser@npm:2.2.0" - dependencies: - is-regex: "npm:^1.0.3" - checksum: 10c0/5a8d3eff2c912a6878c84e2ebf9d42524e858aa7e1a1c7e8bb79ab54da109ad008fe9057a9d2b3230541d7ff858eda98983a2ae15db57ba01af2e989d29e932e - languageName: node - linkType: hard - -"cheerio-select@npm:^2.1.0": - version: 2.1.0 - resolution: "cheerio-select@npm:2.1.0" - dependencies: - boolbase: "npm:^1.0.0" - css-select: "npm:^5.1.0" - css-what: "npm:^6.1.0" - domelementtype: "npm:^2.3.0" - domhandler: "npm:^5.0.3" - domutils: "npm:^3.0.1" - checksum: 10c0/2242097e593919dba4aacb97d7b8275def8b9ec70b00aa1f43335456870cfc9e284eae2080bdc832ed232dabb9eefcf56c722d152da4a154813fb8814a55d282 - languageName: node - linkType: hard - -"cheerio@npm:1.0.0-rc.12": - version: 1.0.0-rc.12 - resolution: "cheerio@npm:1.0.0-rc.12" - dependencies: - cheerio-select: "npm:^2.1.0" - dom-serializer: "npm:^2.0.0" - domhandler: "npm:^5.0.3" - domutils: "npm:^3.0.1" - htmlparser2: "npm:^8.0.1" - parse5: "npm:^7.0.0" - parse5-htmlparser2-tree-adapter: "npm:^7.0.0" - checksum: 10c0/c85d2f2461e3f024345b78e0bb16ad8e41492356210470dd1e7d5a91391da9fcf6c0a7cb48a9ba8820330153f0cedb4d0a60c7af15d96ecdb3092299b9d9c0cc - languageName: node - linkType: hard - -"ci-info@npm:^3.8.0": - version: 3.9.0 - resolution: "ci-info@npm:3.9.0" - checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a - languageName: node - linkType: hard - "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" @@ -1160,23 +700,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^6.1.0": - version: 6.2.1 - resolution: "commander@npm:6.2.1" - checksum: 10c0/85748abd9d18c8bc88febed58b98f66b7c591d9b5017cad459565761d7b29ca13b7783ea2ee5ce84bf235897333706c4ce29adf1ce15c8252780e7000e2ce9ea - languageName: node - linkType: hard - -"constantinople@npm:^4.0.1": - version: 4.0.1 - resolution: "constantinople@npm:4.0.1" - dependencies: - "@babel/parser": "npm:^7.6.0" - "@babel/types": "npm:^7.6.1" - checksum: 10c0/15129adef19b1af2c3ade8bd38f97c34781bf461472a30ab414384b28d072be83070c8d2175787c045ef7c222c415101ae609936e7903427796a0c0eca8449fd - languageName: node - linkType: hard - "content-disposition@npm:^1.0.0": version: 1.0.1 resolution: "content-disposition@npm:1.0.1" @@ -1229,19 +752,6 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^6.0.0": - version: 6.0.6 - resolution: "cross-spawn@npm:6.0.6" - dependencies: - nice-try: "npm:^1.0.4" - path-key: "npm:^2.0.1" - semver: "npm:^5.5.0" - shebang-command: "npm:^1.2.0" - which: "npm:^1.2.9" - checksum: 10c0/bf61fb890e8635102ea9bce050515cf915ff6a50ccaa0b37a17dc82fded0fb3ed7af5478b9367b86baee19127ad86af4be51d209f64fd6638c0862dca185fe1d - languageName: node - linkType: hard - "cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" @@ -1253,26 +763,6 @@ __metadata: languageName: node linkType: hard -"css-select@npm:^5.1.0": - version: 5.2.2 - resolution: "css-select@npm:5.2.2" - dependencies: - boolbase: "npm:^1.0.0" - css-what: "npm:^6.1.0" - domhandler: "npm:^5.0.2" - domutils: "npm:^3.0.1" - nth-check: "npm:^2.0.1" - checksum: 10c0/d79fffa97106007f2802589f3ed17b8c903f1c961c0fc28aa8a051eee0cbad394d8446223862efd4c1b40445a6034f626bb639cf2035b0bfc468544177593c99 - languageName: node - linkType: hard - -"css-what@npm:^6.1.0": - version: 6.2.2 - resolution: "css-what@npm:6.2.2" - checksum: 10c0/91e24c26fb977b4ccef30d7007d2668c1c10ac0154cc3f42f7304410e9594fb772aea4f30c832d2993b132ca8d99338050866476210316345ec2e7d47b248a56 - languageName: node - linkType: hard - "cycle@npm:1.0.x": version: 1.0.3 resolution: "cycle@npm:1.0.3" @@ -1334,13 +824,6 @@ __metadata: languageName: node linkType: hard -"deep-extend@npm:^0.6.0": - version: 0.6.0 - resolution: "deep-extend@npm:0.6.0" - checksum: 10c0/1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 - languageName: node - linkType: hard - "deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" @@ -1348,13 +831,6 @@ __metadata: languageName: node linkType: hard -"deepmerge@npm:^4.3.1": - version: 4.3.1 - resolution: "deepmerge@npm:4.3.1" - checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 - languageName: node - linkType: hard - "define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": version: 1.1.4 resolution: "define-data-property@npm:1.1.4" @@ -1391,30 +867,6 @@ __metadata: languageName: node linkType: hard -"detect-indent@npm:^6.0.0": - version: 6.1.0 - resolution: "detect-indent@npm:6.1.0" - checksum: 10c0/dd83cdeda9af219cf77f5e9a0dc31d828c045337386cfb55ce04fad94ba872ee7957336834154f7647b89b899c3c7acc977c57a79b7c776b506240993f97acc7 - languageName: node - linkType: hard - -"detect-newline@npm:^3.1.0": - version: 3.1.0 - resolution: "detect-newline@npm:3.1.0" - checksum: 10c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d - languageName: node - linkType: hard - -"display-notification@npm:2.0.0": - version: 2.0.0 - resolution: "display-notification@npm:2.0.0" - dependencies: - escape-string-applescript: "npm:^1.0.0" - run-applescript: "npm:^3.0.0" - checksum: 10c0/24a93b8d8f47812f26aa54fe27ffd10b7495ee824425e0a3c45abbd9df243452f28addb9a0d712fa77566f6787b682ac2757071bf6f0a018b49f9d39ca36efed - languageName: node - linkType: hard - "doctrine@npm:^2.1.0": version: 2.1.0 resolution: "doctrine@npm:2.1.0" @@ -1424,91 +876,6 @@ __metadata: languageName: node linkType: hard -"doctypes@npm:^1.1.0": - version: 1.1.0 - resolution: "doctypes@npm:1.1.0" - checksum: 10c0/b3f9d597ad8b9ac6aeba9d64df61f0098174f7570e3d34f7ee245ebc736c7bee122d9738a18e22010b98983fd9a340d63043d3841f02d8a7742a2d96d2c72610 - languageName: node - linkType: hard - -"dom-serializer@npm:^1.0.1": - version: 1.4.1 - resolution: "dom-serializer@npm:1.4.1" - dependencies: - domelementtype: "npm:^2.0.1" - domhandler: "npm:^4.2.0" - entities: "npm:^2.0.0" - checksum: 10c0/67d775fa1ea3de52035c98168ddcd59418356943b5eccb80e3c8b3da53adb8e37edb2cc2f885802b7b1765bf5022aec21dfc32910d7f9e6de4c3148f095ab5e0 - languageName: node - linkType: hard - -"dom-serializer@npm:^2.0.0": - version: 2.0.0 - resolution: "dom-serializer@npm:2.0.0" - dependencies: - domelementtype: "npm:^2.3.0" - domhandler: "npm:^5.0.2" - entities: "npm:^4.2.0" - checksum: 10c0/d5ae2b7110ca3746b3643d3ef60ef823f5f078667baf530cec096433f1627ec4b6fa8c072f09d079d7cda915fd2c7bc1b7b935681e9b09e591e1e15f4040b8e2 - languageName: node - linkType: hard - -"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0": - version: 2.3.0 - resolution: "domelementtype@npm:2.3.0" - checksum: 10c0/686f5a9ef0fff078c1412c05db73a0dce096190036f33e400a07e2a4518e9f56b1e324f5c576a0a747ef0e75b5d985c040b0d51945ce780c0dd3c625a18cd8c9 - languageName: node - linkType: hard - -"domhandler@npm:^3.3.0": - version: 3.3.0 - resolution: "domhandler@npm:3.3.0" - dependencies: - domelementtype: "npm:^2.0.1" - checksum: 10c0/376e6462a6144121f6ae50c9c1b8e0b22d2e0c68f9fb2ef6e57a5f4f9395854b1258cb638c58b171ee291359a5f41a4a57f403954db976484a59ffcee4c1e405 - languageName: node - linkType: hard - -"domhandler@npm:^4.2.0": - version: 4.3.1 - resolution: "domhandler@npm:4.3.1" - dependencies: - domelementtype: "npm:^2.2.0" - checksum: 10c0/5c199c7468cb052a8b5ab80b13528f0db3d794c64fc050ba793b574e158e67c93f8336e87fd81e9d5ee43b0e04aea4d8b93ed7be4899cb726a1601b3ba18538b - languageName: node - linkType: hard - -"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": - version: 5.0.3 - resolution: "domhandler@npm:5.0.3" - dependencies: - domelementtype: "npm:^2.3.0" - checksum: 10c0/bba1e5932b3e196ad6862286d76adc89a0dbf0c773e5ced1eb01f9af930c50093a084eff14b8de5ea60b895c56a04d5de8bbc4930c5543d029091916770b2d2a - languageName: node - linkType: hard - -"domutils@npm:^2.4.2": - version: 2.8.0 - resolution: "domutils@npm:2.8.0" - dependencies: - dom-serializer: "npm:^1.0.1" - domelementtype: "npm:^2.2.0" - domhandler: "npm:^4.2.0" - checksum: 10c0/d58e2ae01922f0dd55894e61d18119924d88091837887bf1438f2327f32c65eb76426bd9384f81e7d6dcfb048e0f83c19b222ad7101176ad68cdc9c695b563db - languageName: node - linkType: hard - -"domutils@npm:^3.0.1": - version: 3.2.2 - resolution: "domutils@npm:3.2.2" - dependencies: - dom-serializer: "npm:^2.0.0" - domelementtype: "npm:^2.3.0" - domhandler: "npm:^5.0.3" - checksum: 10c0/47938f473b987ea71cd59e59626eb8666d3aa8feba5266e45527f3b636c7883cca7e582d901531961f742c519d7514636b7973353b648762b2e3bedbf235fada - languageName: node - linkType: hard - "dotenv@npm:^16.5.0": version: 16.6.1 resolution: "dotenv@npm:16.6.1" @@ -1534,36 +901,6 @@ __metadata: languageName: node linkType: hard -"ejs@npm:^3.1.10": - version: 3.1.10 - resolution: "ejs@npm:3.1.10" - dependencies: - jake: "npm:^10.8.5" - bin: - ejs: bin/cli.js - checksum: 10c0/52eade9e68416ed04f7f92c492183340582a36482836b11eab97b159fcdcfdedc62233a1bf0bf5e5e1851c501f2dca0e2e9afd111db2599e4e7f53ee29429ae1 - languageName: node - linkType: hard - -"email-templates@npm:^12.0.2": - version: 12.0.3 - resolution: "email-templates@npm:12.0.3" - dependencies: - "@ladjs/consolidate": "npm:^1.0.4" - "@ladjs/i18n": "npm:^8.0.3" - get-paths: "npm:^0.0.7" - html-to-text: "npm:^9.0.5" - juice: "npm:^10.0.0" - lodash: "npm:^4.17.21" - nodemailer: "npm:^6.9.14" - preview-email: "npm:*" - dependenciesMeta: - preview-email: - optional: true - checksum: 10c0/99ebeea3c888bf25d77d5d6d133320cd76f9ea774a9915867837ce16063e75016da7b7a09ad0babc85ed85fd76d12f0dcdd76310f6966ad7acad6b29e05b4788 - languageName: node - linkType: hard - "encodeurl@npm:^2.0.0": version: 2.0.0 resolution: "encodeurl@npm:2.0.0" @@ -1571,13 +908,6 @@ __metadata: languageName: node linkType: hard -"encoding-japanese@npm:2.2.0": - version: 2.2.0 - resolution: "encoding-japanese@npm:2.2.0" - checksum: 10c0/9d1f10dde16f59da8a8a1a04499dffa3e9926b0dbd7dfab8054570527b7e6de30c47e828851f42d2727af31586ec8049a84eeae593ad8b22eea10921fd269798 - languageName: node - linkType: hard - "end-of-stream@npm:^1.1.0": version: 1.4.5 resolution: "end-of-stream@npm:1.4.5" @@ -1587,27 +917,6 @@ __metadata: languageName: node linkType: hard -"entities@npm:^2.0.0": - version: 2.2.0 - resolution: "entities@npm:2.2.0" - checksum: 10c0/7fba6af1f116300d2ba1c5673fc218af1961b20908638391b4e1e6d5850314ee2ac3ec22d741b3a8060479911c99305164aed19b6254bde75e7e6b1b2c3f3aa3 - languageName: node - linkType: hard - -"entities@npm:^4.2.0, entities@npm:^4.4.0": - version: 4.5.0 - resolution: "entities@npm:4.5.0" - checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 - languageName: node - linkType: hard - -"entities@npm:^6.0.0": - version: 6.0.1 - resolution: "entities@npm:6.0.1" - checksum: 10c0/ed836ddac5acb34341094eb495185d527bd70e8632b6c0d59548cbfa23defdbae70b96f9a405c82904efa421230b5b3fd2283752447d737beffd3f3e6ee74414 - languageName: node - linkType: hard - "es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0": version: 1.24.0 resolution: "es-abstract@npm:1.24.0" @@ -1725,13 +1034,6 @@ __metadata: languageName: node linkType: hard -"escape-goat@npm:^3.0.0": - version: 3.0.0 - resolution: "escape-goat@npm:3.0.0" - checksum: 10c0/a2b470bbdb95ccbcd19390576993a2b75735457b1979275f4f0d6da86d2e932a2a12edd9270208e3090299a26df857da1f80555c37bb1bac6fa9135322253ca4 - languageName: node - linkType: hard - "escape-html@npm:^1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3" @@ -1739,13 +1041,6 @@ __metadata: languageName: node linkType: hard -"escape-string-applescript@npm:^1.0.0": - version: 1.0.0 - resolution: "escape-string-applescript@npm:1.0.0" - checksum: 10c0/25d89b0014a2bb22b3714ba20f1255ecaac5004d3a4dc54e739bae3fa38ff4f9fdc1679acabf117e4b1e3bf321b3a14367fbbd4baf216804958422ec6355dfa6 - languageName: node - linkType: hard - "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" @@ -1984,16 +1279,6 @@ __metadata: languageName: node linkType: hard -"esprima@npm:^1.2.0": - version: 1.2.5 - resolution: "esprima@npm:1.2.5" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: 10c0/634f272901b48174b84fd59ae6d9fbe03af38cfaa60501d8c0c7227d96ac53aef232e6fafda7c9760e50997f675e1c828e0b29aa39b092982960acf5e937db8f - languageName: node - linkType: hard - "esquery@npm:^1.5.0": version: 1.6.0 resolution: "esquery@npm:1.6.0" @@ -2012,13 +1297,6 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^1.5.0": - version: 1.9.3 - resolution: "estraverse@npm:1.9.3" - checksum: 10c0/2477bab0c5cdc7534162fbb16b25282c49f434875227937726692ed105762403e9830324cc97c3ea8bf332fe91122ea321f4d4292aaf50db7a90d857e169719e - languageName: node - linkType: hard - "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" @@ -2049,21 +1327,6 @@ __metadata: languageName: node linkType: hard -"execa@npm:^0.10.0": - version: 0.10.0 - resolution: "execa@npm:0.10.0" - dependencies: - cross-spawn: "npm:^6.0.0" - get-stream: "npm:^3.0.0" - is-stream: "npm:^1.1.0" - npm-run-path: "npm:^2.0.0" - p-finally: "npm:^1.0.0" - signal-exit: "npm:^3.0.0" - strip-eof: "npm:^1.0.0" - checksum: 10c0/3e8562b78f1552ff629770aa81cdb98dac927b6b7f7adc10815ecf13b6917bbabc0468d7d81494f0bb05c59b83a22639e879ef15a17c0dc3434cc32e90e85ab3 - languageName: node - linkType: hard - "express-bearer-token@npm:^3.0.0": version: 3.0.0 resolution: "express-bearer-token@npm:3.0.0" @@ -2110,13 +1373,6 @@ __metadata: languageName: node linkType: hard -"extend-object@npm:^1.0.0": - version: 1.0.0 - resolution: "extend-object@npm:1.0.0" - checksum: 10c0/7644bfe3d2bac31fa3ab0d1aedef2a5a4c27975690f92191ec8a72d6440605f7ad920d60ac356374177ec71b1e3369e7134997b31692e2f7a55a4cb7fbb7ba57 - languageName: node - linkType: hard - "eyes@npm:0.1.x": version: 0.1.8 resolution: "eyes@npm:0.1.8" @@ -2159,13 +1415,6 @@ __metadata: languageName: node linkType: hard -"fast-printf@npm:^1.6.10": - version: 1.6.10 - resolution: "fast-printf@npm:1.6.10" - checksum: 10c0/630cccbef8349a6eeada9958c9391e9d14b5bd9527dd28d9e7e9f295b006c640ddca8fc2470cff55ea5c6c92ca530488bbadbf7c24f4852ad8c34d9155da9d75 - languageName: node - linkType: hard - "file-entry-cache@npm:^8.0.0": version: 8.0.0 resolution: "file-entry-cache@npm:8.0.0" @@ -2175,15 +1424,6 @@ __metadata: languageName: node linkType: hard -"filelist@npm:^1.0.4": - version: 1.0.4 - resolution: "filelist@npm:1.0.4" - dependencies: - minimatch: "npm:^5.0.1" - checksum: 10c0/426b1de3944a3d153b053f1c0ebfd02dccd0308a4f9e832ad220707a6d1f1b3c9784d6cadf6b2f68f09a57565f63ebc7bcdc913ccf8012d834f472c46e596f41 - languageName: node - linkType: hard - "finalhandler@npm:^2.1.0": version: 2.1.1 resolution: "finalhandler@npm:2.1.1" @@ -2208,22 +1448,6 @@ __metadata: languageName: node linkType: hard -"fixpack@npm:^4.0.0": - version: 4.0.0 - resolution: "fixpack@npm:4.0.0" - dependencies: - alce: "npm:1.2.0" - chalk: "npm:^3.0.0" - detect-indent: "npm:^6.0.0" - detect-newline: "npm:^3.1.0" - extend-object: "npm:^1.0.0" - rc: "npm:^1.2.8" - bin: - fixpack: bin/fixpack - checksum: 10c0/f88d9cb469a2eb55eeff02024011853726a5a1c04dcd4d609f0f7824333e8226e0411079675a68280dba07e11103a8bd8bd039b1fa87504d7d5cf7cc0d05e4c7 - languageName: node - linkType: hard - "flat-cache@npm:^4.0.0": version: 4.0.1 resolution: "flat-cache@npm:4.0.1" @@ -2343,22 +1567,6 @@ __metadata: languageName: node linkType: hard -"get-paths@npm:^0.0.7": - version: 0.0.7 - resolution: "get-paths@npm:0.0.7" - dependencies: - pify: "npm:^4.0.1" - checksum: 10c0/ca4bbd2e80760141bc2304bc9eb2bc442b848090bc8118727251f54ca37b212879026fa8013a9b23d2df0360940eb0b6a540769c1ae1542c100d0ab949964698 - languageName: node - linkType: hard - -"get-port@npm:5.1.1": - version: 5.1.1 - resolution: "get-port@npm:5.1.1" - checksum: 10c0/2873877a469b24e6d5e0be490724a17edb39fafc795d1d662e7bea951ca649713b4a50117a473f9d162312cb0e946597bd0e049ed2f866e79e576e8e213d3d1c - languageName: node - linkType: hard - "get-proto@npm:^1.0.1": version: 1.0.1 resolution: "get-proto@npm:1.0.1" @@ -2369,13 +1577,6 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^3.0.0": - version: 3.0.0 - resolution: "get-stream@npm:3.0.0" - checksum: 10c0/003f5f3b8870da59c6aafdf6ed7e7b07b48c2f8629cd461bd3900726548b6b8cfa2e14d6b7814fbb08f07a42f4f738407fa70b989928b2783a76b278505bba22 - languageName: node - linkType: hard - "get-symbol-description@npm:^1.1.0": version: 1.1.0 resolution: "get-symbol-description@npm:1.1.0" @@ -2477,15 +1678,6 @@ __metadata: languageName: node linkType: hard -"he@npm:1.2.0": - version: 1.2.0 - resolution: "he@npm:1.2.0" - bin: - he: bin/he - checksum: 10c0/a27d478befe3c8192f006cdd0639a66798979dfa6e2125c6ac582a19a5ebfec62ad83e8382e6036170d873f46e4536a7e795bf8b95bf7c247f4cc0825ccc8c17 - languageName: node - linkType: hard - "hpagent@npm:^1.2.0": version: 1.2.0 resolution: "hpagent@npm:1.2.0" @@ -2493,43 +1685,6 @@ __metadata: languageName: node linkType: hard -"html-to-text@npm:9.0.5, html-to-text@npm:^9.0.5": - version: 9.0.5 - resolution: "html-to-text@npm:9.0.5" - dependencies: - "@selderee/plugin-htmlparser2": "npm:^0.11.0" - deepmerge: "npm:^4.3.1" - dom-serializer: "npm:^2.0.0" - htmlparser2: "npm:^8.0.2" - selderee: "npm:^0.11.0" - checksum: 10c0/5d2c77b798cf88a81b1da2fc1ea1a3b3e2ff49fe5a3d812392f802fff18ec315cf0969bd7846ef2eb7df8c37f463bc63e8cbdcf84e42696c6f3e15dfa61cdf4f - languageName: node - linkType: hard - -"htmlparser2@npm:^5.0.0": - version: 5.0.1 - resolution: "htmlparser2@npm:5.0.1" - dependencies: - domelementtype: "npm:^2.0.1" - domhandler: "npm:^3.3.0" - domutils: "npm:^2.4.2" - entities: "npm:^2.0.0" - checksum: 10c0/3f276f7ac518930f5330cfe5129dd5764a63e9bae6f57350e90b26affc94b11b2fb6750f056fed245b726d500e78197b4a09c7108c71964fe91303e6e2a29107 - languageName: node - linkType: hard - -"htmlparser2@npm:^8.0.1, htmlparser2@npm:^8.0.2": - version: 8.0.2 - resolution: "htmlparser2@npm:8.0.2" - dependencies: - domelementtype: "npm:^2.3.0" - domhandler: "npm:^5.0.3" - domutils: "npm:^3.0.1" - entities: "npm:^4.4.0" - checksum: 10c0/609cca85886d0bf2c9a5db8c6926a89f3764596877492e2caa7a25a789af4065bc6ee2cdc81807fe6b1d03a87bf8a373b5a754528a4cc05146b713c20575aab4 - languageName: node - linkType: hard - "http-errors@npm:^2.0.0, http-errors@npm:~2.0.1": version: 2.0.1 resolution: "http-errors@npm:2.0.1" @@ -2553,47 +1708,6 @@ __metadata: languageName: node linkType: hard -"i18n-locales@npm:^0.0.5": - version: 0.0.5 - resolution: "i18n-locales@npm:0.0.5" - dependencies: - "@ladjs/country-language": "npm:^0.2.1" - checksum: 10c0/4e33ef664a82215eae62413f99114940b995e337aad153fbf5294a9995507f3225c4233250719a222bc93eb528d95d0e3d18a7b518009e6b3e94260d87b3cf3f - languageName: node - linkType: hard - -"i18n@npm:^0.15.0": - version: 0.15.3 - resolution: "i18n@npm:0.15.3" - dependencies: - "@messageformat/core": "npm:^3.4.0" - debug: "npm:^4.4.3" - fast-printf: "npm:^1.6.10" - make-plural: "npm:^7.4.0" - math-interval-parser: "npm:^2.0.1" - mustache: "npm:^4.2.0" - checksum: 10c0/f6fbbc444083947cb0ec3c3a1a2ad952c3216a0511b297e89791fe54ba9888e6e35ba154ed3dc602f2dce92a66aebf2c9f726ac41ff2fea2aac2ba8ca35eb4d3 - languageName: node - linkType: hard - -"iconv-lite@npm:0.6.3": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 - languageName: node - linkType: hard - -"iconv-lite@npm:0.7.2": - version: 0.7.2 - resolution: "iconv-lite@npm:0.7.2" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 10c0/3c228920f3bd307f56bf8363706a776f4a060eb042f131cd23855ceca962951b264d0997ab38a1ad340e1c5df8499ed26e1f4f0db6b2a2ad9befaff22f14b722 - languageName: node - linkType: hard - "iconv-lite@npm:^0.7.0, iconv-lite@npm:~0.7.0": version: 0.7.0 resolution: "iconv-lite@npm:0.7.0" @@ -2634,13 +1748,6 @@ __metadata: languageName: node linkType: hard -"ini@npm:~1.3.0": - version: 1.3.8 - resolution: "ini@npm:1.3.8" - checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a - languageName: node - linkType: hard - "internal-slot@npm:^1.1.0": version: 1.1.0 resolution: "internal-slot@npm:1.1.0" @@ -2746,25 +1853,6 @@ __metadata: languageName: node linkType: hard -"is-docker@npm:^2.0.0": - version: 2.2.1 - resolution: "is-docker@npm:2.2.1" - bin: - is-docker: cli.js - checksum: 10c0/e828365958d155f90c409cdbe958f64051d99e8aedc2c8c4cd7c89dcf35329daed42f7b99346f7828df013e27deb8f721cf9408ba878c76eb9e8290235fbcdcc - languageName: node - linkType: hard - -"is-expression@npm:^4.0.0": - version: 4.0.0 - resolution: "is-expression@npm:4.0.0" - dependencies: - acorn: "npm:^7.1.1" - object-assign: "npm:^4.1.1" - checksum: 10c0/541831d39d3e7bfc8cecd966d6b0f3c0e6d9055342f17b634fb23e74f51ce90f1bfc3cf231c722fe003a61e8d4f0b9e07244fdaba57f4fc70a163c74006fd5a0 - languageName: node - linkType: hard - "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -2827,13 +1915,6 @@ __metadata: languageName: node linkType: hard -"is-promise@npm:^2.0.0": - version: 2.2.2 - resolution: "is-promise@npm:2.2.2" - checksum: 10c0/2dba959812380e45b3df0fb12e7cb4d4528c989c7abb03ececb1d1fd6ab1cbfee956ca9daa587b9db1d8ac3c1e5738cf217bdb3dfd99df8c691be4c00ae09069 - languageName: node - linkType: hard - "is-promise@npm:^4.0.0": version: 4.0.0 resolution: "is-promise@npm:4.0.0" @@ -2841,7 +1922,7 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.0.3, is-regex@npm:^1.2.1": +"is-regex@npm:^1.2.1": version: 1.2.1 resolution: "is-regex@npm:1.2.1" dependencies: @@ -2869,13 +1950,6 @@ __metadata: languageName: node linkType: hard -"is-stream@npm:^1.1.0": - version: 1.1.0 - resolution: "is-stream@npm:1.1.0" - checksum: 10c0/b8ae7971e78d2e8488d15f804229c6eed7ed36a28f8807a1815938771f4adff0e705218b7dab968270433f67103e4fef98062a0beea55d64835f705ee72c7002 - languageName: node - linkType: hard - "is-string@npm:^1.1.1": version: 1.1.1 resolution: "is-string@npm:1.1.1" @@ -2932,15 +2006,6 @@ __metadata: languageName: node linkType: hard -"is-wsl@npm:^2.1.1": - version: 2.2.0 - resolution: "is-wsl@npm:2.2.0" - dependencies: - is-docker: "npm:^2.0.0" - checksum: 10c0/a6fa2d370d21be487c0165c7a440d567274fbba1a817f2f0bfa41cc5e3af25041d84267baa22df66696956038a43973e72fca117918c91431920bdef490fa25e - languageName: node - linkType: hard - "isarray@npm:^2.0.5": version: 2.0.5 resolution: "isarray@npm:2.0.5" @@ -2971,19 +2036,6 @@ __metadata: languageName: node linkType: hard -"jake@npm:^10.8.5": - version: 10.9.4 - resolution: "jake@npm:10.9.4" - dependencies: - async: "npm:^3.2.6" - filelist: "npm:^1.0.4" - picocolors: "npm:^1.1.1" - bin: - jake: bin/cli.js - checksum: 10c0/bb52f000340d4a32f1a3893b9abe56ef2b77c25da4dbf2c0c874a8159d082dddda50a5ad10e26060198bd645b928ba8dba3b362710f46a247e335321188c5a9c - languageName: node - linkType: hard - "joi@npm:^17.13.3": version: 17.13.3 resolution: "joi@npm:17.13.3" @@ -3004,13 +2056,6 @@ __metadata: languageName: node linkType: hard -"js-stringify@npm:^1.0.2": - version: 1.0.2 - resolution: "js-stringify@npm:1.0.2" - checksum: 10c0/a450c04fde3a7e1c27f1c3c4300433f8d79322f9e3c2e76266843cef8c0b5a69b5f11b5f173212b2f15f2df09e068ef7ddf46ef775e2486f3006a6f4e912578d - languageName: node - linkType: hard - "js-yaml@npm:^4.1.0, js-yaml@npm:^4.1.1": version: 4.1.1 resolution: "js-yaml@npm:4.1.1" @@ -3075,31 +2120,6 @@ __metadata: languageName: node linkType: hard -"jstransformer@npm:1.0.0": - version: 1.0.0 - resolution: "jstransformer@npm:1.0.0" - dependencies: - is-promise: "npm:^2.0.0" - promise: "npm:^7.0.1" - checksum: 10c0/11f9b4f368a55878dd7973154cd83b0adca27f974d21217728652530775b2bec281e92109de66f0c9e37c76af796d5b76b33f3e38363214a83d102d523a7285b - languageName: node - linkType: hard - -"juice@npm:^10.0.0": - version: 10.0.1 - resolution: "juice@npm:10.0.1" - dependencies: - cheerio: "npm:1.0.0-rc.12" - commander: "npm:^6.1.0" - mensch: "npm:^0.3.4" - slick: "npm:^1.12.2" - web-resource-inliner: "npm:^6.0.1" - bin: - juice: bin/juice - checksum: 10c0/10265610aea6b50a382313f95e2e7e130a8476a727ebbc956ab34dd413b1b8f54a26e81b37e528f4cef248f8d20a776dac0e61fa0f13ce6d853a17ca2b384228 - languageName: node - linkType: hard - "keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" @@ -3109,13 +2129,6 @@ __metadata: languageName: node linkType: hard -"leac@npm:^0.6.0": - version: 0.6.0 - resolution: "leac@npm:0.6.0" - checksum: 10c0/5257781e10791ef8462eb1cbe5e48e3cda7692486f2a775265d6f5216cc088960c62f138163b8df0dcf2119d18673bfe7b050d6b41543d92a7b7ac90e4eb1e8b - languageName: node - linkType: hard - "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" @@ -3126,53 +2139,6 @@ __metadata: languageName: node linkType: hard -"libbase64@npm:1.3.0": - version: 1.3.0 - resolution: "libbase64@npm:1.3.0" - checksum: 10c0/4ece76ce09fa389d0c578c83a121c16452916521b177f50c3e8637dd9919170c96c12e1c7de63b1c88da8e5aa7e7ab574c26d18f1f64666f46b358b4b5873c8b - languageName: node - linkType: hard - -"libmime@npm:5.3.7": - version: 5.3.7 - resolution: "libmime@npm:5.3.7" - dependencies: - encoding-japanese: "npm:2.2.0" - iconv-lite: "npm:0.6.3" - libbase64: "npm:1.3.0" - libqp: "npm:2.1.1" - checksum: 10c0/2c8afbe287df533b983b8eb6db0e98d4eb79c833aca7aac531994168d30dd6194a90d78cefb320427183853422be1c86511ab975b1a3fc9f1fc69ce1b83bb7c0 - languageName: node - linkType: hard - -"libmime@npm:5.3.8": - version: 5.3.8 - resolution: "libmime@npm:5.3.8" - dependencies: - encoding-japanese: "npm:2.2.0" - iconv-lite: "npm:0.7.2" - libbase64: "npm:1.3.0" - libqp: "npm:2.1.1" - checksum: 10c0/4fb65f7c07a9bdb0c0ee25bb80fac94a803807f9ac15a3d6cafc2c93303500d92c8ceb6dfe0ab938c871406fc01cb69a7a457f28b2037c47c283574e8900d8c4 - languageName: node - linkType: hard - -"libqp@npm:2.1.1": - version: 2.1.1 - resolution: "libqp@npm:2.1.1" - checksum: 10c0/6e78f0676cd2424b3ddbf3273ab8539871299310dba433b7e2ec10a41830acecb4d074ea8b78b706dea349996f011ce519d92f81ede712c4824a2dd402aa376c - languageName: node - linkType: hard - -"linkify-it@npm:5.0.0": - version: 5.0.0 - resolution: "linkify-it@npm:5.0.0" - dependencies: - uc.micro: "npm:^2.0.0" - checksum: 10c0/ff4abbcdfa2003472fc3eb4b8e60905ec97718e11e33cca52059919a4c80cc0e0c2a14d23e23d8c00e5402bc5a885cdba8ca053a11483ab3cc8b3c7a52f88e2d - languageName: node - linkType: hard - "locate-path@npm:^6.0.0": version: 6.0.0 resolution: "locate-path@npm:6.0.0" @@ -3196,38 +2162,6 @@ __metadata: languageName: node linkType: hard -"mailparser@npm:^3.9.3": - version: 3.9.8 - resolution: "mailparser@npm:3.9.8" - dependencies: - "@zone-eu/mailsplit": "npm:5.4.8" - encoding-japanese: "npm:2.2.0" - he: "npm:1.2.0" - html-to-text: "npm:9.0.5" - iconv-lite: "npm:0.7.2" - libmime: "npm:5.3.8" - linkify-it: "npm:5.0.0" - nodemailer: "npm:8.0.5" - punycode.js: "npm:2.3.1" - tlds: "npm:1.261.0" - checksum: 10c0/7d86b57cb6b676902d4547d573bb40c660b5adf1024b418ddd02a584af3b5a64b20d2153d94ea8b666034939e1f156b823f9f6ee3ddfbd2a2ae61920c7c3fc0a - languageName: node - linkType: hard - -"make-plural@npm:^7.0.0, make-plural@npm:^7.4.0": - version: 7.4.0 - resolution: "make-plural@npm:7.4.0" - checksum: 10c0/10f24e932865c88d4cdb14d4bb809ce8e615cae7d083c63ad008b3bcaf0d22941ca0bd76acd9cdd7ae4047563501104fff3c37ce8ad2bc5671facde1818fa57f - languageName: node - linkType: hard - -"math-interval-parser@npm:^2.0.1": - version: 2.0.1 - resolution: "math-interval-parser@npm:2.0.1" - checksum: 10c0/7e58389f603a4c3303d691e4feacea981c83c7bfc332741c8e5abc49a3e9b7364d8a141dc5ca822287c99d8cb9b76b6d5d1511662dae02faf126e2521da8348e - languageName: node - linkType: hard - "math-intrinsics@npm:^1.1.0": version: 1.1.0 resolution: "math-intrinsics@npm:1.1.0" @@ -3242,13 +2176,6 @@ __metadata: languageName: node linkType: hard -"mensch@npm:^0.3.4": - version: 0.3.4 - resolution: "mensch@npm:0.3.4" - checksum: 10c0/177f9c1cb1acd93da98a971288a5da99f819ac06de19ca450040b18ddf8728c7ae0ce22309fadbbfd4ceb773bc5c03bf1cb93ceb91441da9e76e010d314da2ea - languageName: node - linkType: hard - "merge-descriptors@npm:^2.0.0": version: 2.0.0 resolution: "merge-descriptors@npm:2.0.0" @@ -3282,18 +2209,9 @@ __metadata: "mime-types@npm:^3.0.0, mime-types@npm:^3.0.1": version: 3.0.2 resolution: "mime-types@npm:3.0.2" - dependencies: - mime-db: "npm:^1.54.0" - checksum: 10c0/35a0dd1035d14d185664f346efcdb72e93ef7a9b6e9ae808bd1f6358227010267fab52657b37562c80fc888ff76becb2b2938deb5e730818b7983bf8bd359767 - languageName: node - linkType: hard - -"mime@npm:^2.4.6": - version: 2.6.0 - resolution: "mime@npm:2.6.0" - bin: - mime: cli.js - checksum: 10c0/a7f2589900d9c16e3bdf7672d16a6274df903da958c1643c9c45771f0478f3846dcb1097f31eb9178452570271361e2149310931ec705c037210fc69639c8e6c + dependencies: + mime-db: "npm:^1.54.0" + checksum: 10c0/35a0dd1035d14d185664f346efcdb72e93ef7a9b6e9ae808bd1f6358227010267fab52657b37562c80fc888ff76becb2b2938deb5e730818b7983bf8bd359767 languageName: node linkType: hard @@ -3320,13 +2238,6 @@ __metadata: languageName: node linkType: hard -"moo@npm:^0.5.1": - version: 0.5.2 - resolution: "moo@npm:0.5.2" - checksum: 10c0/a9d9ad8198a51fe35d297f6e9fdd718298ca0b39a412e868a0ebd92286379ab4533cfc1f1f34516177f5129988ab25fe598f78e77c84e3bfe0d4a877b56525a8 - languageName: node - linkType: hard - "ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" @@ -3334,28 +2245,6 @@ __metadata: languageName: node linkType: hard -"multimatch@npm:5": - version: 5.0.0 - resolution: "multimatch@npm:5.0.0" - dependencies: - "@types/minimatch": "npm:^3.0.3" - array-differ: "npm:^3.0.0" - array-union: "npm:^2.1.0" - arrify: "npm:^2.0.1" - minimatch: "npm:^3.0.4" - checksum: 10c0/252ffae6d19491c169c22fc30cf8a99f6031f94a3495f187d3430b06200e9f05a7efae90ab9d834f090834e0d9c979ab55e7ad21f61a37995d807b4b0ccdcbd1 - languageName: node - linkType: hard - -"mustache@npm:^4.2.0": - version: 4.2.0 - resolution: "mustache@npm:4.2.0" - bin: - mustache: bin/mustache - checksum: 10c0/1f8197e8a19e63645a786581d58c41df7853da26702dbc005193e2437c98ca49b255345c173d50c08fe4b4dbb363e53cb655ecc570791f8deb09887248dd34a2 - languageName: node - linkType: hard - "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -3370,14 +2259,7 @@ __metadata: languageName: node linkType: hard -"nice-try@npm:^1.0.4": - version: 1.0.5 - resolution: "nice-try@npm:1.0.5" - checksum: 10c0/95568c1b73e1d0d4069a3e3061a2102d854513d37bcfda73300015b7ba4868d3b27c198d1dbbd8ebdef4112fc2ed9e895d4a0f2e1cce0bd334f2a1346dc9205f - languageName: node - linkType: hard - -"node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.9": +"node-fetch@npm:^2.6.9": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" dependencies: @@ -3391,31 +2273,6 @@ __metadata: languageName: node linkType: hard -"nodemailer@npm:^8.0.5": - version: 8.0.5 - resolution: "nodemailer@npm:8.0.5" - checksum: 10c0/5e8450499bd059c56d74ba96fa5f9928de2ecdae0d53c083dba5661d797114c1f9524d30f992d0263cc5a7dcf5a54b9c1d92dc1f766da150c9d0bde7d3798431 - languageName: node - linkType: hard - -"npm-run-path@npm:^2.0.0": - version: 2.0.2 - resolution: "npm-run-path@npm:2.0.2" - dependencies: - path-key: "npm:^2.0.0" - checksum: 10c0/95549a477886f48346568c97b08c4fda9cdbf7ce8a4fbc2213f36896d0d19249e32d68d7451bdcbca8041b5fba04a6b2c4a618beaf19849505c05b700740f1de - languageName: node - linkType: hard - -"nth-check@npm:^2.0.1": - version: 2.1.1 - resolution: "nth-check@npm:2.1.1" - dependencies: - boolbase: "npm:^1.0.0" - checksum: 10c0/5fee7ff309727763689cfad844d979aedd2204a817fbaaf0e1603794a7c20db28548d7b024692f953557df6ce4a0ee4ae46cd8ebd9b36cfb300b9226b567c479 - languageName: node - linkType: hard - "oauth4webapi@npm:^3.8.2": version: 3.8.3 resolution: "oauth4webapi@npm:3.8.3" @@ -3423,13 +2280,6 @@ __metadata: languageName: node linkType: hard -"object-assign@npm:^4.1.1": - version: 4.1.1 - resolution: "object-assign@npm:4.1.1" - checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 - languageName: node - linkType: hard - "object-inspect@npm:^1.13.3, object-inspect@npm:^1.13.4": version: 1.13.4 resolution: "object-inspect@npm:1.13.4" @@ -3511,16 +2361,6 @@ __metadata: languageName: node linkType: hard -"open@npm:7": - version: 7.4.2 - resolution: "open@npm:7.4.2" - dependencies: - is-docker: "npm:^2.0.0" - is-wsl: "npm:^2.1.1" - checksum: 10c0/77573a6a68f7364f3a19a4c80492712720746b63680ee304555112605ead196afe91052bd3c3d165efdf4e9d04d255e87de0d0a77acec11ef47fd5261251813f - languageName: node - linkType: hard - "openid-client@npm:^6.1.3": version: 6.8.1 resolution: "openid-client@npm:6.8.1" @@ -3556,22 +2396,6 @@ __metadata: languageName: node linkType: hard -"p-event@npm:4.2.0": - version: 4.2.0 - resolution: "p-event@npm:4.2.0" - dependencies: - p-timeout: "npm:^3.1.0" - checksum: 10c0/f1b6a2fb13d47f2a8afc00150da5ece0d28940ce3d8fa562873e091d3337d298e78fee9cb18b768598ff1d11df608b2ae23868309ff6405b864a2451ccd6d25a - languageName: node - linkType: hard - -"p-finally@npm:^1.0.0": - version: 1.0.0 - resolution: "p-finally@npm:1.0.0" - checksum: 10c0/6b8552339a71fe7bd424d01d8451eea92d379a711fc62f6b2fe64cad8a472c7259a236c9a22b4733abca0b5666ad503cb497792a0478c5af31ded793d00937e7 - languageName: node - linkType: hard - "p-limit@npm:^3.0.2": version: 3.1.0 resolution: "p-limit@npm:3.1.0" @@ -3590,24 +2414,6 @@ __metadata: languageName: node linkType: hard -"p-timeout@npm:^3.0.0, p-timeout@npm:^3.1.0": - version: 3.2.0 - resolution: "p-timeout@npm:3.2.0" - dependencies: - p-finally: "npm:^1.0.0" - checksum: 10c0/524b393711a6ba8e1d48137c5924749f29c93d70b671e6db761afa784726572ca06149c715632da8f70c090073afb2af1c05730303f915604fd38ee207b70a61 - languageName: node - linkType: hard - -"p-wait-for@npm:3.2.0": - version: 3.2.0 - resolution: "p-wait-for@npm:3.2.0" - dependencies: - p-timeout: "npm:^3.0.0" - checksum: 10c0/38261cfac4af3ca25b0b5b9d44ef88366cef2fdd16c7a72c27c97fcab5dc8948593b6983f839dee5342316b7d24b523d4499ed834214c66619a717442e1b08f0 - languageName: node - linkType: hard - "pai-alert-handler@workspace:.": version: 0.0.0-use.local resolution: "pai-alert-handler@workspace:." @@ -3617,8 +2423,6 @@ __metadata: body-parser: "npm:^2.2.1" cookie-parser: "npm:^1.4.7" dotenv: "npm:^16.5.0" - ejs: "npm:^3.1.10" - email-templates: "npm:^12.0.2" eslint: "npm:^9.26.0" eslint-config-prettier: "npm:~10.1.5" eslint-plugin-import: "npm:^2.31.0" @@ -3630,7 +2434,6 @@ __metadata: express-bearer-token: "npm:^3.0.0" joi: "npm:^17.13.3" module-alias: "npm:^2.2.3" - nodemailer: "npm:^8.0.5" prettier: "npm:~3.5.3" winston: "npm:2" ws: "npm:^8.20.1" @@ -3646,35 +2449,6 @@ __metadata: languageName: node linkType: hard -"parse5-htmlparser2-tree-adapter@npm:^7.0.0": - version: 7.1.0 - resolution: "parse5-htmlparser2-tree-adapter@npm:7.1.0" - dependencies: - domhandler: "npm:^5.0.3" - parse5: "npm:^7.0.0" - checksum: 10c0/e5a4e0b834c84c9e244b5749f8d007f4baaeafac7a1da2c54be3421ffd9ef8fdec4f198bf55cda22e88e6ba95e9943f6ed5aa3ae5900b39972ebf5dc8c3f4722 - languageName: node - linkType: hard - -"parse5@npm:^7.0.0": - version: 7.3.0 - resolution: "parse5@npm:7.3.0" - dependencies: - entities: "npm:^6.0.0" - checksum: 10c0/7fd2e4e247e85241d6f2a464d0085eed599a26d7b0a5233790c49f53473232eb85350e8133344d9b3fd58b89339e7ad7270fe1f89d28abe50674ec97b87f80b5 - languageName: node - linkType: hard - -"parseley@npm:^0.12.0": - version: 0.12.1 - resolution: "parseley@npm:0.12.1" - dependencies: - leac: "npm:^0.6.0" - peberminta: "npm:^0.9.0" - checksum: 10c0/df3de74172b72305b867298a71e5882c413df75d30f2bafb5fb70779dfd349c5e4db03441fbf8ca83da8e4aa72bd0ef2b5c73086c4825d27d1c649d61bc0bcc0 - languageName: node - linkType: hard - "parseurl@npm:^1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" @@ -3689,13 +2463,6 @@ __metadata: languageName: node linkType: hard -"path-key@npm:^2.0.0, path-key@npm:^2.0.1": - version: 2.0.1 - resolution: "path-key@npm:2.0.1" - checksum: 10c0/dd2044f029a8e58ac31d2bf34c34b93c3095c1481942960e84dd2faa95bbb71b9b762a106aead0646695330936414b31ca0bd862bf488a937ad17c8c5d73b32b - languageName: node - linkType: hard - "path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" @@ -3717,27 +2484,6 @@ __metadata: languageName: node linkType: hard -"peberminta@npm:^0.9.0": - version: 0.9.0 - resolution: "peberminta@npm:0.9.0" - checksum: 10c0/59c2c39269d9f7f559cf44582f1c0503524c6a9bc3478e0309adba2b41c71ab98745a239a4e6f98f46105291256e6d8f12ae9860d9f016b1c9a6f52c0b63bfe7 - languageName: node - linkType: hard - -"picocolors@npm:^1.1.1": - version: 1.1.1 - resolution: "picocolors@npm:1.1.1" - checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 - languageName: node - linkType: hard - -"pify@npm:^4.0.1": - version: 4.0.1 - resolution: "pify@npm:4.0.1" - checksum: 10c0/6f9d404b0d47a965437403c9b90eca8bb2536407f03de165940e62e72c8c8b75adda5516c6b9b23675a5877cc0bcac6bdfb0ef0e39414cd2476d5495da40e7cf - languageName: node - linkType: hard - "possible-typed-array-names@npm:^1.0.0": version: 1.1.0 resolution: "possible-typed-array-names@npm:1.1.0" @@ -3770,34 +2516,6 @@ __metadata: languageName: node linkType: hard -"preview-email@npm:*": - version: 3.1.0 - resolution: "preview-email@npm:3.1.0" - dependencies: - ci-info: "npm:^3.8.0" - display-notification: "npm:2.0.0" - fixpack: "npm:^4.0.0" - get-port: "npm:5.1.1" - mailparser: "npm:^3.7.1" - nodemailer: "npm:^6.9.13" - open: "npm:7" - p-event: "npm:4.2.0" - p-wait-for: "npm:3.2.0" - pug: "npm:^3.0.3" - uuid: "npm:^9.0.1" - checksum: 10c0/09bdcdfa357615e4d03c9b9cb5bcf65069b8457c2148b8c727b5208bfae622cdad1f69cbba491c9bfbe4fe1987a08138b15344b8ff15e8a199260a69534f4d08 - languageName: node - linkType: hard - -"promise@npm:^7.0.1": - version: 7.3.1 - resolution: "promise@npm:7.3.1" - dependencies: - asap: "npm:~2.0.3" - checksum: 10c0/742e5c0cc646af1f0746963b8776299701ad561ce2c70b49365d62c8db8ea3681b0a1bf0d4e2fe07910bf72f02d39e51e8e73dc8d7503c3501206ac908be107f - languageName: node - linkType: hard - "proxy-addr@npm:^2.0.7": version: 2.0.7 resolution: "proxy-addr@npm:2.0.7" @@ -3815,133 +2533,6 @@ __metadata: languageName: node linkType: hard -"pug-attrs@npm:^3.0.0": - version: 3.0.0 - resolution: "pug-attrs@npm:3.0.0" - dependencies: - constantinople: "npm:^4.0.1" - js-stringify: "npm:^1.0.2" - pug-runtime: "npm:^3.0.0" - checksum: 10c0/28178e91c05e8eb9130861c78dccc61eae3e1610931346065bd32ad0b08b023a8dcf2470c3b2409ba45a5098d6d7ed15687717e91cf77770c6381a18626e5194 - languageName: node - linkType: hard - -"pug-code-gen@npm:^3.0.3": - version: 3.0.3 - resolution: "pug-code-gen@npm:3.0.3" - dependencies: - constantinople: "npm:^4.0.1" - doctypes: "npm:^1.1.0" - js-stringify: "npm:^1.0.2" - pug-attrs: "npm:^3.0.0" - pug-error: "npm:^2.1.0" - pug-runtime: "npm:^3.0.1" - void-elements: "npm:^3.1.0" - with: "npm:^7.0.0" - checksum: 10c0/517a93930dbc80bc7fa5f60ff324229a07cc5ab70ed9d344ce105e2fe24de68db5121c8457a9ba99cdc8d48dd18779dd34956ebfcab009b3c1c6843a3cade109 - languageName: node - linkType: hard - -"pug-error@npm:^2.0.0, pug-error@npm:^2.1.0": - version: 2.1.0 - resolution: "pug-error@npm:2.1.0" - checksum: 10c0/bbce339b17fab9890de84975c0cd8723a847bf65f35653d3ebcf77018e8ad91529d56e978ab80f4c64c9f4f07ef9e56e7a9fda3be44249c344a93ba11fccff79 - languageName: node - linkType: hard - -"pug-filters@npm:^4.0.0": - version: 4.0.0 - resolution: "pug-filters@npm:4.0.0" - dependencies: - constantinople: "npm:^4.0.1" - jstransformer: "npm:1.0.0" - pug-error: "npm:^2.0.0" - pug-walk: "npm:^2.0.0" - resolve: "npm:^1.15.1" - checksum: 10c0/7ddd62f5eb97f5242858bd56d93ffed387fef3742210a53770c980020cf91a34384b84b7fc8f0de185b43dfa77de2c4d0f63f575a4c5b3887fdef4e64b8d559d - languageName: node - linkType: hard - -"pug-lexer@npm:^5.0.1": - version: 5.0.1 - resolution: "pug-lexer@npm:5.0.1" - dependencies: - character-parser: "npm:^2.2.0" - is-expression: "npm:^4.0.0" - pug-error: "npm:^2.0.0" - checksum: 10c0/24195a5681953ab91c6a3ccd80a643f760dddb65e2f266bf8ccba145018ba0271536efe1572de2c2224163eb00873c2f1df0ad7ea7aa8bcbf79a66b586ca8435 - languageName: node - linkType: hard - -"pug-linker@npm:^4.0.0": - version: 4.0.0 - resolution: "pug-linker@npm:4.0.0" - dependencies: - pug-error: "npm:^2.0.0" - pug-walk: "npm:^2.0.0" - checksum: 10c0/db754ff34cdd4ba9d9e2d9535cce2a74178f2172e848a5fa6381907cb5bfaa0d39d4cc3eb29893d35fc1c417e83ae3cfd434640ba7d3b635c63199104fae976c - languageName: node - linkType: hard - -"pug-load@npm:^3.0.0": - version: 3.0.0 - resolution: "pug-load@npm:3.0.0" - dependencies: - object-assign: "npm:^4.1.1" - pug-walk: "npm:^2.0.0" - checksum: 10c0/2a7659dfaf9872dd25d851f85e4c27fa447d907b1db3540030cd844614159ff181e067d8f2bedf90eb6b5b1ff03747253859ecbbb822e40f4834b15591d4e108 - languageName: node - linkType: hard - -"pug-parser@npm:^6.0.0": - version: 6.0.0 - resolution: "pug-parser@npm:6.0.0" - dependencies: - pug-error: "npm:^2.0.0" - token-stream: "npm:1.0.0" - checksum: 10c0/faa6cec43afdeb2705eb8c68dfdb2e65836238df8043ae55295ffb72450b8c7a990ea1be60adbde19f58988b9e1d18a84ea42453e2c4f104d0031f78fda737b2 - languageName: node - linkType: hard - -"pug-runtime@npm:^3.0.0, pug-runtime@npm:^3.0.1": - version: 3.0.1 - resolution: "pug-runtime@npm:3.0.1" - checksum: 10c0/0db8166d2e17695a6941d1de81dcb21c8a52921299b1e03bf6a0a3d2b0036b51cf98101b3937b731c745e8d3e0268cb0b728c02f61a80a25fcfaa15c594fb1be - languageName: node - linkType: hard - -"pug-strip-comments@npm:^2.0.0": - version: 2.0.0 - resolution: "pug-strip-comments@npm:2.0.0" - dependencies: - pug-error: "npm:^2.0.0" - checksum: 10c0/ca498adedaeba51dd836b20129bbd161e2d5a397a2baaa553b1e74e888caa2258dcd7326396fc6f8fed8c7b7f906cfebc4c386ccbee8888a27b2ca0d4d86d206 - languageName: node - linkType: hard - -"pug-walk@npm:^2.0.0": - version: 2.0.0 - resolution: "pug-walk@npm:2.0.0" - checksum: 10c0/005d63177bcf057f5a618b182f6d4600afb039200b07a381a0d89288a2b3126e763a0a6c40b758eab0731c8e63cad1bbcb46d96803b9ae9cfc879f6ef5a0f8f4 - languageName: node - linkType: hard - -"pug@npm:^3.0.3": - version: 3.0.3 - resolution: "pug@npm:3.0.3" - dependencies: - pug-code-gen: "npm:^3.0.3" - pug-filters: "npm:^4.0.0" - pug-lexer: "npm:^5.0.1" - pug-linker: "npm:^4.0.0" - pug-load: "npm:^3.0.0" - pug-parser: "npm:^6.0.0" - pug-runtime: "npm:^3.0.1" - pug-strip-comments: "npm:^2.0.0" - checksum: 10c0/bda53d3a6deea1d348cd5ab17427c77f3d74165510ad16f4fd182cc63618ad09388ecda317d17122ee890c8a68f9a54b96221fce7f44a332e463fdbb10a9d1e2 - languageName: node - linkType: hard - "pump@npm:^3.0.0": version: 3.0.3 resolution: "pump@npm:3.0.3" @@ -3952,14 +2543,7 @@ __metadata: languageName: node linkType: hard -"punycode.js@npm:2.3.1": - version: 2.3.1 - resolution: "punycode.js@npm:2.3.1" - checksum: 10c0/1d12c1c0e06127fa5db56bd7fdf698daf9a78104456a6b67326877afc21feaa821257b171539caedd2f0524027fa38e67b13dd094159c8d70b6d26d2bea4dfdb - languageName: node - linkType: hard - -"punycode@npm:^2.1.0, punycode@npm:^2.1.1": +"punycode@npm:^2.1.0": version: 2.3.1 resolution: "punycode@npm:2.3.1" checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 @@ -3994,20 +2578,6 @@ __metadata: languageName: node linkType: hard -"rc@npm:^1.2.8": - version: 1.2.8 - resolution: "rc@npm:1.2.8" - dependencies: - deep-extend: "npm:^0.6.0" - ini: "npm:~1.3.0" - minimist: "npm:^1.2.0" - strip-json-comments: "npm:~2.0.1" - bin: - rc: ./cli.js - checksum: 10c0/24a07653150f0d9ac7168e52943cc3cb4b7a22c0e43c7dff3219977c2fdca5a2760a304a029c20811a0e79d351f57d46c9bde216193a0f73978496afc2b85b15 - languageName: node - linkType: hard - "reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": version: 1.0.10 resolution: "reflect.getprototypeof@npm:1.0.10" @@ -4052,7 +2622,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.1, resolve@npm:^1.15.1, resolve@npm:^1.22.4": +"resolve@npm:^1.10.1, resolve@npm:^1.22.4": version: 1.22.11 resolution: "resolve@npm:1.22.11" dependencies: @@ -4065,7 +2635,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.10.1#optional!builtin, resolve@patch:resolve@npm%3A^1.15.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": +"resolve@patch:resolve@npm%3A^1.10.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": version: 1.22.11 resolution: "resolve@patch:resolve@npm%3A1.22.11#optional!builtin::version=1.22.11&hash=c3c19d" dependencies: @@ -4098,15 +2668,6 @@ __metadata: languageName: node linkType: hard -"run-applescript@npm:^3.0.0": - version: 3.2.0 - resolution: "run-applescript@npm:3.2.0" - dependencies: - execa: "npm:^0.10.0" - checksum: 10c0/5f5a75de0bed917d7673125fb8631ff1d50c898d4f0b8fff57e6508dafe7a2529e1cfd7a3c3e4f981aec1294c95b4e37124fd33cd8cd54fbca1e2b9c39d77473 - languageName: node - linkType: hard - "safe-array-concat@npm:^1.1.3": version: 1.1.3 resolution: "safe-array-concat@npm:1.1.3" @@ -4120,13 +2681,6 @@ __metadata: languageName: node linkType: hard -"safe-identifier@npm:^0.4.1": - version: 0.4.2 - resolution: "safe-identifier@npm:0.4.2" - checksum: 10c0/a6b0cdb5347e48c5ea4ddf4cdca5359b12529a11a7368225c39f882fcc0e679c81e82e3b13e36bd27ba7bdec9286f4cc062e3e527464d93ba61290b6e0bc6747 - languageName: node - linkType: hard - "safe-push-apply@npm:^1.0.0": version: 1.0.0 resolution: "safe-push-apply@npm:1.0.0" @@ -4155,24 +2709,6 @@ __metadata: languageName: node linkType: hard -"selderee@npm:^0.11.0": - version: 0.11.0 - resolution: "selderee@npm:0.11.0" - dependencies: - parseley: "npm:^0.12.0" - checksum: 10c0/c2ad8313a0dbf3c0b74752a8d03cfbc0931ae77a36679cdb64733eb732c1762f95a5174249bf7e8b8103874cb0e013a030f9c8b72f5d41e62f1d847d4a845d39 - languageName: node - linkType: hard - -"semver@npm:^5.5.0": - version: 5.7.2 - resolution: "semver@npm:5.7.2" - bin: - semver: bin/semver - checksum: 10c0/e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 - languageName: node - linkType: hard - "semver@npm:^6.1.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" @@ -4257,15 +2793,6 @@ __metadata: languageName: node linkType: hard -"shebang-command@npm:^1.2.0": - version: 1.2.0 - resolution: "shebang-command@npm:1.2.0" - dependencies: - shebang-regex: "npm:^1.0.0" - checksum: 10c0/7b20dbf04112c456b7fc258622dafd566553184ac9b6938dd30b943b065b21dabd3776460df534cc02480db5e1b6aec44700d985153a3da46e7db7f9bd21326d - languageName: node - linkType: hard - "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -4275,13 +2802,6 @@ __metadata: languageName: node linkType: hard -"shebang-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "shebang-regex@npm:1.0.0" - checksum: 10c0/9abc45dee35f554ae9453098a13fdc2f1730e525a5eb33c51f096cc31f6f10a4b38074c1ebf354ae7bffa7229506083844008dfc3bb7818228568c0b2dc1fff2 - languageName: node - linkType: hard - "shebang-regex@npm:^3.0.0": version: 3.0.0 resolution: "shebang-regex@npm:3.0.0" @@ -4337,20 +2857,6 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.0": - version: 3.0.7 - resolution: "signal-exit@npm:3.0.7" - checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 - languageName: node - linkType: hard - -"slick@npm:^1.12.2": - version: 1.12.2 - resolution: "slick@npm:1.12.2" - checksum: 10c0/fea97c36b2bdcd1b80caea150cd8135dc9d3ffe659bbe04fa6f4b4dff373f5d5aef09a8ef384b331c3fdd9567faf447b75b850ab35d2c69ff8a8a92def3d49e1 - languageName: node - linkType: hard - "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" @@ -4466,13 +2972,6 @@ __metadata: languageName: node linkType: hard -"strip-eof@npm:^1.0.0": - version: 1.0.0 - resolution: "strip-eof@npm:1.0.0" - checksum: 10c0/f336beed8622f7c1dd02f2cbd8422da9208fae81daf184f73656332899978919d5c0ca84dc6cfc49ad1fc4dd7badcde5412a063cf4e0d7f8ed95a13a63f68f45 - languageName: node - linkType: hard - "strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" @@ -4480,13 +2979,6 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:~2.0.1": - version: 2.0.1 - resolution: "strip-json-comments@npm:2.0.1" - checksum: 10c0/b509231cbdee45064ff4f9fd73609e2bcc4e84a4d508e9dd0f31f70356473fde18abfb5838c17d56fb236f5a06b102ef115438de0600b749e818a35fbbc48c43 - languageName: node - linkType: hard - "supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" @@ -4549,22 +3041,6 @@ __metadata: languageName: node linkType: hard -"titleize@npm:2": - version: 2.1.0 - resolution: "titleize@npm:2.1.0" - checksum: 10c0/5f7786ec5fa7813a7ecff9d2134e218bdee6b046b159471f647e8c1b904ec0fc8f6cdd42ca2af34f589572c7f05ca40a353c233b0d97a13e433068606059f00f - languageName: node - linkType: hard - -"tlds@npm:1.261.0, tlds@npm:^1.231.0": - version: 1.261.0 - resolution: "tlds@npm:1.261.0" - bin: - tlds: bin.js - checksum: 10c0/ce05d266618312dd52efe0c958ebd668da70b9b752b7ec1f1b8c4b8fabc6e0f044159f80fec6c3a78df02572afbeb343208df7ef8e83a43e9f8e6c26134c76ee - languageName: node - linkType: hard - "toidentifier@npm:~1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" @@ -4572,13 +3048,6 @@ __metadata: languageName: node linkType: hard -"token-stream@npm:1.0.0": - version: 1.0.0 - resolution: "token-stream@npm:1.0.0" - checksum: 10c0/c1924a89686fc035d579cbe856da12306571d5fe7408eeeebe80df7c25c5cc644b8ae102d5cbc0f085d0e105f391d1a48dc0e568520434c5b444ea6c7de2b822 - languageName: node - linkType: hard - "tr46@npm:~0.0.3": version: 0.0.3 resolution: "tr46@npm:0.0.3" @@ -4671,13 +3140,6 @@ __metadata: languageName: node linkType: hard -"uc.micro@npm:^2.0.0": - version: 2.1.0 - resolution: "uc.micro@npm:2.1.0" - checksum: 10c0/8862eddb412dda76f15db8ad1c640ccc2f47cdf8252a4a30be908d535602c8d33f9855dfcccb8b8837855c1ce1eaa563f7fa7ebe3c98fd0794351aab9b9c55fa - languageName: node - linkType: hard - "unbox-primitive@npm:^1.1.0": version: 1.1.0 resolution: "unbox-primitive@npm:1.1.0" @@ -4690,22 +3152,6 @@ __metadata: languageName: node linkType: hard -"underscore.deep@npm:~0.5.1": - version: 0.5.3 - resolution: "underscore.deep@npm:0.5.3" - peerDependencies: - underscore: 1.x - checksum: 10c0/e11e05a456118d9d78fcaa1f892f29fdd74051c249f351052ed75a3124df3ecd0fd3bbb4f56b01c63f251514873ea862d54db131034a3abdcd815cb50861416a - languageName: node - linkType: hard - -"underscore@npm:^1.13.8": - version: 1.13.8 - resolution: "underscore@npm:1.13.8" - checksum: 10c0/6677688daeda30484823e77c0b89ce4dcf29964a77d5a06f37299c007ab4bb1c66a0ff75e0d274620b62a1fe2a6ba29879f8214533ca611d71a1ae504f2bfc9b - languageName: node - linkType: hard - "undici-types@npm:~6.21.0": version: 6.21.0 resolution: "undici-types@npm:6.21.0" @@ -4736,22 +3182,6 @@ __metadata: languageName: node linkType: hard -"uuid@npm:11.1.1": - version: 11.1.1 - resolution: "uuid@npm:11.1.1" - bin: - uuid: dist/esm/bin/uuid - checksum: 10c0/9e3af58eba872ece5a5e76f4773a94fc78a0ef2c2444c38dbe6b42f41dadf76c01850fd783604f27986f6195e6286aef064d45987d401b2a33127b98ddf7c0c5 - languageName: node - linkType: hard - -"valid-data-url@npm:^3.0.0": - version: 3.0.1 - resolution: "valid-data-url@npm:3.0.1" - checksum: 10c0/ffc7cac681976ca2db01003dc14286f75241309e90d96e505580469125c83c2de6b5203f0222226cb08f6daf0aff7de9855655c28a64e8590e7b58c01694a896 - languageName: node - linkType: hard - "vary@npm:^1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" @@ -4759,27 +3189,6 @@ __metadata: languageName: node linkType: hard -"void-elements@npm:^3.1.0": - version: 3.1.0 - resolution: "void-elements@npm:3.1.0" - checksum: 10c0/0b8686f9f9aa44012e9bd5eabf287ae0cde409b9a2854c5a2335cb83920c957668ac5876e3f0d158dd424744ac411a7270e64128556b451ed3bec875ef18534d - languageName: node - linkType: hard - -"web-resource-inliner@npm:^6.0.1": - version: 6.0.1 - resolution: "web-resource-inliner@npm:6.0.1" - dependencies: - ansi-colors: "npm:^4.1.1" - escape-goat: "npm:^3.0.0" - htmlparser2: "npm:^5.0.0" - mime: "npm:^2.4.6" - node-fetch: "npm:^2.6.0" - valid-data-url: "npm:^3.0.0" - checksum: 10c0/b4b457de2448255100797b1eaefa0f62a8846b2452de8495b9ec17d3e223ebb4848a31b11a645e3541a5b114eb9f201219cda2f99d1b513631777f8c89d1c8a6 - languageName: node - linkType: hard - "webidl-conversions@npm:^3.0.0": version: 3.0.1 resolution: "webidl-conversions@npm:3.0.1" @@ -4858,17 +3267,6 @@ __metadata: languageName: node linkType: hard -"which@npm:^1.2.9": - version: 1.3.1 - resolution: "which@npm:1.3.1" - dependencies: - isexe: "npm:^2.0.0" - bin: - which: ./bin/which - checksum: 10c0/e945a8b6bbf6821aaaef7f6e0c309d4b615ef35699576d5489b4261da9539f70393c6b2ce700ee4321c18f914ebe5644bc4631b15466ffbaad37d83151f6af59 - languageName: node - linkType: hard - "which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -4894,18 +3292,6 @@ __metadata: languageName: node linkType: hard -"with@npm:^7.0.0": - version: 7.0.2 - resolution: "with@npm:7.0.2" - dependencies: - "@babel/parser": "npm:^7.9.6" - "@babel/types": "npm:^7.9.6" - assert-never: "npm:^1.2.1" - babel-walk: "npm:3.0.0-canary-5" - checksum: 10c0/99289e49afc4b1776afae0ef85e84cfa775e8e07464d2b9853a31b0822347031d1cf77f287d25adc8c3f81e4fa68f4ee31526a9c95d4981ba08a1fe24dee111a - languageName: node - linkType: hard - "word-wrap@npm:^1.2.5": version: 1.2.5 resolution: "word-wrap@npm:1.2.5" diff --git a/src/alert-manager/src/job-status-change-notification/package.json b/src/alert-manager/src/job-status-change-notification/package.json index 2dbf4cdd..11853ce1 100644 --- a/src/alert-manager/src/job-status-change-notification/package.json +++ b/src/alert-manager/src/job-status-change-notification/package.json @@ -54,9 +54,7 @@ "flatted": "^3.4.2", "underscore": ">=1.13.8", "path-to-regexp": ">=8.4.0", - "nodemailer": ">=8.0.4", "brace-expansion": "5.0.6", - "mailparser": ">=3.9.3", "validator": "^13.15.22", "semver": "^6.3.1", "follow-redirects": "^1.16.0",