{JSON.stringify(
diff --git a/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.component.jsx b/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.component.jsx
index ee644654a..325a16ffc 100644
--- a/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.component.jsx
+++ b/client/src/components/jobs-detail-header-actions/jobs-detail-header-actions.component.jsx
@@ -4,12 +4,12 @@ import { useSplitTreatments } from "@splitsoftware/splitio-react";
import { Button, Card, Dropdown, Form, Input, Modal, Popconfirm, Popover, Select, Space } from "antd";
import axios from "axios";
import parsePhoneNumber from "libphonenumber-js";
-import { useContext, useMemo, useState } from "react";
+import { useMemo, useState } from "react";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
import { Link, useNavigate } from "react-router-dom";
import { createStructuredSelector } from "reselect";
-import SocketContext from "../../contexts/SocketIO/socketContext.jsx";
+import { useSocket } from "../../contexts/SocketIO/useSocket.jsx";
import { auth, logImEXEvent } from "../../firebase/firebase.utils";
import { CANCEL_APPOINTMENTS_BY_JOB_ID, INSERT_MANUAL_APPT } from "../../graphql/appointments.queries";
import { GET_CURRENT_QUESTIONSET_ID, INSERT_CSI } from "../../graphql/csi.queries";
@@ -130,7 +130,7 @@ export function JobsDetailHeaderActions({
const [updateJob] = useMutation(UPDATE_JOB);
const [voidJob] = useMutation(VOID_JOB);
const [cancelAllAppointments] = useMutation(CANCEL_APPOINTMENTS_BY_JOB_ID);
- const { socket } = useContext(SocketContext);
+ const { socket } = useSocket();
const notification = useNotification();
const {
diff --git a/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx b/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx
index ffe729b51..dd49ffee0 100644
--- a/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx
+++ b/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx
@@ -119,7 +119,7 @@ export function JobsDetailHeader({ job, bodyshop, disabled }) {
{job.cccontracts.map((c, index) => (
-
+
{`${c.agreementnumber} - ${c.courtesycar.fleetnumber} ${c.courtesycar.year} ${c.courtesycar.make} ${c.courtesycar.model}`}
{index !== job.cccontracts.length - 1 ? "," : null}
diff --git a/client/src/components/notification-center/notification-center.component.jsx b/client/src/components/notification-center/notification-center.component.jsx
new file mode 100644
index 000000000..5d9371f49
--- /dev/null
+++ b/client/src/components/notification-center/notification-center.component.jsx
@@ -0,0 +1,103 @@
+import { Virtuoso } from "react-virtuoso";
+import { Alert, Badge, Button, Space, Spin, Tooltip, Typography } from "antd";
+import { CheckCircleFilled, CheckCircleOutlined, EyeFilled, EyeOutlined } from "@ant-design/icons";
+import { useTranslation } from "react-i18next";
+import { Link } from "react-router-dom";
+import "./notification-center.styles.scss";
+import day from "../../utils/day.js";
+
+const { Text, Title } = Typography;
+
+const NotificationCenterComponent = ({
+ visible,
+ onClose,
+ notifications,
+ loading,
+ error,
+ showUnreadOnly,
+ toggleUnreadOnly,
+ markAllRead,
+ loadMore,
+ onNotificationClick,
+ unreadCount
+}) => {
+ const { t } = useTranslation();
+
+ const renderNotification = (index, notification) => {
+ return (
+ !notification.read && onNotificationClick(notification.id)}
+ >
+
+
+
+ {
+ e.stopPropagation();
+ if (!notification.read) {
+ onNotificationClick(notification.id);
+ }
+ }}
+ className="ro-number"
+ >
+ {t("notifications.labels.ro-number", { ro_number: notification.roNumber })}
+
+
+ {day(notification.created_at).fromNow()}
+
+
+
+
+ {notification.scenarioText.map((text, idx) => (
+ - {text}
+ ))}
+
+
+
+
+
+ );
+ };
+
+ return (
+
+
+
+ {t("notifications.labels.notification-center")}
+ {loading && !error && }
+
+
+
+ : }
+ onClick={() => toggleUnreadOnly(!showUnreadOnly)}
+ className={showUnreadOnly ? "active" : ""}
+ />
+
+
+ : }
+ onClick={markAllRead}
+ disabled={!unreadCount}
+ />
+
+
+
+ {error &&
onClose()} />}
+
+
+ );
+};
+
+export default NotificationCenterComponent;
diff --git a/client/src/components/notification-center/notification-center.container.jsx b/client/src/components/notification-center/notification-center.container.jsx
new file mode 100644
index 000000000..dfadf3a84
--- /dev/null
+++ b/client/src/components/notification-center/notification-center.container.jsx
@@ -0,0 +1,181 @@
+import { useCallback, useEffect, useMemo, useState } from "react";
+import { useQuery } from "@apollo/client";
+import { connect } from "react-redux";
+import NotificationCenterComponent from "./notification-center.component";
+import { GET_NOTIFICATIONS } from "../../graphql/notifications.queries";
+import { INITIAL_NOTIFICATIONS, useSocket } from "../../contexts/SocketIO/useSocket.jsx";
+import { createStructuredSelector } from "reselect";
+import { selectBodyshop } from "../../redux/user/user.selectors.js";
+import day from "../../utils/day.js";
+
+// This will be used to poll for notifications when the socket is disconnected
+const NOTIFICATION_POLL_INTERVAL_SECONDS = 60;
+
+export function NotificationCenterContainer({ visible, onClose, bodyshop, unreadCount }) {
+ const [showUnreadOnly, setShowUnreadOnly] = useState(false);
+ const [notifications, setNotifications] = useState([]);
+ const [error, setError] = useState(null);
+ const { isConnected, markNotificationRead, markAllNotificationsRead } = useSocket();
+
+ const userAssociationId = bodyshop?.associations?.[0]?.id;
+
+ const baseWhereClause = useMemo(() => {
+ return { associationid: { _eq: userAssociationId } };
+ }, [userAssociationId]);
+
+ const whereClause = useMemo(() => {
+ return showUnreadOnly ? { ...baseWhereClause, read: { _is_null: true } } : baseWhereClause;
+ }, [baseWhereClause, showUnreadOnly]);
+
+ const {
+ data,
+ fetchMore,
+ loading,
+ error: queryError,
+ refetch
+ } = useQuery(GET_NOTIFICATIONS, {
+ variables: {
+ limit: INITIAL_NOTIFICATIONS,
+ offset: 0,
+ where: whereClause
+ },
+ fetchPolicy: "cache-and-network",
+ notifyOnNetworkStatusChange: true,
+ pollInterval: isConnected ? 0 : day.duration(NOTIFICATION_POLL_INTERVAL_SECONDS, "seconds").asMilliseconds(),
+ skip: !userAssociationId,
+ onError: (err) => {
+ setError(err.message);
+ console.error(`Error polling Notifications in notification-center: ${err?.message || ""}`);
+ setTimeout(() => refetch(), day.duration(2, "seconds").asMilliseconds());
+ }
+ });
+
+ useEffect(() => {
+ if (data?.notifications) {
+ const processedNotifications = data.notifications
+ .map((notif) => {
+ let scenarioText;
+ let scenarioMeta;
+ try {
+ scenarioText = notif.scenario_text ? JSON.parse(notif.scenario_text) : [];
+ scenarioMeta = notif.scenario_meta ? JSON.parse(notif.scenario_meta) : {};
+ } catch (e) {
+ console.error("Error parsing JSON for notification:", notif.id, e);
+ scenarioText = [notif.fcm_text || "Invalid notification data"];
+ scenarioMeta = {};
+ }
+ if (!Array.isArray(scenarioText)) scenarioText = [scenarioText];
+ const roNumber = notif.job.ro_number;
+ if (!Array.isArray(scenarioMeta)) scenarioMeta = [scenarioMeta];
+ return {
+ id: notif.id,
+ jobid: notif.jobid,
+ associationid: notif.associationid,
+ scenarioText,
+ scenarioMeta,
+ roNumber,
+ created_at: notif.created_at,
+ read: notif.read,
+ __typename: notif.__typename
+ };
+ })
+ .sort((a, b) => new Date(b.created_at) - new Date(a.created_at));
+ setNotifications(processedNotifications);
+ setError(null);
+ }
+ }, [data]);
+
+ useEffect(() => {
+ if (queryError) {
+ setError(queryError.message);
+ }
+ }, [queryError]);
+
+ const loadMore = useCallback(() => {
+ if (!loading && data?.notifications.length) {
+ fetchMore({
+ variables: { offset: data.notifications.length, where: whereClause },
+ updateQuery: (prev, { fetchMoreResult }) => {
+ if (!fetchMoreResult) return prev;
+ return {
+ notifications: [...prev.notifications, ...fetchMoreResult.notifications]
+ };
+ }
+ }).catch((err) => {
+ setError(err.message);
+ console.error("Fetch more error:", err);
+ });
+ }
+ }, [data?.notifications?.length, fetchMore, loading, whereClause]);
+
+ const handleToggleUnreadOnly = (value) => {
+ setShowUnreadOnly(value);
+ };
+
+ const handleMarkAllRead = useCallback(() => {
+ markAllNotificationsRead()
+ .then(() => {
+ const timestamp = new Date().toISOString();
+ setNotifications((prev) => {
+ const updatedNotifications = prev.map((notif) =>
+ notif.read === null && notif.associationid === userAssociationId
+ ? {
+ ...notif,
+ read: timestamp
+ }
+ : notif
+ );
+ return [...updatedNotifications];
+ });
+ })
+ .catch((e) => console.error(`Error marking all notifications read: ${e?.message || ""}`));
+ }, [markAllNotificationsRead, userAssociationId]);
+
+ const handleNotificationClick = useCallback(
+ (notificationId) => {
+ markNotificationRead({
+ variables: { id: notificationId }
+ })
+ .then(() => {
+ const timestamp = new Date().toISOString();
+ setNotifications((prev) => {
+ return prev.map((notif) =>
+ notif.id === notificationId && !notif.read ? { ...notif, read: timestamp } : notif
+ );
+ });
+ })
+ .catch((e) => console.error(`Error marking notification read: ${e?.message || ""}`));
+ },
+ [markNotificationRead]
+ );
+
+ useEffect(() => {
+ if (visible && !isConnected) {
+ refetch().catch(
+ (err) => `Something went wrong re-fetching notifications in the notification-center: ${err?.message || ""}`
+ );
+ }
+ }, [visible, isConnected, refetch]);
+
+ return (
+
+ );
+}
+
+const mapStateToProps = createStructuredSelector({
+ bodyshop: selectBodyshop
+});
+
+export default connect(mapStateToProps, null)(NotificationCenterContainer);
diff --git a/client/src/components/notification-center/notification-center.styles.scss b/client/src/components/notification-center/notification-center.styles.scss
new file mode 100644
index 000000000..008642931
--- /dev/null
+++ b/client/src/components/notification-center/notification-center.styles.scss
@@ -0,0 +1,138 @@
+.notification-center {
+ position: absolute;
+ top: 64px;
+ right: 0;
+ width: 400px;
+ max-width: 400px;
+ background: #fff;
+ color: rgba(0, 0, 0, 0.85);
+ border: 1px solid #d9d9d9;
+ border-radius: 6px;
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.08), 0 3px 6px rgba(0, 0, 0, 0.06);
+ z-index: 1000;
+ display: none;
+ overflow-x: hidden; /* Prevent horizontal overflow */
+
+ &.visible {
+ display: block;
+ }
+
+ .notification-header {
+ padding: 4px 16px;
+ border-bottom: 1px solid #f0f0f0;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ background: #fafafa;
+
+ h3 {
+ margin: 0;
+ font-size: 14px;
+ color: rgba(0, 0, 0, 0.85);
+ }
+
+ .notification-controls {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+
+ .ant-btn-link {
+ padding: 0;
+ color: #1677ff;
+
+ &:hover {
+ color: #69b1ff;
+ }
+
+ &:disabled {
+ color: rgba(0, 0, 0, 0.25);
+ cursor: not-allowed;
+ }
+
+ &.active {
+ color: #0958d9;
+ }
+ }
+ }
+ }
+
+ .notification-read {
+ background: #fff;
+ color: rgba(0, 0, 0, 0.65);
+ }
+
+ .notification-unread {
+ background: #f5f5f5;
+ color: rgba(0, 0, 0, 0.85);
+ }
+
+ .notification-item {
+ padding: 8px 16px;
+ border-bottom: 1px solid #f0f0f0;
+ display: block;
+ overflow: visible;
+ width: 100%;
+ box-sizing: border-box;
+
+ .notification-content {
+ width: 100%;
+ }
+
+ .notification-title {
+ margin: 0;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ width: 100%;
+ box-sizing: border-box;
+
+ .ro-number {
+ margin: 0;
+ color: #1677ff;
+ flex-shrink: 0;
+ white-space: nowrap;
+ }
+
+ .relative-time {
+ margin: 0;
+ font-size: 12px;
+ color: rgba(0, 0, 0, 0.45);
+ white-space: nowrap;
+ flex-shrink: 0;
+ margin-left: auto;
+ }
+ }
+
+ .notification-body {
+ margin-top: 4px;
+
+ .ant-typography {
+ color: inherit;
+ }
+
+ ul {
+ margin: 0;
+ padding: 0;
+ }
+
+ li {
+ margin-bottom: 2px;
+ }
+ }
+ }
+
+ .ant-badge {
+ width: 100%; /* Ensure Badge takes full width to allow .notification-title to stretch properly */
+ }
+
+ .ant-alert {
+ margin: 8px;
+ background: #fff1f0;
+ color: rgba(0, 0, 0, 0.85);
+ border: 1px solid #ffa39e;
+
+ .ant-alert-message {
+ color: #ff4d4f;
+ }
+ }
+}
diff --git a/client/src/components/payments-generate-link/payments-generate-link.component.jsx b/client/src/components/payments-generate-link/payments-generate-link.component.jsx
index f9d84d10f..7e121621f 100644
--- a/client/src/components/payments-generate-link/payments-generate-link.component.jsx
+++ b/client/src/components/payments-generate-link/payments-generate-link.component.jsx
@@ -2,15 +2,15 @@ import { CopyFilled } from "@ant-design/icons";
import { Button, Form, message, Popover, Space } from "antd";
import axios from "axios";
import Dinero from "dinero.js";
-import { parsePhoneNumber } from "libphonenumber-js";
-import React, { useContext, useState } from "react";
+import { parsePhoneNumberWithError, ParseError } from "libphonenumber-js";
+import React, { useState } from "react";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { openChatByPhone, setMessage } from "../../redux/messaging/messaging.actions";
import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors";
import CurrencyFormItemComponent from "../form-items-formatted/currency-form-item.component";
-import SocketContext from "../../contexts/SocketIO/socketContext.jsx";
+import { useSocket } from "../../contexts/SocketIO/useSocket.jsx";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -29,22 +29,34 @@ export function PaymentsGenerateLink({ bodyshop, currentUser, callback, job, ope
const [open, setOpen] = useState(false);
const [loading, setLoading] = useState(false);
const [paymentLink, setPaymentLink] = useState(null);
- const { socket } = useContext(SocketContext);
+ const { socket } = useSocket();
const handleFinish = async ({ amount }) => {
setLoading(true);
let p;
try {
- p = parsePhoneNumber(job.ownr_ph1 || "", "CA");
+ // Updated to use parsePhoneNumberWithError
+ p = parsePhoneNumberWithError(job.ownr_ph1 || "", "CA");
} catch (error) {
- console.log("Unable to parse phone number");
+ if (error instanceof ParseError) {
+ // Handle specific parsing errors
+ console.log(`Phone number parsing failed: ${error.message}`);
+ } else {
+ // Handle other unexpected errors
+ console.log("Unexpected error while parsing phone number:", error);
+ }
}
setLoading(true);
const response = await axios.post("/intellipay/generate_payment_url", {
bodyshop,
amount: amount,
account: job.ro_number,
- comment: btoa(JSON.stringify({ payments: [{ jobid: job.id, amount }], userEmail: currentUser.email }))
+ comment: btoa(
+ JSON.stringify({
+ payments: [{ jobid: job.id, amount }],
+ userEmail: currentUser.email
+ })
+ )
});
setLoading(false);
setPaymentLink(response.data.shorUrl);
@@ -106,7 +118,20 @@ export function PaymentsGenerateLink({ bodyshop, currentUser, callback, job, ope
+ ]}
+ >
+ } />}
+ title={{displayName}}
+ description={watcher.user_email}
+ />
+
+ );
+ };
+
+ const popoverContent = (
+
+
:
}
+ onClick={handleToggleSelf}
+ loading={adding || removing}
+ >
+ {isWatching ? t("notifications.tooltips.unwatch") : t("notifications.tooltips.watch")}
+
+
+ {t("notifications.labels.watching-issue")}
+
+ {watcherLoading ?
:
}
+
+
+
{t("notifications.labels.add-watchers")}
+
jobWatchers.every((w) => w.user_email !== e.user_email))}
+ placeholder={t("notifications.labels.employee-search")}
+ value={selectedWatcher}
+ onChange={(value) => {
+ setSelectedWatcher(value);
+ handleWatcherSelect(value);
+ }}
+ />
+ {Enhanced_Payroll && bodyshop?.employee_teams?.length > 0 && (
+ <>
+
+ {t("notifications.labels.add-watchers-team")}
+
+ );
+
+ return (
+
+
+ : }
+ loading={watcherLoading}
+ />
+
+
+ );
+};
+
+export default connect(mapStateToProps)(JobWatcherToggle);
diff --git a/client/src/pages/jobs-detail/jobs-detail.page.component.jsx b/client/src/pages/jobs-detail/jobs-detail.page.component.jsx
index 726156ac4..64725e890 100644
--- a/client/src/pages/jobs-detail/jobs-detail.page.component.jsx
+++ b/client/src/pages/jobs-detail/jobs-detail.page.component.jsx
@@ -56,6 +56,8 @@ import { DateTimeFormat } from "../../utils/DateFormatter";
import dayjs from "../../utils/day";
import UndefinedToNull from "../../utils/undefinedtonull";
import { useNotification } from "../../contexts/Notifications/notificationContext.jsx";
+import JobWatcherToggle from "./job-watcher-toggle.component.jsx";
+import { useSocket } from "../../contexts/SocketIO/useSocket.jsx";
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
@@ -102,6 +104,7 @@ export function JobsDetailPage({
nextFetchPolicy: "network-only"
});
const notification = useNotification();
+ const { scenarioNotificationsOn } = useSocket();
useEffect(() => {
//form.setFieldsValue(transormJobToForm(job));
@@ -319,7 +322,13 @@ export function JobsDetailPage({
>
window.history.back()}
- title={job.ro_number || t("general.labels.na")}
+
+ title={
+
+ {scenarioNotificationsOn && }
+ {job.ro_number || t("general.labels.na")}
+
+ }
extra={menuExtra}
/>
diff --git a/client/src/pages/manage/manage.page.component.jsx b/client/src/pages/manage/manage.page.component.jsx
index bcf0ca09b..e813eaae0 100644
--- a/client/src/pages/manage/manage.page.component.jsx
+++ b/client/src/pages/manage/manage.page.component.jsx
@@ -1,7 +1,7 @@
import { FloatButton, Layout, Spin } from "antd";
// import preval from "preval.macro";
-import React, { lazy, Suspense, useContext, useEffect, useState } from "react";
+import React, { lazy, Suspense, useEffect, useState } from "react";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
import { Link, Route, Routes } from "react-router-dom";
@@ -20,7 +20,7 @@ import PartnerPingComponent from "../../components/partner-ping/partner-ping.com
import PrintCenterModalContainer from "../../components/print-center-modal/print-center-modal.container";
import ShopSubStatusComponent from "../../components/shop-sub-status/shop-sub-status.component";
import { requestForToken } from "../../firebase/firebase.utils";
-import SocketContext from "../../contexts/SocketIO/socketContext.jsx";
+import { useSocket } from "../../contexts/SocketIO/useSocket.jsx";
import { selectBodyshop, selectInstanceConflict } from "../../redux/user/user.selectors";
import UpdateAlert from "../../components/update-alert/update-alert.component";
import InstanceRenderManager from "../../utils/instanceRenderMgr.js";
@@ -29,6 +29,7 @@ import WssStatusDisplayComponent from "../../components/wss-status-display/wss-s
import { selectAlerts } from "../../redux/application/application.selectors.js";
import { addAlerts } from "../../redux/application/application.actions.js";
import { useNotification } from "../../contexts/Notifications/notificationContext.jsx";
+
const JobsPage = lazy(() => import("../jobs/jobs.page"));
const CardPaymentModalContainer = lazy(
@@ -122,7 +123,7 @@ const mapDispatchToProps = (dispatch) => ({
export function Manage({ conflict, bodyshop, alerts, setAlerts }) {
const { t } = useTranslation();
const [chatVisible] = useState(false);
- const { socket, clientId } = useContext(SocketContext);
+ const { socket, clientId } = useSocket();
const notification = useNotification();
// State to track displayed alerts
@@ -146,7 +147,7 @@ export function Manage({ conflict, bodyshop, alerts, setAlerts }) {
}
};
- fetchAlerts();
+ fetchAlerts().catch((err) => `Error fetching Bodyshop Alerts: ${err?.message || ""}`);
}, [setAlerts]);
// Use useEffect to watch for new alerts
@@ -166,7 +167,6 @@ export function Manage({ conflict, bodyshop, alerts, setAlerts }) {
description: alert.description,
type: alert.type || "info",
duration: 0,
- placement: "bottomRight",
closable: true,
onClose: () => {
// When the notification is closed, update displayed alerts state and localStorage
diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json
index 622b5ab42..ba256c680 100644
--- a/client/src/translations/en_us/common.json
+++ b/client/src/translations/en_us/common.json
@@ -3766,6 +3766,56 @@
"validation": {
"unique_vendor_name": "You must enter a unique vendor name."
}
- }
- }
+ },
+ "notifications": {
+ "labels": {
+ "notification-center": "Notification Center",
+ "scenario": "Scenario",
+ "notificationscenarios": "Job Notification Scenarios",
+ "save": "Save Scenarios",
+ "watching-issue": "Watching",
+ "add-watchers": "Add Watchers",
+ "employee-search": "Search for an Employee",
+ "teams-search": "Search for a Team",
+ "add-watchers-team": "Add Team Members",
+ "new-notification-title": "New Notification:",
+ "show-unread-only": "Show Unread",
+ "mark-all-read": "Mark Read",
+ "notification-popup-title": "Changes for Job #{{ro_number}}",
+ "ro-number": "RO #{{ro_number}}"
+ },
+ "actions": {
+ "remove": "remove"
+ },
+ "aria": {
+ "toggle": "Toggle Watching Job"
+ },
+ "tooltips": {
+ "watch": "Watch Job",
+ "unwatch": "Unwatch Job"
+ },
+ "scenarios": {
+ "job-assigned-to-me": "Job Assigned to Me",
+ "bill-posted": "Bill Posted",
+ "critical-parts-status-changed": "Critical Parts Status Changed",
+ "part-marked-back-ordered": "Part Marked Back Ordered",
+ "new-note-added": "New Note Added",
+ "supplement-imported": "Supplement Imported",
+ "schedule-dates-changed": "Schedule Dates Changed",
+ "tasks-updated-created": "Tasks Updated / Created",
+ "new-media-added-reassigned": "New Media Added or Reassigned",
+ "new-time-ticket-posted": "New Time Ticket Posted",
+ "intake-delivery-checklist-completed": "Intake or Delivery Checklist Completed",
+ "job-added-to-production": "Job Added to Production",
+ "job-status-change": "Job Status Changed",
+ "payment-collected-completed": "Payment Collected / Completed",
+ "alternate-transport-changed": "Alternate Transport Changed"
+ },
+ "channels": {
+ "app": "App",
+ "email": "Email",
+ "fcm": "Push"
+ }
+ }
+ }
}
diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json
index 04da465c4..521a8681f 100644
--- a/client/src/translations/es/common.json
+++ b/client/src/translations/es/common.json
@@ -3766,6 +3766,56 @@
"validation": {
"unique_vendor_name": ""
}
- }
- }
+ },
+ "notifications": {
+ "labels": {
+ "notification-center": "",
+ "scenario": "",
+ "notificationscenarios": "",
+ "save": "",
+ "watching-issue": "",
+ "add-watchers": "",
+ "employee-search": "",
+ "teams-search": "",
+ "add-watchers-team": "",
+ "new-notification-title": "",
+ "show-unread-only": "",
+ "mark-all-read": "",
+ "notification-popup-title": "",
+ "ro-number": ""
+ },
+ "actions": {
+ "remove": ""
+ },
+ "aria": {
+ "toggle": ""
+ },
+ "tooltips": {
+ "watch": "",
+ "unwatch": ""
+ },
+ "scenarios": {
+ "job-assigned-to-me": "",
+ "bill-posted": "",
+ "critical-parts-status-changed": "",
+ "part-marked-back-ordered": "",
+ "new-note-added": "",
+ "supplement-imported": "",
+ "schedule-dates-changed": "",
+ "tasks-updated-created": "",
+ "new-media-added-reassigned": "",
+ "new-time-ticket-posted": "",
+ "intake-delivery-checklist-completed": "",
+ "job-added-to-production": "",
+ "job-status-change": "",
+ "payment-collected-completed": "",
+ "alternate-transport-changed": ""
+ },
+ "channels": {
+ "app": "",
+ "email": "",
+ "fcm": ""
+ }
+ }
+ }
}
diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json
index 417c2061d..af75584d3 100644
--- a/client/src/translations/fr/common.json
+++ b/client/src/translations/fr/common.json
@@ -3766,6 +3766,56 @@
"validation": {
"unique_vendor_name": ""
}
- }
- }
+ },
+ "notifications": {
+ "labels": {
+ "notification-center": "",
+ "scenario": "",
+ "notificationscenarios": "",
+ "save": "",
+ "watching-issue": "",
+ "add-watchers": "",
+ "employee-search": "",
+ "teams-search": "",
+ "add-watchers-team": "",
+ "new-notification-title": "",
+ "show-unread-only": "",
+ "mark-all-read": "",
+ "notification-popup-title": "",
+ "ro-number": ""
+ },
+ "actions": {
+ "remove": ""
+ },
+ "aria": {
+ "toggle": ""
+ },
+ "tooltips": {
+ "watch": "",
+ "unwatch": ""
+ },
+ "scenarios": {
+ "job-assigned-to-me": "",
+ "bill-posted": "",
+ "critical-parts-status-changed": "",
+ "part-marked-back-ordered": "",
+ "new-note-added": "",
+ "supplement-imported": "",
+ "schedule-dates-changed": "",
+ "tasks-updated-created": "",
+ "new-media-added-reassigned": "",
+ "new-time-ticket-posted": "",
+ "intake-delivery-checklist-completed": "",
+ "job-added-to-production": "",
+ "job-status-change": "",
+ "payment-collected-completed": "",
+ "alternate-transport-changed": ""
+ },
+ "channels": {
+ "app": "",
+ "email": "",
+ "fcm": ""
+ }
+ }
+ }
}
diff --git a/client/src/utils/jobNotificationScenarios.js b/client/src/utils/jobNotificationScenarios.js
new file mode 100644
index 000000000..52519977b
--- /dev/null
+++ b/client/src/utils/jobNotificationScenarios.js
@@ -0,0 +1,19 @@
+const notificationScenarios = [
+ "job-assigned-to-me",
+ "bill-posted",
+ "critical-parts-status-changed",
+ "part-marked-back-ordered",
+ "new-note-added",
+ "supplement-imported",
+ "schedule-dates-changed",
+ "tasks-updated-created",
+ "new-media-added-reassigned",
+ "new-time-ticket-posted",
+ "intake-delivery-checklist-completed",
+ "job-added-to-production",
+ "job-status-change",
+ "payment-collected-completed",
+ "alternate-transport-changed"
+];
+
+export { notificationScenarios };
diff --git a/hasura/metadata/cron_triggers.yaml b/hasura/metadata/cron_triggers.yaml
index f22b1da58..2b504e492 100644
--- a/hasura/metadata/cron_triggers.yaml
+++ b/hasura/metadata/cron_triggers.yaml
@@ -31,14 +31,6 @@
headers:
- name: x-imex-auth
value_from_env: DATAPUMP_AUTH
-- name: Task Reminders
- webhook: '{{HASURA_API_URL}}/tasks-remind-handler'
- schedule: '*/15 * * * *'
- include_in_metadata: true
- payload: {}
- headers:
- - name: event-secret
- value_from_env: EVENT_SECRET
- name: Rome Usage Report
webhook: '{{HASURA_API_URL}}/data/usagereport'
schedule: 0 12 * * 5
@@ -47,3 +39,11 @@
headers:
- name: x-imex-auth
value_from_env: DATAPUMP_AUTH
+- name: Task Reminders
+ webhook: '{{HASURA_API_URL}}/tasks-remind-handler'
+ schedule: '*/15 * * * *'
+ include_in_metadata: true
+ payload: {}
+ headers:
+ - name: event-secret
+ value_from_env: EVENT_SECRET
diff --git a/hasura/metadata/tables.yaml b/hasura/metadata/tables.yaml
index 4a9416781..22ad129a2 100644
--- a/hasura/metadata/tables.yaml
+++ b/hasura/metadata/tables.yaml
@@ -697,12 +697,6 @@
- name: event-secret
value_from_env: EVENT_SECRET
request_transform:
- body:
- action: transform
- template: |-
- {
- "success": true
- }
method: POST
query_params: {}
template_engine: Kriti
@@ -1958,6 +1952,29 @@
_eq: X-Hasura-User-Id
- active:
_eq: true
+ event_triggers:
+ - name: notifications_documents
+ definition:
+ enable_manual: false
+ insert:
+ columns: '*'
+ update:
+ columns:
+ - jobid
+ retry_conf:
+ interval_sec: 10
+ num_retries: 0
+ timeout_sec: 60
+ webhook_from_env: HASURA_API_URL
+ headers:
+ - name: event-secret
+ value_from_env: EVENT_SECRET
+ request_transform:
+ method: POST
+ query_params: {}
+ template_engine: Kriti
+ url: '{{$base_url}}/notifications/events/handleDocumentsChange'
+ version: 2
- table:
name: email_audit_trail
schema: public
@@ -2846,13 +2863,12 @@
- role: user
permission:
check:
- user:
- _and:
- - associations:
- active:
- _eq: true
- - authid:
- _eq: X-Hasura-User-Id
+ job:
+ bodyshop:
+ associations:
+ user:
+ authid:
+ _eq: X-Hasura-User-Id
columns:
- user_email
- created_at
@@ -2868,13 +2884,12 @@
- id
- jobid
filter:
- user:
- _and:
- - associations:
- active:
- _eq: true
- - authid:
- _eq: X-Hasura-User-Id
+ job:
+ bodyshop:
+ associations:
+ user:
+ authid:
+ _eq: X-Hasura-User-Id
comment: ""
update_permissions:
- role: user
@@ -2885,26 +2900,24 @@
- id
- jobid
filter:
- user:
- _and:
- - associations:
- active:
- _eq: true
- - authid:
- _eq: X-Hasura-User-Id
+ job:
+ bodyshop:
+ associations:
+ user:
+ authid:
+ _eq: X-Hasura-User-Id
check: null
comment: ""
delete_permissions:
- role: user
permission:
filter:
- user:
- _and:
- - associations:
- active:
- _eq: true
- - authid:
- _eq: X-Hasura-User-Id
+ job:
+ bodyshop:
+ associations:
+ user:
+ authid:
+ _eq: X-Hasura-User-Id
comment: ""
- table:
name: joblines
@@ -3223,6 +3236,29 @@
_eq: X-Hasura-User-Id
- active:
_eq: true
+ event_triggers:
+ - name: notifications_joblines
+ definition:
+ enable_manual: false
+ insert:
+ columns: '*'
+ update:
+ columns:
+ - critical
+ retry_conf:
+ interval_sec: 10
+ num_retries: 0
+ timeout_sec: 60
+ webhook_from_env: HASURA_API_URL
+ headers:
+ - name: event-secret
+ value_from_env: EVENT_SECRET
+ request_transform:
+ method: POST
+ query_params: {}
+ template_engine: Kriti
+ url: '{{$base_url}}/notifications/events/handleJobLinesChange'
+ version: 1
- table:
name: joblines_status
schema: public
@@ -3369,6 +3405,13 @@
table:
name: job_conversations
schema: public
+ - name: job_watchers
+ using:
+ foreign_key_constraint_on:
+ column: jobid
+ table:
+ name: job_watchers
+ schema: public
- name: joblines
using:
foreign_key_constraint_on:
@@ -4473,10 +4516,7 @@
request_transform:
body:
action: transform
- template: |-
- {
- "success": true
- }
+ template: "{\r\n \"event\": {\r\n \"session_variables\": {\r\n \"x-hasura-user-id\": {{$body.event.session_variables.x-hasura-user-id}}\r\n }, \r\n \"op\": \"UPDATE\",\r\n \"data\": {\r\n \"old\": {\r\n \"id\": {{$body.event.data.old.id}},\r\n \"ro_number\": {{$body.event.data.old.ro_number}},\r\n \"queued_for_parts\": {{$body.event.data.old.queued_for_parts}},\r\n \"employee_prep\": {{$body.event.data.old.employee_prep}},\r\n \"clm_total\": {{$body.event.data.old.clm_total}},\r\n \"towin\": {{$body.event.data.old.towin}},\r\n \"employee_body\": {{$body.event.data.old.employee_body}},\r\n \"converted\": {{$body.event.data.old.converted}},\r\n \"scheduled_in\": {{$body.event.data.old.scheduled_in}},\r\n \"scheduled_completion\": {{$body.event.data.old.scheduled_completion}},\r\n \"scheduled_delivery\": {{$body.event.data.old.scheduled_delivery}},\r\n \"actual_delivery\": {{$body.event.data.old.actual_delivery}},\r\n \"actual_completion\": {{$body.event.data.old.actual_completion}},\r\n \"alt_transport\": {{$body.event.data.old.alt_transport}},\r\n \"date_exported\": {{$body.event.data.old.date_exported}},\r\n \"status\": {{$body.event.data.old.status}},\r\n \"employee_csr\": {{$body.event.data.old.employee_csr}},\r\n \"actual_in\": {{$body.event.data.old.actual_in}},\r\n \"deliverchecklist\": {{$body.event.data.old.deliverchecklist}},\r\n \"comment\": {{$body.event.data.old.comment}},\r\n \"employee_refinish\": {{$body.event.data.old.employee_refinish}},\r\n \"inproduction\": {{$body.event.data.old.inproduction}},\r\n \"production_vars\": {{$body.event.data.old.production_vars}},\r\n \"intakechecklist\": {{$body.event.data.old.intakechecklist}},\r\n \"cieca_ttl\": {{$body.event.data.old.cieca_ttl}},\r\n \"date_invoiced\": {{$body.event.data.old.date_invoiced}}\r\n },\r\n \"new\": {\r\n \"id\": {{$body.event.data.new.id}},\r\n \"ro_number\": {{$body.event.data.old.ro_number}},\r\n \"queued_for_parts\": {{$body.event.data.new.queued_for_parts}},\r\n \"employee_prep\": {{$body.event.data.new.employee_prep}},\r\n \"clm_total\": {{$body.event.data.new.clm_total}},\r\n \"towin\": {{$body.event.data.new.towin}},\r\n \"employee_body\": {{$body.event.data.new.employee_body}},\r\n \"converted\": {{$body.event.data.new.converted}},\r\n \"scheduled_in\": {{$body.event.data.new.scheduled_in}},\r\n \"scheduled_completion\": {{$body.event.data.new.scheduled_completion}},\r\n \"scheduled_delivery\": {{$body.event.data.new.scheduled_delivery}},\r\n \"actual_delivery\": {{$body.event.data.new.actual_delivery}},\r\n \"actual_completion\": {{$body.event.data.new.actual_completion}},\r\n \"alt_transport\": {{$body.event.data.new.alt_transport}},\r\n \"date_exported\": {{$body.event.data.new.date_exported}},\r\n \"status\": {{$body.event.data.new.status}},\r\n \"employee_csr\": {{$body.event.data.new.employee_csr}},\r\n \"actual_in\": {{$body.event.data.new.actual_in}},\r\n \"deliverchecklist\": {{$body.event.data.new.deliverchecklist}},\r\n \"comment\": {{$body.event.data.new.comment}},\r\n \"employee_refinish\": {{$body.event.data.new.employee_refinish}},\r\n \"inproduction\": {{$body.event.data.new.inproduction}},\r\n \"production_vars\": {{$body.event.data.new.production_vars}},\r\n \"intakechecklist\": {{$body.event.data.new.intakechecklist}},\r\n \"cieca_ttl\": {{$body.event.data.new.cieca_ttl}},\r\n \"date_invoiced\": {{$body.event.data.new.date_invoiced}}\r\n }\r\n }\r\n },\r\n \"trigger\": {\r\n \"name\": \"notifications_jobs\"\r\n },\r\n \"table\": {\r\n \"schema\": \"public\",\r\n \"name\": \"jobs\"\r\n }\r\n}\r\n"
method: POST
query_params: {}
template_engine: Kriti
@@ -4825,6 +4865,26 @@
_eq: X-Hasura-User-Id
- active:
_eq: true
+ event_triggers:
+ - name: notifications_notes
+ definition:
+ enable_manual: false
+ insert:
+ columns: '*'
+ retry_conf:
+ interval_sec: 10
+ num_retries: 0
+ timeout_sec: 60
+ webhook_from_env: HASURA_API_URL
+ headers:
+ - name: event-secret
+ value_from_env: EVENT_SECRET
+ request_transform:
+ method: POST
+ query_params: {}
+ template_engine: Kriti
+ url: '{{$base_url}}/notifications/events/handleNotesChange'
+ version: 2
- table:
name: notifications
schema: public
@@ -4835,46 +4895,79 @@
- name: job
using:
foreign_key_constraint_on: jobid
+ insert_permissions:
+ - role: user
+ permission:
+ check:
+ job:
+ bodyshop:
+ associations:
+ _and:
+ - user:
+ authid:
+ _eq: X-Hasura-User-Id
+ - active:
+ _eq: true
+ columns:
+ - scenario_meta
+ - scenario_text
+ - fcm_text
+ - created_at
+ - read
+ - updated_at
+ - associationid
+ - id
+ - jobid
+ comment: ""
select_permissions:
- role: user
permission:
columns:
- - associationid
+ - scenario_meta
+ - scenario_text
+ - fcm_text
- created_at
- - fcm_data
- - fcm_message
- - fcm_title
+ - read
+ - updated_at
+ - associationid
- id
- jobid
- - meta
- - read
- - ui_translation_meta
- - ui_translation_string
- - updated_at
filter:
- association:
- _and:
- - active:
- _eq: true
- - user:
- authid:
- _eq: X-Hasura-User-Id
+ job:
+ bodyshop:
+ associations:
+ _and:
+ - user:
+ authid:
+ _eq: X-Hasura-User-Id
+ - active:
+ _eq: true
+ allow_aggregations: true
comment: ""
update_permissions:
- role: user
permission:
columns:
- - meta
+ - scenario_meta
+ - scenario_text
+ - fcm_text
+ - created_at
- read
- filter:
- association:
- _and:
- - active:
- _eq: true
- - user:
- authid:
- _eq: X-Hasura-User-Id
- check: null
+ - updated_at
+ - associationid
+ - id
+ - jobid
+ filter: {}
+ check:
+ job:
+ bodyshop:
+ associations:
+ _and:
+ - user:
+ authid:
+ _eq: X-Hasura-User-Id
+ - active:
+ _eq: true
comment: ""
- table:
name: owners
@@ -5648,6 +5741,25 @@
- active:
_eq: true
event_triggers:
+ - name: notifications_payments
+ definition:
+ enable_manual: false
+ insert:
+ columns: '*'
+ retry_conf:
+ interval_sec: 10
+ num_retries: 0
+ timeout_sec: 60
+ webhook_from_env: HASURA_API_URL
+ headers:
+ - name: event-secret
+ value_from_env: EVENT_SECRET
+ request_transform:
+ method: POST
+ query_params: {}
+ template_engine: Kriti
+ url: '{{$base_url}}/notifications/events/handlePaymentsChange'
+ version: 2
- name: os_payments
definition:
delete:
@@ -6119,9 +6231,13 @@
columns: '*'
update:
columns:
+ - joblineid
- assigned_to
+ - partsorderid
- completed
- description
+ - billid
+ - priority
retry_conf:
interval_sec: 10
num_retries: 0
@@ -6131,12 +6247,6 @@
- name: event-secret
value_from_env: EVENT_SECRET
request_transform:
- body:
- action: transform
- template: |-
- {
- "success": true
- }
method: POST
query_params: {}
template_engine: Kriti
@@ -6313,12 +6423,6 @@
- name: event-secret
value_from_env: EVENT_SECRET
request_transform:
- body:
- action: transform
- template: |-
- {
- "success": true
- }
method: POST
query_params: {}
template_engine: Kriti
diff --git a/hasura/migrations/1740162115648_alter_table_public_notifications_add_column_html_body/down.sql b/hasura/migrations/1740162115648_alter_table_public_notifications_add_column_html_body/down.sql
new file mode 100644
index 000000000..bb56e2f77
--- /dev/null
+++ b/hasura/migrations/1740162115648_alter_table_public_notifications_add_column_html_body/down.sql
@@ -0,0 +1,4 @@
+-- Could not auto-generate a down migration.
+-- Please write an appropriate down migration for the SQL below:
+-- alter table "public"."notifications" add column "html_body" text
+-- not null;
diff --git a/hasura/migrations/1740162115648_alter_table_public_notifications_add_column_html_body/up.sql b/hasura/migrations/1740162115648_alter_table_public_notifications_add_column_html_body/up.sql
new file mode 100644
index 000000000..be7753c99
--- /dev/null
+++ b/hasura/migrations/1740162115648_alter_table_public_notifications_add_column_html_body/up.sql
@@ -0,0 +1,2 @@
+alter table "public"."notifications" add column "html_body" text
+ not null;
diff --git a/hasura/migrations/1740162296457_alter_table_public_notifications_alter_column_fcm_title/down.sql b/hasura/migrations/1740162296457_alter_table_public_notifications_alter_column_fcm_title/down.sql
new file mode 100644
index 000000000..a2d9ebaa9
--- /dev/null
+++ b/hasura/migrations/1740162296457_alter_table_public_notifications_alter_column_fcm_title/down.sql
@@ -0,0 +1 @@
+alter table "public"."notifications" alter column "fcm_title" set not null;
diff --git a/hasura/migrations/1740162296457_alter_table_public_notifications_alter_column_fcm_title/up.sql b/hasura/migrations/1740162296457_alter_table_public_notifications_alter_column_fcm_title/up.sql
new file mode 100644
index 000000000..3755dc382
--- /dev/null
+++ b/hasura/migrations/1740162296457_alter_table_public_notifications_alter_column_fcm_title/up.sql
@@ -0,0 +1 @@
+alter table "public"."notifications" alter column "fcm_title" drop not null;
diff --git a/hasura/migrations/1740162315085_alter_table_public_notifications_alter_column_fcm_message/down.sql b/hasura/migrations/1740162315085_alter_table_public_notifications_alter_column_fcm_message/down.sql
new file mode 100644
index 000000000..dadd5d448
--- /dev/null
+++ b/hasura/migrations/1740162315085_alter_table_public_notifications_alter_column_fcm_message/down.sql
@@ -0,0 +1 @@
+alter table "public"."notifications" alter column "fcm_message" set not null;
diff --git a/hasura/migrations/1740162315085_alter_table_public_notifications_alter_column_fcm_message/up.sql b/hasura/migrations/1740162315085_alter_table_public_notifications_alter_column_fcm_message/up.sql
new file mode 100644
index 000000000..387272491
--- /dev/null
+++ b/hasura/migrations/1740162315085_alter_table_public_notifications_alter_column_fcm_message/up.sql
@@ -0,0 +1 @@
+alter table "public"."notifications" alter column "fcm_message" drop not null;
diff --git a/hasura/migrations/1740417011431_alter_table_public_notifications_drop_column_html_body/down.sql b/hasura/migrations/1740417011431_alter_table_public_notifications_drop_column_html_body/down.sql
new file mode 100644
index 000000000..3986cbda4
--- /dev/null
+++ b/hasura/migrations/1740417011431_alter_table_public_notifications_drop_column_html_body/down.sql
@@ -0,0 +1,3 @@
+comment on column "public"."notifications"."html_body" is E'Real Time Notifications System';
+alter table "public"."notifications" alter column "html_body" drop not null;
+alter table "public"."notifications" add column "html_body" text;
diff --git a/hasura/migrations/1740417011431_alter_table_public_notifications_drop_column_html_body/up.sql b/hasura/migrations/1740417011431_alter_table_public_notifications_drop_column_html_body/up.sql
new file mode 100644
index 000000000..58ee2d95f
--- /dev/null
+++ b/hasura/migrations/1740417011431_alter_table_public_notifications_drop_column_html_body/up.sql
@@ -0,0 +1 @@
+alter table "public"."notifications" drop column "html_body" cascade;
diff --git a/hasura/migrations/1740417046609_alter_table_public_notifications_drop_column_fcm_data/down.sql b/hasura/migrations/1740417046609_alter_table_public_notifications_drop_column_fcm_data/down.sql
new file mode 100644
index 000000000..70e4fc311
--- /dev/null
+++ b/hasura/migrations/1740417046609_alter_table_public_notifications_drop_column_fcm_data/down.sql
@@ -0,0 +1,4 @@
+comment on column "public"."notifications"."fcm_data" is E'Real Time Notifications System';
+alter table "public"."notifications" alter column "fcm_data" set default jsonb_build_object();
+alter table "public"."notifications" alter column "fcm_data" drop not null;
+alter table "public"."notifications" add column "fcm_data" jsonb;
diff --git a/hasura/migrations/1740417046609_alter_table_public_notifications_drop_column_fcm_data/up.sql b/hasura/migrations/1740417046609_alter_table_public_notifications_drop_column_fcm_data/up.sql
new file mode 100644
index 000000000..3f6441573
--- /dev/null
+++ b/hasura/migrations/1740417046609_alter_table_public_notifications_drop_column_fcm_data/up.sql
@@ -0,0 +1 @@
+alter table "public"."notifications" drop column "fcm_data" cascade;
diff --git a/hasura/migrations/1740417076166_alter_table_public_notifications_drop_column_fcm_message/down.sql b/hasura/migrations/1740417076166_alter_table_public_notifications_drop_column_fcm_message/down.sql
new file mode 100644
index 000000000..4651b79a3
--- /dev/null
+++ b/hasura/migrations/1740417076166_alter_table_public_notifications_drop_column_fcm_message/down.sql
@@ -0,0 +1,3 @@
+comment on column "public"."notifications"."fcm_message" is E'Real Time Notifications System';
+alter table "public"."notifications" alter column "fcm_message" drop not null;
+alter table "public"."notifications" add column "fcm_message" text;
diff --git a/hasura/migrations/1740417076166_alter_table_public_notifications_drop_column_fcm_message/up.sql b/hasura/migrations/1740417076166_alter_table_public_notifications_drop_column_fcm_message/up.sql
new file mode 100644
index 000000000..6a51ad6f5
--- /dev/null
+++ b/hasura/migrations/1740417076166_alter_table_public_notifications_drop_column_fcm_message/up.sql
@@ -0,0 +1 @@
+alter table "public"."notifications" drop column "fcm_message" cascade;
diff --git a/hasura/migrations/1740417110704_alter_table_public_notifications_drop_column_ui_translation_string/down.sql b/hasura/migrations/1740417110704_alter_table_public_notifications_drop_column_ui_translation_string/down.sql
new file mode 100644
index 000000000..234537d07
--- /dev/null
+++ b/hasura/migrations/1740417110704_alter_table_public_notifications_drop_column_ui_translation_string/down.sql
@@ -0,0 +1,3 @@
+comment on column "public"."notifications"."ui_translation_string" is E'Real Time Notifications System';
+alter table "public"."notifications" alter column "ui_translation_string" drop not null;
+alter table "public"."notifications" add column "ui_translation_string" text;
diff --git a/hasura/migrations/1740417110704_alter_table_public_notifications_drop_column_ui_translation_string/up.sql b/hasura/migrations/1740417110704_alter_table_public_notifications_drop_column_ui_translation_string/up.sql
new file mode 100644
index 000000000..702af0747
--- /dev/null
+++ b/hasura/migrations/1740417110704_alter_table_public_notifications_drop_column_ui_translation_string/up.sql
@@ -0,0 +1 @@
+alter table "public"."notifications" drop column "ui_translation_string" cascade;
diff --git a/hasura/migrations/1740417137294_alter_table_public_notifications_alter_column_fcm_title/down.sql b/hasura/migrations/1740417137294_alter_table_public_notifications_alter_column_fcm_title/down.sql
new file mode 100644
index 000000000..f76615392
--- /dev/null
+++ b/hasura/migrations/1740417137294_alter_table_public_notifications_alter_column_fcm_title/down.sql
@@ -0,0 +1 @@
+alter table "public"."notifications" rename column "fcm_text" to "fcm_title";
diff --git a/hasura/migrations/1740417137294_alter_table_public_notifications_alter_column_fcm_title/up.sql b/hasura/migrations/1740417137294_alter_table_public_notifications_alter_column_fcm_title/up.sql
new file mode 100644
index 000000000..4e39cf157
--- /dev/null
+++ b/hasura/migrations/1740417137294_alter_table_public_notifications_alter_column_fcm_title/up.sql
@@ -0,0 +1 @@
+alter table "public"."notifications" rename column "fcm_title" to "fcm_text";
diff --git a/hasura/migrations/1740417505757_alter_table_public_notifications_alter_column_ui_translation_meta/down.sql b/hasura/migrations/1740417505757_alter_table_public_notifications_alter_column_ui_translation_meta/down.sql
new file mode 100644
index 000000000..4b7add7b9
--- /dev/null
+++ b/hasura/migrations/1740417505757_alter_table_public_notifications_alter_column_ui_translation_meta/down.sql
@@ -0,0 +1 @@
+alter table "public"."notifications" rename column "scenario_text" to "ui_translation_meta";
diff --git a/hasura/migrations/1740417505757_alter_table_public_notifications_alter_column_ui_translation_meta/up.sql b/hasura/migrations/1740417505757_alter_table_public_notifications_alter_column_ui_translation_meta/up.sql
new file mode 100644
index 000000000..b2c933ed9
--- /dev/null
+++ b/hasura/migrations/1740417505757_alter_table_public_notifications_alter_column_ui_translation_meta/up.sql
@@ -0,0 +1 @@
+alter table "public"."notifications" rename column "ui_translation_meta" to "scenario_text";
diff --git a/hasura/migrations/1740417594189_alter_table_public_notifications_alter_column_meta/down.sql b/hasura/migrations/1740417594189_alter_table_public_notifications_alter_column_meta/down.sql
new file mode 100644
index 000000000..f0ef6d736
--- /dev/null
+++ b/hasura/migrations/1740417594189_alter_table_public_notifications_alter_column_meta/down.sql
@@ -0,0 +1 @@
+alter table "public"."notifications" rename column "scenario_meta" to "meta";
diff --git a/hasura/migrations/1740417594189_alter_table_public_notifications_alter_column_meta/up.sql b/hasura/migrations/1740417594189_alter_table_public_notifications_alter_column_meta/up.sql
new file mode 100644
index 000000000..4561da723
--- /dev/null
+++ b/hasura/migrations/1740417594189_alter_table_public_notifications_alter_column_meta/up.sql
@@ -0,0 +1 @@
+alter table "public"."notifications" rename column "meta" to "scenario_meta";
diff --git a/package-lock.json b/package-lock.json
index 608a76ac4..2304cf208 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,11 +10,11 @@
"license": "UNLICENSED",
"dependencies": {
"@aws-sdk/client-cloudwatch-logs": "^3.738.0",
- "@aws-sdk/client-elasticache": "^3.738.0",
- "@aws-sdk/client-s3": "^3.738.0",
- "@aws-sdk/client-secrets-manager": "^3.738.0",
+ "@aws-sdk/client-elasticache": "^3.758.0",
+ "@aws-sdk/client-s3": "^3.758.0",
+ "@aws-sdk/client-secrets-manager": "^3.758.0",
"@aws-sdk/client-ses": "^3.738.0",
- "@aws-sdk/credential-provider-node": "^3.738.0",
+ "@aws-sdk/credential-provider-node": "^3.758.0",
"@aws-sdk/lib-storage": "^3.743.0",
"@aws-sdk/s3-request-presigner": "^3.731.1",
"@opensearch-project/opensearch": "^2.13.0",
@@ -22,29 +22,31 @@
"@socket.io/redis-adapter": "^8.3.0",
"archiver": "^7.0.1",
"aws4": "^1.13.2",
- "axios": "^1.7.7",
+ "axios": "^1.8.1",
+ "bee-queue": "^1.7.1",
"better-queue": "^3.8.12",
"bluebird": "^3.7.2",
"body-parser": "^1.20.3",
- "chart.js": "^4.4.6",
+ "bullmq": "^5.41.7",
+ "chart.js": "^4.4.8",
"cloudinary": "^2.5.1",
- "compression": "^1.7.5",
+ "compression": "^1.8.0",
"cookie-parser": "^1.4.7",
"cors": "2.8.5",
"crisp-status-reporter": "^1.2.2",
"csrf": "^3.1.0",
- "dd-trace": "^5.33.1",
+ "dd-trace": "^5.40.0",
"dinero.js": "^1.9.1",
"dotenv": "^16.4.5",
"express": "^4.21.1",
- "firebase-admin": "^13.0.2",
+ "firebase-admin": "^13.1.0",
"graphql": "^16.10.0",
"graphql-request": "^6.1.0",
"inline-css": "^4.0.3",
- "intuit-oauth": "^4.1.3",
- "ioredis": "^5.4.2",
+ "intuit-oauth": "^4.2.0",
+ "ioredis": "^5.5.0",
"json-2-csv": "^5.5.8",
- "juice": "^11.0.0",
+ "juice": "^11.0.1",
"lodash": "^4.17.21",
"moment": "^2.30.1",
"moment-timezone": "^0.5.47",
@@ -57,7 +59,7 @@
"redis": "^4.7.0",
"rimraf": "^6.0.1",
"skia-canvas": "^2.0.2",
- "soap": "^1.1.7",
+ "soap": "^1.1.9",
"socket.io": "^4.8.1",
"socket.io-adapter": "^2.5.5",
"ssh2-sftp-client": "^11.0.0",
@@ -69,14 +71,14 @@
"xmlbuilder2": "^3.1.1"
},
"devDependencies": {
- "@eslint/js": "^9.19.0",
- "@trivago/prettier-plugin-sort-imports": "^4.3.0",
+ "@eslint/js": "^9.21.0",
+ "@trivago/prettier-plugin-sort-imports": "^5.2.2",
"concurrently": "^8.2.2",
- "eslint": "^9.19.0",
+ "eslint": "^9.21.0",
"eslint-plugin-react": "^7.37.4",
- "globals": "^15.14.0",
+ "globals": "^15.15.0",
"p-limit": "^3.1.0",
- "prettier": "^3.3.3",
+ "prettier": "^3.5.3",
"source-map-explorer": "^2.5.2"
},
"engines": {
@@ -341,6 +343,258 @@
"node": ">=18.0.0"
}
},
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/client-sso": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.734.0.tgz",
+ "integrity": "sha512-oerepp0mut9VlgTwnG5Ds/lb0C0b2/rQ+hL/rF6q+HGKPfGsCuPvFx1GtwGKCXd49ase88/jVgrhcA9OQbz3kg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "5.2.0",
+ "@aws-crypto/sha256-js": "5.2.0",
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/middleware-host-header": "3.734.0",
+ "@aws-sdk/middleware-logger": "3.734.0",
+ "@aws-sdk/middleware-recursion-detection": "3.734.0",
+ "@aws-sdk/middleware-user-agent": "3.734.0",
+ "@aws-sdk/region-config-resolver": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.734.0",
+ "@aws-sdk/util-user-agent-browser": "3.734.0",
+ "@aws-sdk/util-user-agent-node": "3.734.0",
+ "@smithy/config-resolver": "^4.0.1",
+ "@smithy/core": "^3.1.1",
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/hash-node": "^4.0.1",
+ "@smithy/invalid-dependency": "^4.0.1",
+ "@smithy/middleware-content-length": "^4.0.1",
+ "@smithy/middleware-endpoint": "^4.0.2",
+ "@smithy/middleware-retry": "^4.0.3",
+ "@smithy/middleware-serde": "^4.0.1",
+ "@smithy/middleware-stack": "^4.0.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-body-length-node": "^4.0.0",
+ "@smithy/util-defaults-mode-browser": "^4.0.3",
+ "@smithy/util-defaults-mode-node": "^4.0.3",
+ "@smithy/util-endpoints": "^3.0.1",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-retry": "^4.0.1",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-env": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.734.0.tgz",
+ "integrity": "sha512-gtRkzYTGafnm1FPpiNO8VBmJrYMoxhDlGPYDVcijzx3DlF8dhWnowuSBCxLSi+MJMx5hvwrX2A+e/q0QAeHqmw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-http": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.734.0.tgz",
+ "integrity": "sha512-JFSL6xhONsq+hKM8xroIPhM5/FOhiQ1cov0lZxhzZWj6Ai3UAjucy3zyIFDr9MgP1KfCYNdvyaUq9/o+HWvEDg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-stream": "^4.0.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-ini": {
+ "version": "3.741.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.741.0.tgz",
+ "integrity": "sha512-/XvnVp6zZXsyUlP1FtmspcWnd+Z1u2WK0wwzTE/x277M0oIhAezCW79VmcY4jcDQbYH+qMbtnBexfwgFDARxQg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/credential-provider-env": "3.734.0",
+ "@aws-sdk/credential-provider-http": "3.734.0",
+ "@aws-sdk/credential-provider-process": "3.734.0",
+ "@aws-sdk/credential-provider-sso": "3.734.0",
+ "@aws-sdk/credential-provider-web-identity": "3.734.0",
+ "@aws-sdk/nested-clients": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/credential-provider-imds": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-node": {
+ "version": "3.741.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.741.0.tgz",
+ "integrity": "sha512-iz/puK9CZZkZjrKXX2W+PaiewHtlcD7RKUIsw4YHFyb8lrOt7yTYpM6VjeI+T//1sozjymmAnnp1SST9TXApLQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.734.0",
+ "@aws-sdk/credential-provider-http": "3.734.0",
+ "@aws-sdk/credential-provider-ini": "3.741.0",
+ "@aws-sdk/credential-provider-process": "3.734.0",
+ "@aws-sdk/credential-provider-sso": "3.734.0",
+ "@aws-sdk/credential-provider-web-identity": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/credential-provider-imds": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-process": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.734.0.tgz",
+ "integrity": "sha512-zvjsUo+bkYn2vjT+EtLWu3eD6me+uun+Hws1IyWej/fKFAqiBPwyeyCgU7qjkiPQSXqk1U9+/HG9IQ6Iiz+eBw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-sso": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.734.0.tgz",
+ "integrity": "sha512-cCwwcgUBJOsV/ddyh1OGb4gKYWEaTeTsqaAK19hiNINfYV/DO9r4RMlnWAo84sSBfJuj9shUNsxzyoe6K7R92Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/client-sso": "3.734.0",
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/token-providers": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-web-identity": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.734.0.tgz",
+ "integrity": "sha512-t4OSOerc+ppK541/Iyn1AS40+2vT/qE+MFMotFkhCgCJbApeRF2ozEdnDN6tGmnl4ybcUuxnp9JWLjwDVlR/4g==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/nested-clients": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/nested-clients": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.734.0.tgz",
+ "integrity": "sha512-iph2XUy8UzIfdJFWo1r0Zng9uWj3253yvW9gljhtu+y/LNmNvSnJxQk1f3D2BC5WmcoPZqTS3UsycT3mLPSzWA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "5.2.0",
+ "@aws-crypto/sha256-js": "5.2.0",
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/middleware-host-header": "3.734.0",
+ "@aws-sdk/middleware-logger": "3.734.0",
+ "@aws-sdk/middleware-recursion-detection": "3.734.0",
+ "@aws-sdk/middleware-user-agent": "3.734.0",
+ "@aws-sdk/region-config-resolver": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.734.0",
+ "@aws-sdk/util-user-agent-browser": "3.734.0",
+ "@aws-sdk/util-user-agent-node": "3.734.0",
+ "@smithy/config-resolver": "^4.0.1",
+ "@smithy/core": "^3.1.1",
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/hash-node": "^4.0.1",
+ "@smithy/invalid-dependency": "^4.0.1",
+ "@smithy/middleware-content-length": "^4.0.1",
+ "@smithy/middleware-endpoint": "^4.0.2",
+ "@smithy/middleware-retry": "^4.0.3",
+ "@smithy/middleware-serde": "^4.0.1",
+ "@smithy/middleware-stack": "^4.0.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-body-length-node": "^4.0.0",
+ "@smithy/util-defaults-mode-browser": "^4.0.3",
+ "@smithy/util-defaults-mode-node": "^4.0.3",
+ "@smithy/util-endpoints": "^3.0.1",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-retry": "^4.0.1",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/token-providers": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.734.0.tgz",
+ "integrity": "sha512-2U6yWKrjWjZO8Y5SHQxkFvMVWHQWbS0ufqfAIBROqmIZNubOL7jXCiVdEFekz6MZ9LF2tvYGnOW4jX8OKDGfIw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/nested-clients": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
"node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/uuid": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
@@ -355,45 +609,45 @@
}
},
"node_modules/@aws-sdk/client-elasticache": {
- "version": "3.741.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-elasticache/-/client-elasticache-3.741.0.tgz",
- "integrity": "sha512-cWyzkKacBNJOBfK1HGO439JkmJHOK8VQpkLB6zF806nsBCC1c7uo4bjiqOQzw2eU0yJ2m3b6kbVf/sEmdvR6WA==",
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-elasticache/-/client-elasticache-3.758.0.tgz",
+ "integrity": "sha512-qmDOTHhB0hUm/Ifypi6+zjUR4dl7H576oM4/p2RUgkjyz2RgJaLJhyX32TDDzcX2maevNHJ3TijXOkGxoGDeog==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.734.0",
- "@aws-sdk/credential-provider-node": "3.741.0",
+ "@aws-sdk/core": "3.758.0",
+ "@aws-sdk/credential-provider-node": "3.758.0",
"@aws-sdk/middleware-host-header": "3.734.0",
"@aws-sdk/middleware-logger": "3.734.0",
"@aws-sdk/middleware-recursion-detection": "3.734.0",
- "@aws-sdk/middleware-user-agent": "3.734.0",
+ "@aws-sdk/middleware-user-agent": "3.758.0",
"@aws-sdk/region-config-resolver": "3.734.0",
"@aws-sdk/types": "3.734.0",
- "@aws-sdk/util-endpoints": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.743.0",
"@aws-sdk/util-user-agent-browser": "3.734.0",
- "@aws-sdk/util-user-agent-node": "3.734.0",
+ "@aws-sdk/util-user-agent-node": "3.758.0",
"@smithy/config-resolver": "^4.0.1",
- "@smithy/core": "^3.1.1",
+ "@smithy/core": "^3.1.5",
"@smithy/fetch-http-handler": "^5.0.1",
"@smithy/hash-node": "^4.0.1",
"@smithy/invalid-dependency": "^4.0.1",
"@smithy/middleware-content-length": "^4.0.1",
- "@smithy/middleware-endpoint": "^4.0.2",
- "@smithy/middleware-retry": "^4.0.3",
- "@smithy/middleware-serde": "^4.0.1",
+ "@smithy/middleware-endpoint": "^4.0.6",
+ "@smithy/middleware-retry": "^4.0.7",
+ "@smithy/middleware-serde": "^4.0.2",
"@smithy/middleware-stack": "^4.0.1",
"@smithy/node-config-provider": "^4.0.1",
- "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/node-http-handler": "^4.0.3",
"@smithy/protocol-http": "^5.0.1",
- "@smithy/smithy-client": "^4.1.2",
+ "@smithy/smithy-client": "^4.1.6",
"@smithy/types": "^4.1.0",
"@smithy/url-parser": "^4.0.1",
"@smithy/util-base64": "^4.0.0",
"@smithy/util-body-length-browser": "^4.0.0",
"@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.3",
- "@smithy/util-defaults-mode-node": "^4.0.3",
+ "@smithy/util-defaults-mode-browser": "^4.0.7",
+ "@smithy/util-defaults-mode-node": "^4.0.7",
"@smithy/util-endpoints": "^3.0.1",
"@smithy/util-middleware": "^4.0.1",
"@smithy/util-retry": "^4.0.1",
@@ -405,36 +659,115 @@
"node": ">=18.0.0"
}
},
+ "node_modules/@aws-sdk/client-elasticache/node_modules/@aws-sdk/core": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.758.0.tgz",
+ "integrity": "sha512-0RswbdR9jt/XKemaLNuxi2gGr4xGlHyGxkTdhSQzCyUe9A9OPCoLl3rIESRguQEech+oJnbHk/wuiwHqTuP9sg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.6",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "fast-xml-parser": "4.4.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-elasticache/node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.758.0.tgz",
+ "integrity": "sha512-iNyehQXtQlj69JCgfaOssgZD4HeYGOwxcaKeG6F+40cwBjTAi0+Ph1yfDwqk2qiBPIRWJ/9l2LodZbxiBqgrwg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.758.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.743.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-elasticache/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.743.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.743.0.tgz",
+ "integrity": "sha512-sN1l559zrixeh5x+pttrnd0A3+r34r0tmPkJ/eaaMaAzXqsmKU/xYre9K3FNnsSS1J1k4PEfk/nHDTVUgFYjnw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-endpoints": "^3.0.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-elasticache/node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.758.0.tgz",
+ "integrity": "sha512-A5EZw85V6WhoKMV2hbuFRvb9NPlxEErb4HPO6/SPXYY4QrjprIzScHxikqcWv1w4J3apB1wto9LPU3IMsYtfrw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/middleware-user-agent": "3.758.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@aws-sdk/client-s3": {
- "version": "3.741.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.741.0.tgz",
- "integrity": "sha512-sZvdbRZ+E9/GcOMUOkZvYvob95N6c9LdzDneXHFASA7OIaEOQxQT1Arimz7JpEhfq/h9K2/j7wNO4jh4x80bmA==",
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.758.0.tgz",
+ "integrity": "sha512-f8SlhU9/93OC/WEI6xVJf/x/GoQFj9a/xXK6QCtr5fvCjfSLgMVFmKTiIl/tgtDRzxUDc8YS6EGtbHjJ3Y/atg==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha1-browser": "5.2.0",
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.734.0",
- "@aws-sdk/credential-provider-node": "3.741.0",
+ "@aws-sdk/core": "3.758.0",
+ "@aws-sdk/credential-provider-node": "3.758.0",
"@aws-sdk/middleware-bucket-endpoint": "3.734.0",
"@aws-sdk/middleware-expect-continue": "3.734.0",
- "@aws-sdk/middleware-flexible-checksums": "3.735.0",
+ "@aws-sdk/middleware-flexible-checksums": "3.758.0",
"@aws-sdk/middleware-host-header": "3.734.0",
"@aws-sdk/middleware-location-constraint": "3.734.0",
"@aws-sdk/middleware-logger": "3.734.0",
"@aws-sdk/middleware-recursion-detection": "3.734.0",
- "@aws-sdk/middleware-sdk-s3": "3.740.0",
+ "@aws-sdk/middleware-sdk-s3": "3.758.0",
"@aws-sdk/middleware-ssec": "3.734.0",
- "@aws-sdk/middleware-user-agent": "3.734.0",
+ "@aws-sdk/middleware-user-agent": "3.758.0",
"@aws-sdk/region-config-resolver": "3.734.0",
- "@aws-sdk/signature-v4-multi-region": "3.740.0",
+ "@aws-sdk/signature-v4-multi-region": "3.758.0",
"@aws-sdk/types": "3.734.0",
- "@aws-sdk/util-endpoints": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.743.0",
"@aws-sdk/util-user-agent-browser": "3.734.0",
- "@aws-sdk/util-user-agent-node": "3.734.0",
+ "@aws-sdk/util-user-agent-node": "3.758.0",
"@aws-sdk/xml-builder": "3.734.0",
"@smithy/config-resolver": "^4.0.1",
- "@smithy/core": "^3.1.1",
+ "@smithy/core": "^3.1.5",
"@smithy/eventstream-serde-browser": "^4.0.1",
"@smithy/eventstream-serde-config-resolver": "^4.0.1",
"@smithy/eventstream-serde-node": "^4.0.1",
@@ -445,25 +778,25 @@
"@smithy/invalid-dependency": "^4.0.1",
"@smithy/md5-js": "^4.0.1",
"@smithy/middleware-content-length": "^4.0.1",
- "@smithy/middleware-endpoint": "^4.0.2",
- "@smithy/middleware-retry": "^4.0.3",
- "@smithy/middleware-serde": "^4.0.1",
+ "@smithy/middleware-endpoint": "^4.0.6",
+ "@smithy/middleware-retry": "^4.0.7",
+ "@smithy/middleware-serde": "^4.0.2",
"@smithy/middleware-stack": "^4.0.1",
"@smithy/node-config-provider": "^4.0.1",
- "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/node-http-handler": "^4.0.3",
"@smithy/protocol-http": "^5.0.1",
- "@smithy/smithy-client": "^4.1.2",
+ "@smithy/smithy-client": "^4.1.6",
"@smithy/types": "^4.1.0",
"@smithy/url-parser": "^4.0.1",
"@smithy/util-base64": "^4.0.0",
"@smithy/util-body-length-browser": "^4.0.0",
"@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.3",
- "@smithy/util-defaults-mode-node": "^4.0.3",
+ "@smithy/util-defaults-mode-browser": "^4.0.7",
+ "@smithy/util-defaults-mode-node": "^4.0.7",
"@smithy/util-endpoints": "^3.0.1",
"@smithy/util-middleware": "^4.0.1",
"@smithy/util-retry": "^4.0.1",
- "@smithy/util-stream": "^4.0.2",
+ "@smithy/util-stream": "^4.1.2",
"@smithy/util-utf8": "^4.0.0",
"@smithy/util-waiter": "^4.0.2",
"tslib": "^2.6.2"
@@ -472,46 +805,125 @@
"node": ">=18.0.0"
}
},
+ "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/core": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.758.0.tgz",
+ "integrity": "sha512-0RswbdR9jt/XKemaLNuxi2gGr4xGlHyGxkTdhSQzCyUe9A9OPCoLl3rIESRguQEech+oJnbHk/wuiwHqTuP9sg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.6",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "fast-xml-parser": "4.4.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.758.0.tgz",
+ "integrity": "sha512-iNyehQXtQlj69JCgfaOssgZD4HeYGOwxcaKeG6F+40cwBjTAi0+Ph1yfDwqk2qiBPIRWJ/9l2LodZbxiBqgrwg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.758.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.743.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.743.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.743.0.tgz",
+ "integrity": "sha512-sN1l559zrixeh5x+pttrnd0A3+r34r0tmPkJ/eaaMaAzXqsmKU/xYre9K3FNnsSS1J1k4PEfk/nHDTVUgFYjnw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-endpoints": "^3.0.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.758.0.tgz",
+ "integrity": "sha512-A5EZw85V6WhoKMV2hbuFRvb9NPlxEErb4HPO6/SPXYY4QrjprIzScHxikqcWv1w4J3apB1wto9LPU3IMsYtfrw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/middleware-user-agent": "3.758.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@aws-sdk/client-secrets-manager": {
- "version": "3.741.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.741.0.tgz",
- "integrity": "sha512-AmNGZGTJPD2B7AOUmDZZhLDpQ5tQX5WLL7X+2XB1U9tn97vAPd1ocqKEVD4wDkjIx3KVI+x3kA9xTQ0P9e7lMg==",
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.758.0.tgz",
+ "integrity": "sha512-Vi4cdCim0jQx3rrU5R1W4v3czoWL0ajBtoI15oSSt7cwLjzNA0xq4nXSa6rahjTgtZWlLeBprbquvxNzY3qg5Q==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.734.0",
- "@aws-sdk/credential-provider-node": "3.741.0",
+ "@aws-sdk/core": "3.758.0",
+ "@aws-sdk/credential-provider-node": "3.758.0",
"@aws-sdk/middleware-host-header": "3.734.0",
"@aws-sdk/middleware-logger": "3.734.0",
"@aws-sdk/middleware-recursion-detection": "3.734.0",
- "@aws-sdk/middleware-user-agent": "3.734.0",
+ "@aws-sdk/middleware-user-agent": "3.758.0",
"@aws-sdk/region-config-resolver": "3.734.0",
"@aws-sdk/types": "3.734.0",
- "@aws-sdk/util-endpoints": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.743.0",
"@aws-sdk/util-user-agent-browser": "3.734.0",
- "@aws-sdk/util-user-agent-node": "3.734.0",
+ "@aws-sdk/util-user-agent-node": "3.758.0",
"@smithy/config-resolver": "^4.0.1",
- "@smithy/core": "^3.1.1",
+ "@smithy/core": "^3.1.5",
"@smithy/fetch-http-handler": "^5.0.1",
"@smithy/hash-node": "^4.0.1",
"@smithy/invalid-dependency": "^4.0.1",
"@smithy/middleware-content-length": "^4.0.1",
- "@smithy/middleware-endpoint": "^4.0.2",
- "@smithy/middleware-retry": "^4.0.3",
- "@smithy/middleware-serde": "^4.0.1",
+ "@smithy/middleware-endpoint": "^4.0.6",
+ "@smithy/middleware-retry": "^4.0.7",
+ "@smithy/middleware-serde": "^4.0.2",
"@smithy/middleware-stack": "^4.0.1",
"@smithy/node-config-provider": "^4.0.1",
- "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/node-http-handler": "^4.0.3",
"@smithy/protocol-http": "^5.0.1",
- "@smithy/smithy-client": "^4.1.2",
+ "@smithy/smithy-client": "^4.1.6",
"@smithy/types": "^4.1.0",
"@smithy/url-parser": "^4.0.1",
"@smithy/util-base64": "^4.0.0",
"@smithy/util-body-length-browser": "^4.0.0",
"@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.3",
- "@smithy/util-defaults-mode-node": "^4.0.3",
+ "@smithy/util-defaults-mode-browser": "^4.0.7",
+ "@smithy/util-defaults-mode-node": "^4.0.7",
"@smithy/util-endpoints": "^3.0.1",
"@smithy/util-middleware": "^4.0.1",
"@smithy/util-retry": "^4.0.1",
@@ -524,6 +936,85 @@
"node": ">=18.0.0"
}
},
+ "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/core": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.758.0.tgz",
+ "integrity": "sha512-0RswbdR9jt/XKemaLNuxi2gGr4xGlHyGxkTdhSQzCyUe9A9OPCoLl3rIESRguQEech+oJnbHk/wuiwHqTuP9sg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.6",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "fast-xml-parser": "4.4.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.758.0.tgz",
+ "integrity": "sha512-iNyehQXtQlj69JCgfaOssgZD4HeYGOwxcaKeG6F+40cwBjTAi0+Ph1yfDwqk2qiBPIRWJ/9l2LodZbxiBqgrwg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.758.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.743.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.743.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.743.0.tgz",
+ "integrity": "sha512-sN1l559zrixeh5x+pttrnd0A3+r34r0tmPkJ/eaaMaAzXqsmKU/xYre9K3FNnsSS1J1k4PEfk/nHDTVUgFYjnw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-endpoints": "^3.0.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.758.0.tgz",
+ "integrity": "sha512-A5EZw85V6WhoKMV2hbuFRvb9NPlxEErb4HPO6/SPXYY4QrjprIzScHxikqcWv1w4J3apB1wto9LPU3IMsYtfrw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/middleware-user-agent": "3.758.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@aws-sdk/client-secrets-manager/node_modules/uuid": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
@@ -588,7 +1079,7 @@
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/client-sso": {
+ "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/client-sso": {
"version": "3.734.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.734.0.tgz",
"integrity": "sha512-oerepp0mut9VlgTwnG5Ds/lb0C0b2/rQ+hL/rF6q+HGKPfGsCuPvFx1GtwGKCXd49ase88/jVgrhcA9OQbz3kg==",
@@ -637,29 +1128,7 @@
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/core": {
- "version": "3.734.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.734.0.tgz",
- "integrity": "sha512-SxnDqf3vobdm50OLyAKfqZetv6zzwnSqwIwd3jrbopxxHKqNIM/I0xcYjD6Tn+mPig+u7iRKb9q3QnEooFTlmg==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.734.0",
- "@smithy/core": "^3.1.1",
- "@smithy/node-config-provider": "^4.0.1",
- "@smithy/property-provider": "^4.0.1",
- "@smithy/protocol-http": "^5.0.1",
- "@smithy/signature-v4": "^5.0.1",
- "@smithy/smithy-client": "^4.1.2",
- "@smithy/types": "^4.1.0",
- "@smithy/util-middleware": "^4.0.1",
- "fast-xml-parser": "4.4.1",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@aws-sdk/credential-provider-env": {
+ "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/credential-provider-env": {
"version": "3.734.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.734.0.tgz",
"integrity": "sha512-gtRkzYTGafnm1FPpiNO8VBmJrYMoxhDlGPYDVcijzx3DlF8dhWnowuSBCxLSi+MJMx5hvwrX2A+e/q0QAeHqmw==",
@@ -675,7 +1144,7 @@
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-http": {
+ "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/credential-provider-http": {
"version": "3.734.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.734.0.tgz",
"integrity": "sha512-JFSL6xhONsq+hKM8xroIPhM5/FOhiQ1cov0lZxhzZWj6Ai3UAjucy3zyIFDr9MgP1KfCYNdvyaUq9/o+HWvEDg==",
@@ -696,7 +1165,7 @@
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-ini": {
+ "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/credential-provider-ini": {
"version": "3.741.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.741.0.tgz",
"integrity": "sha512-/XvnVp6zZXsyUlP1FtmspcWnd+Z1u2WK0wwzTE/x277M0oIhAezCW79VmcY4jcDQbYH+qMbtnBexfwgFDARxQg==",
@@ -720,7 +1189,7 @@
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-node": {
+ "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/credential-provider-node": {
"version": "3.741.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.741.0.tgz",
"integrity": "sha512-iz/puK9CZZkZjrKXX2W+PaiewHtlcD7RKUIsw4YHFyb8lrOt7yTYpM6VjeI+T//1sozjymmAnnp1SST9TXApLQ==",
@@ -743,7 +1212,7 @@
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-process": {
+ "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/credential-provider-process": {
"version": "3.734.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.734.0.tgz",
"integrity": "sha512-zvjsUo+bkYn2vjT+EtLWu3eD6me+uun+Hws1IyWej/fKFAqiBPwyeyCgU7qjkiPQSXqk1U9+/HG9IQ6Iiz+eBw==",
@@ -760,7 +1229,7 @@
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-sso": {
+ "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/credential-provider-sso": {
"version": "3.734.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.734.0.tgz",
"integrity": "sha512-cCwwcgUBJOsV/ddyh1OGb4gKYWEaTeTsqaAK19hiNINfYV/DO9r4RMlnWAo84sSBfJuj9shUNsxzyoe6K7R92Q==",
@@ -779,7 +1248,7 @@
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-web-identity": {
+ "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/credential-provider-web-identity": {
"version": "3.734.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.734.0.tgz",
"integrity": "sha512-t4OSOerc+ppK541/Iyn1AS40+2vT/qE+MFMotFkhCgCJbApeRF2ozEdnDN6tGmnl4ybcUuxnp9JWLjwDVlR/4g==",
@@ -796,6 +1265,491 @@
"node": ">=18.0.0"
}
},
+ "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/nested-clients": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.734.0.tgz",
+ "integrity": "sha512-iph2XUy8UzIfdJFWo1r0Zng9uWj3253yvW9gljhtu+y/LNmNvSnJxQk1f3D2BC5WmcoPZqTS3UsycT3mLPSzWA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "5.2.0",
+ "@aws-crypto/sha256-js": "5.2.0",
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/middleware-host-header": "3.734.0",
+ "@aws-sdk/middleware-logger": "3.734.0",
+ "@aws-sdk/middleware-recursion-detection": "3.734.0",
+ "@aws-sdk/middleware-user-agent": "3.734.0",
+ "@aws-sdk/region-config-resolver": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.734.0",
+ "@aws-sdk/util-user-agent-browser": "3.734.0",
+ "@aws-sdk/util-user-agent-node": "3.734.0",
+ "@smithy/config-resolver": "^4.0.1",
+ "@smithy/core": "^3.1.1",
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/hash-node": "^4.0.1",
+ "@smithy/invalid-dependency": "^4.0.1",
+ "@smithy/middleware-content-length": "^4.0.1",
+ "@smithy/middleware-endpoint": "^4.0.2",
+ "@smithy/middleware-retry": "^4.0.3",
+ "@smithy/middleware-serde": "^4.0.1",
+ "@smithy/middleware-stack": "^4.0.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-body-length-node": "^4.0.0",
+ "@smithy/util-defaults-mode-browser": "^4.0.3",
+ "@smithy/util-defaults-mode-node": "^4.0.3",
+ "@smithy/util-endpoints": "^3.0.1",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-retry": "^4.0.1",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-ses/node_modules/@aws-sdk/token-providers": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.734.0.tgz",
+ "integrity": "sha512-2U6yWKrjWjZO8Y5SHQxkFvMVWHQWbS0ufqfAIBROqmIZNubOL7jXCiVdEFekz6MZ9LF2tvYGnOW4jX8OKDGfIw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/nested-clients": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.758.0.tgz",
+ "integrity": "sha512-BoGO6IIWrLyLxQG6txJw6RT2urmbtlwfggapNCrNPyYjlXpzTSJhBYjndg7TpDATFd0SXL0zm8y/tXsUXNkdYQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "5.2.0",
+ "@aws-crypto/sha256-js": "5.2.0",
+ "@aws-sdk/core": "3.758.0",
+ "@aws-sdk/middleware-host-header": "3.734.0",
+ "@aws-sdk/middleware-logger": "3.734.0",
+ "@aws-sdk/middleware-recursion-detection": "3.734.0",
+ "@aws-sdk/middleware-user-agent": "3.758.0",
+ "@aws-sdk/region-config-resolver": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.743.0",
+ "@aws-sdk/util-user-agent-browser": "3.734.0",
+ "@aws-sdk/util-user-agent-node": "3.758.0",
+ "@smithy/config-resolver": "^4.0.1",
+ "@smithy/core": "^3.1.5",
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/hash-node": "^4.0.1",
+ "@smithy/invalid-dependency": "^4.0.1",
+ "@smithy/middleware-content-length": "^4.0.1",
+ "@smithy/middleware-endpoint": "^4.0.6",
+ "@smithy/middleware-retry": "^4.0.7",
+ "@smithy/middleware-serde": "^4.0.2",
+ "@smithy/middleware-stack": "^4.0.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/node-http-handler": "^4.0.3",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.6",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-body-length-node": "^4.0.0",
+ "@smithy/util-defaults-mode-browser": "^4.0.7",
+ "@smithy/util-defaults-mode-node": "^4.0.7",
+ "@smithy/util-endpoints": "^3.0.1",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-retry": "^4.0.1",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.758.0.tgz",
+ "integrity": "sha512-0RswbdR9jt/XKemaLNuxi2gGr4xGlHyGxkTdhSQzCyUe9A9OPCoLl3rIESRguQEech+oJnbHk/wuiwHqTuP9sg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.6",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "fast-xml-parser": "4.4.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.758.0.tgz",
+ "integrity": "sha512-iNyehQXtQlj69JCgfaOssgZD4HeYGOwxcaKeG6F+40cwBjTAi0+Ph1yfDwqk2qiBPIRWJ/9l2LodZbxiBqgrwg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.758.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.743.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.743.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.743.0.tgz",
+ "integrity": "sha512-sN1l559zrixeh5x+pttrnd0A3+r34r0tmPkJ/eaaMaAzXqsmKU/xYre9K3FNnsSS1J1k4PEfk/nHDTVUgFYjnw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-endpoints": "^3.0.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.758.0.tgz",
+ "integrity": "sha512-A5EZw85V6WhoKMV2hbuFRvb9NPlxEErb4HPO6/SPXYY4QrjprIzScHxikqcWv1w4J3apB1wto9LPU3IMsYtfrw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/middleware-user-agent": "3.758.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@aws-sdk/core": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.734.0.tgz",
+ "integrity": "sha512-SxnDqf3vobdm50OLyAKfqZetv6zzwnSqwIwd3jrbopxxHKqNIM/I0xcYjD6Tn+mPig+u7iRKb9q3QnEooFTlmg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/core": "^3.1.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "fast-xml-parser": "4.4.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-env": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.758.0.tgz",
+ "integrity": "sha512-N27eFoRrO6MeUNumtNHDW9WOiwfd59LPXPqDrIa3kWL/s+fOKFHb9xIcF++bAwtcZnAxKkgpDCUP+INNZskE+w==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.758.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-env/node_modules/@aws-sdk/core": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.758.0.tgz",
+ "integrity": "sha512-0RswbdR9jt/XKemaLNuxi2gGr4xGlHyGxkTdhSQzCyUe9A9OPCoLl3rIESRguQEech+oJnbHk/wuiwHqTuP9sg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.6",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "fast-xml-parser": "4.4.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-http": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.758.0.tgz",
+ "integrity": "sha512-Xt9/U8qUCiw1hihztWkNeIR+arg6P+yda10OuCHX6kFVx3auTlU7+hCqs3UxqniGU4dguHuftf3mRpi5/GJ33Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.758.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/node-http-handler": "^4.0.3",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.6",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-stream": "^4.1.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-http/node_modules/@aws-sdk/core": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.758.0.tgz",
+ "integrity": "sha512-0RswbdR9jt/XKemaLNuxi2gGr4xGlHyGxkTdhSQzCyUe9A9OPCoLl3rIESRguQEech+oJnbHk/wuiwHqTuP9sg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.6",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "fast-xml-parser": "4.4.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-ini": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.758.0.tgz",
+ "integrity": "sha512-cymSKMcP5d+OsgetoIZ5QCe1wnp2Q/tq+uIxVdh9MbfdBBEnl9Ecq6dH6VlYS89sp4QKuxHxkWXVnbXU3Q19Aw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.758.0",
+ "@aws-sdk/credential-provider-env": "3.758.0",
+ "@aws-sdk/credential-provider-http": "3.758.0",
+ "@aws-sdk/credential-provider-process": "3.758.0",
+ "@aws-sdk/credential-provider-sso": "3.758.0",
+ "@aws-sdk/credential-provider-web-identity": "3.758.0",
+ "@aws-sdk/nested-clients": "3.758.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/credential-provider-imds": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-ini/node_modules/@aws-sdk/core": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.758.0.tgz",
+ "integrity": "sha512-0RswbdR9jt/XKemaLNuxi2gGr4xGlHyGxkTdhSQzCyUe9A9OPCoLl3rIESRguQEech+oJnbHk/wuiwHqTuP9sg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.6",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "fast-xml-parser": "4.4.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-node": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.758.0.tgz",
+ "integrity": "sha512-+DaMv63wiq7pJrhIQzZYMn4hSarKiizDoJRvyR7WGhnn0oQ/getX9Z0VNCV3i7lIFoLNTb7WMmQ9k7+z/uD5EQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.758.0",
+ "@aws-sdk/credential-provider-http": "3.758.0",
+ "@aws-sdk/credential-provider-ini": "3.758.0",
+ "@aws-sdk/credential-provider-process": "3.758.0",
+ "@aws-sdk/credential-provider-sso": "3.758.0",
+ "@aws-sdk/credential-provider-web-identity": "3.758.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/credential-provider-imds": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-process": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.758.0.tgz",
+ "integrity": "sha512-AzcY74QTPqcbXWVgjpPZ3HOmxQZYPROIBz2YINF0OQk0MhezDWV/O7Xec+K1+MPGQO3qS6EDrUUlnPLjsqieHA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.758.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-process/node_modules/@aws-sdk/core": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.758.0.tgz",
+ "integrity": "sha512-0RswbdR9jt/XKemaLNuxi2gGr4xGlHyGxkTdhSQzCyUe9A9OPCoLl3rIESRguQEech+oJnbHk/wuiwHqTuP9sg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.6",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "fast-xml-parser": "4.4.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-sso": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.758.0.tgz",
+ "integrity": "sha512-x0FYJqcOLUCv8GLLFDYMXRAQKGjoM+L0BG4BiHYZRDf24yQWFCAZsCQAYKo6XZYh2qznbsW6f//qpyJ5b0QVKQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/client-sso": "3.758.0",
+ "@aws-sdk/core": "3.758.0",
+ "@aws-sdk/token-providers": "3.758.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/core": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.758.0.tgz",
+ "integrity": "sha512-0RswbdR9jt/XKemaLNuxi2gGr4xGlHyGxkTdhSQzCyUe9A9OPCoLl3rIESRguQEech+oJnbHk/wuiwHqTuP9sg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.6",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "fast-xml-parser": "4.4.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-web-identity": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.758.0.tgz",
+ "integrity": "sha512-XGguXhBqiCXMXRxcfCAVPlMbm3VyJTou79r/3mxWddHWF0XbhaQiBIbUz6vobVTD25YQRbWSmSch7VA8kI5Lrw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.758.0",
+ "@aws-sdk/nested-clients": "3.758.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/@aws-sdk/core": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.758.0.tgz",
+ "integrity": "sha512-0RswbdR9jt/XKemaLNuxi2gGr4xGlHyGxkTdhSQzCyUe9A9OPCoLl3rIESRguQEech+oJnbHk/wuiwHqTuP9sg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.6",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "fast-xml-parser": "4.4.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
"node_modules/@aws-sdk/lib-storage": {
"version": "3.743.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.743.0.tgz",
@@ -861,22 +1815,22 @@
}
},
"node_modules/@aws-sdk/middleware-flexible-checksums": {
- "version": "3.735.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.735.0.tgz",
- "integrity": "sha512-Tx7lYTPwQFRe/wQEHMR6Drh/S+X0ToAEq1Ava9QyxV1riwtepzRLojpNDELFb3YQVVYbX7FEiBMCJLMkmIIY+A==",
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.758.0.tgz",
+ "integrity": "sha512-o8Rk71S08YTKLoSobucjnbj97OCGaXgpEDNKXpXaavUM5xLNoHCLSUPRCiEN86Ivqxg1n17Y2nSRhfbsveOXXA==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/crc32": "5.2.0",
"@aws-crypto/crc32c": "5.2.0",
"@aws-crypto/util": "5.2.0",
- "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/core": "3.758.0",
"@aws-sdk/types": "3.734.0",
"@smithy/is-array-buffer": "^4.0.0",
"@smithy/node-config-provider": "^4.0.1",
"@smithy/protocol-http": "^5.0.1",
"@smithy/types": "^4.1.0",
"@smithy/util-middleware": "^4.0.1",
- "@smithy/util-stream": "^4.0.2",
+ "@smithy/util-stream": "^4.1.2",
"@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
@@ -884,6 +1838,28 @@
"node": ">=18.0.0"
}
},
+ "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-sdk/core": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.758.0.tgz",
+ "integrity": "sha512-0RswbdR9jt/XKemaLNuxi2gGr4xGlHyGxkTdhSQzCyUe9A9OPCoLl3rIESRguQEech+oJnbHk/wuiwHqTuP9sg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.6",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "fast-xml-parser": "4.4.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
"node_modules/@aws-sdk/middleware-host-header": {
"version": "3.734.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.734.0.tgz",
@@ -943,23 +1919,23 @@
}
},
"node_modules/@aws-sdk/middleware-sdk-s3": {
- "version": "3.740.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.740.0.tgz",
- "integrity": "sha512-VML9TzNoQdAs5lSPQSEgZiPgMUSz2H7SltaLb9g4tHwKK5xQoTq5WcDd6V1d2aPxSN5Q2Q63aiVUBby6MdUN/Q==",
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.758.0.tgz",
+ "integrity": "sha512-6mJ2zyyHPYSV6bAcaFpsdoXZJeQlR1QgBnZZ6juY/+dcYiuyWCdyLUbGzSZSE7GTfx6i+9+QWFeoIMlWKgU63A==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/core": "3.758.0",
"@aws-sdk/types": "3.734.0",
"@aws-sdk/util-arn-parser": "3.723.0",
- "@smithy/core": "^3.1.1",
+ "@smithy/core": "^3.1.5",
"@smithy/node-config-provider": "^4.0.1",
"@smithy/protocol-http": "^5.0.1",
"@smithy/signature-v4": "^5.0.1",
- "@smithy/smithy-client": "^4.1.2",
+ "@smithy/smithy-client": "^4.1.6",
"@smithy/types": "^4.1.0",
"@smithy/util-config-provider": "^4.0.0",
"@smithy/util-middleware": "^4.0.1",
- "@smithy/util-stream": "^4.0.2",
+ "@smithy/util-stream": "^4.1.2",
"@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
@@ -967,6 +1943,28 @@
"node": ">=18.0.0"
}
},
+ "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@aws-sdk/core": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.758.0.tgz",
+ "integrity": "sha512-0RswbdR9jt/XKemaLNuxi2gGr4xGlHyGxkTdhSQzCyUe9A9OPCoLl3rIESRguQEech+oJnbHk/wuiwHqTuP9sg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.6",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "fast-xml-parser": "4.4.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
"node_modules/@aws-sdk/middleware-ssec": {
"version": "3.734.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.734.0.tgz",
@@ -1000,44 +1998,44 @@
}
},
"node_modules/@aws-sdk/nested-clients": {
- "version": "3.734.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.734.0.tgz",
- "integrity": "sha512-iph2XUy8UzIfdJFWo1r0Zng9uWj3253yvW9gljhtu+y/LNmNvSnJxQk1f3D2BC5WmcoPZqTS3UsycT3mLPSzWA==",
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.758.0.tgz",
+ "integrity": "sha512-YZ5s7PSvyF3Mt2h1EQulCG93uybprNGbBkPmVuy/HMMfbFTt4iL3SbKjxqvOZelm86epFfj7pvK7FliI2WOEcg==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/core": "3.758.0",
"@aws-sdk/middleware-host-header": "3.734.0",
"@aws-sdk/middleware-logger": "3.734.0",
"@aws-sdk/middleware-recursion-detection": "3.734.0",
- "@aws-sdk/middleware-user-agent": "3.734.0",
+ "@aws-sdk/middleware-user-agent": "3.758.0",
"@aws-sdk/region-config-resolver": "3.734.0",
"@aws-sdk/types": "3.734.0",
- "@aws-sdk/util-endpoints": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.743.0",
"@aws-sdk/util-user-agent-browser": "3.734.0",
- "@aws-sdk/util-user-agent-node": "3.734.0",
+ "@aws-sdk/util-user-agent-node": "3.758.0",
"@smithy/config-resolver": "^4.0.1",
- "@smithy/core": "^3.1.1",
+ "@smithy/core": "^3.1.5",
"@smithy/fetch-http-handler": "^5.0.1",
"@smithy/hash-node": "^4.0.1",
"@smithy/invalid-dependency": "^4.0.1",
"@smithy/middleware-content-length": "^4.0.1",
- "@smithy/middleware-endpoint": "^4.0.2",
- "@smithy/middleware-retry": "^4.0.3",
- "@smithy/middleware-serde": "^4.0.1",
+ "@smithy/middleware-endpoint": "^4.0.6",
+ "@smithy/middleware-retry": "^4.0.7",
+ "@smithy/middleware-serde": "^4.0.2",
"@smithy/middleware-stack": "^4.0.1",
"@smithy/node-config-provider": "^4.0.1",
- "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/node-http-handler": "^4.0.3",
"@smithy/protocol-http": "^5.0.1",
- "@smithy/smithy-client": "^4.1.2",
+ "@smithy/smithy-client": "^4.1.6",
"@smithy/types": "^4.1.0",
"@smithy/url-parser": "^4.0.1",
"@smithy/util-base64": "^4.0.0",
"@smithy/util-body-length-browser": "^4.0.0",
"@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.3",
- "@smithy/util-defaults-mode-node": "^4.0.3",
+ "@smithy/util-defaults-mode-browser": "^4.0.7",
+ "@smithy/util-defaults-mode-node": "^4.0.7",
"@smithy/util-endpoints": "^3.0.1",
"@smithy/util-middleware": "^4.0.1",
"@smithy/util-retry": "^4.0.1",
@@ -1048,6 +2046,85 @@
"node": ">=18.0.0"
}
},
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/core": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.758.0.tgz",
+ "integrity": "sha512-0RswbdR9jt/XKemaLNuxi2gGr4xGlHyGxkTdhSQzCyUe9A9OPCoLl3rIESRguQEech+oJnbHk/wuiwHqTuP9sg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.6",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "fast-xml-parser": "4.4.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.758.0.tgz",
+ "integrity": "sha512-iNyehQXtQlj69JCgfaOssgZD4HeYGOwxcaKeG6F+40cwBjTAi0+Ph1yfDwqk2qiBPIRWJ/9l2LodZbxiBqgrwg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/core": "3.758.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.743.0",
+ "@smithy/core": "^3.1.5",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.743.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.743.0.tgz",
+ "integrity": "sha512-sN1l559zrixeh5x+pttrnd0A3+r34r0tmPkJ/eaaMaAzXqsmKU/xYre9K3FNnsSS1J1k4PEfk/nHDTVUgFYjnw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-endpoints": "^3.0.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.758.0.tgz",
+ "integrity": "sha512-A5EZw85V6WhoKMV2hbuFRvb9NPlxEErb4HPO6/SPXYY4QrjprIzScHxikqcWv1w4J3apB1wto9LPU3IMsYtfrw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/middleware-user-agent": "3.758.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@aws-sdk/region-config-resolver": {
"version": "3.734.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.734.0.tgz",
@@ -1162,12 +2239,12 @@
}
},
"node_modules/@aws-sdk/signature-v4-multi-region": {
- "version": "3.740.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.740.0.tgz",
- "integrity": "sha512-w+psidN3i+kl51nQEV3V+fKjKUqcEbqUA1GtubruDBvBqrl5El/fU2NF3Lo53y8CfI9wCdf3V7KOEpHIqxHNng==",
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.758.0.tgz",
+ "integrity": "sha512-0RPCo8fYJcrenJ6bRtiUbFOSgQ1CX/GpvwtLU2Fam1tS9h2klKK8d74caeV6A1mIUvBU7bhyQ0wMGlwMtn3EYw==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/middleware-sdk-s3": "3.740.0",
+ "@aws-sdk/middleware-sdk-s3": "3.758.0",
"@aws-sdk/types": "3.734.0",
"@smithy/protocol-http": "^5.0.1",
"@smithy/signature-v4": "^5.0.1",
@@ -1179,12 +2256,12 @@
}
},
"node_modules/@aws-sdk/token-providers": {
- "version": "3.734.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.734.0.tgz",
- "integrity": "sha512-2U6yWKrjWjZO8Y5SHQxkFvMVWHQWbS0ufqfAIBROqmIZNubOL7jXCiVdEFekz6MZ9LF2tvYGnOW4jX8OKDGfIw==",
+ "version": "3.758.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.758.0.tgz",
+ "integrity": "sha512-ckptN1tNrIfQUaGWm/ayW1ddG+imbKN7HHhjFdS4VfItsP0QQOB0+Ov+tpgb4MoNR4JaUghMIVStjIeHN2ks1w==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/nested-clients": "3.734.0",
+ "@aws-sdk/nested-clients": "3.758.0",
"@aws-sdk/types": "3.734.0",
"@smithy/property-provider": "^4.0.1",
"@smithy/shared-ini-file-loader": "^4.0.1",
@@ -1340,124 +2417,17 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz",
- "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz",
+ "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.17.0",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-environment-visitor": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz",
- "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-environment-visitor/node_modules/@babel/types": {
- "version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz",
- "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-string-parser": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz",
- "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/template": "^7.24.7",
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-function-name/node_modules/@babel/types": {
- "version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz",
- "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-string-parser": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz",
- "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-hoist-variables/node_modules/@babel/types": {
- "version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz",
- "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-string-parser": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.24.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz",
- "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.24.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-split-export-declaration/node_modules/@babel/types": {
- "version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz",
- "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-string-parser": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9"
+ "@babel/parser": "^7.26.9",
+ "@babel/types": "^7.26.9",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^3.0.2"
},
"engines": {
"node": ">=6.9.0"
@@ -1484,13 +2454,13 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz",
- "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz",
+ "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.26.3"
+ "@babel/types": "^7.26.9"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -1499,25 +2469,10 @@
"node": ">=6.0.0"
}
},
- "node_modules/@babel/parser/node_modules/@babel/types": {
- "version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz",
- "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-string-parser": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/runtime": {
"version": "7.26.0",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
"integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"regenerator-runtime": "^0.14.0"
@@ -1527,87 +2482,39 @@
}
},
"node_modules/@babel/template": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz",
- "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz",
+ "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.25.9",
- "@babel/parser": "^7.25.9",
- "@babel/types": "^7.25.9"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/template/node_modules/@babel/types": {
- "version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz",
- "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-string-parser": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9"
+ "@babel/code-frame": "^7.26.2",
+ "@babel/parser": "^7.26.9",
+ "@babel/types": "^7.26.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.23.2",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
- "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz",
+ "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.22.13",
- "@babel/generator": "^7.23.0",
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/parser": "^7.23.0",
- "@babel/types": "^7.23.0",
- "debug": "^4.1.0",
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.9",
+ "@babel/parser": "^7.26.9",
+ "@babel/template": "^7.26.9",
+ "@babel/types": "^7.26.9",
+ "debug": "^4.3.1",
"globals": "^11.1.0"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/traverse/node_modules/@babel/generator": {
- "version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz",
- "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.26.3",
- "@babel/types": "^7.26.3",
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25",
- "jsesc": "^3.0.2"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse/node_modules/@babel/types": {
- "version": "7.26.3",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz",
- "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-string-parser": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/traverse/node_modules/globals": {
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
@@ -1618,28 +2525,15 @@
"node": ">=4"
}
},
- "node_modules/@babel/traverse/node_modules/jsesc": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
- "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/@babel/types": {
- "version": "7.17.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz",
- "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==",
+ "version": "7.26.9",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz",
+ "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.16.7",
- "to-fast-properties": "^2.0.0"
+ "@babel/helper-string-parser": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
@@ -1685,9 +2579,9 @@
}
},
"node_modules/@datadog/native-iast-rewriter": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/@datadog/native-iast-rewriter/-/native-iast-rewriter-2.6.1.tgz",
- "integrity": "sha512-zv7cr/MzHg560jhAnHcO7f9pLi4qaYrBEcB+Gla0xkVouYSDsp8cGXIGG4fiGdAMHdt7SpDNS6+NcEAqD/v8Ig==",
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/@datadog/native-iast-rewriter/-/native-iast-rewriter-2.8.0.tgz",
+ "integrity": "sha512-DKmtvlmCld9RIJwDcPKWNkKYWYQyiuOrOtynmBppJiUv/yfCOuZtsQV4Zepj40H33sLiQyi5ct6dbWl53vxqkA==",
"license": "Apache-2.0",
"dependencies": {
"lru-cache": "^7.14.0",
@@ -1709,9 +2603,9 @@
}
},
"node_modules/@datadog/native-iast-taint-tracking": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@datadog/native-iast-taint-tracking/-/native-iast-taint-tracking-3.2.0.tgz",
- "integrity": "sha512-Mc6FzCoyvU5yXLMsMS9yKnEqJMWoImAukJXolNWCTm+JQYCMf2yMsJ8pBAm7KyZKliamM9rCn7h7Tr2H3lXwjA==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/@datadog/native-iast-taint-tracking/-/native-iast-taint-tracking-3.3.0.tgz",
+ "integrity": "sha512-OzmjOncer199ATSYeCAwSACCRyQimo77LKadSHDUcxa/n9FYU+2U/bYQTYsK3vquSA2E47EbSVq9rytrlTdvnA==",
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
@@ -1807,13 +2701,13 @@
}
},
"node_modules/@eslint/config-array": {
- "version": "0.19.1",
- "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz",
- "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==",
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz",
+ "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@eslint/object-schema": "^2.1.5",
+ "@eslint/object-schema": "^2.1.6",
"debug": "^4.3.1",
"minimatch": "^3.1.2"
},
@@ -1822,9 +2716,9 @@
}
},
"node_modules/@eslint/core": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz",
- "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==",
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz",
+ "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -1835,9 +2729,9 @@
}
},
"node_modules/@eslint/eslintrc": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz",
- "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz",
+ "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1872,9 +2766,9 @@
}
},
"node_modules/@eslint/js": {
- "version": "9.19.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz",
- "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==",
+ "version": "9.21.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz",
+ "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1882,9 +2776,9 @@
}
},
"node_modules/@eslint/object-schema": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz",
- "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==",
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
+ "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -1892,13 +2786,13 @@
}
},
"node_modules/@eslint/plugin-kit": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz",
- "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==",
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz",
+ "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@eslint/core": "^0.10.0",
+ "@eslint/core": "^0.12.0",
"levn": "^0.4.1"
},
"engines": {
@@ -2194,9 +3088,9 @@
}
},
"node_modules/@humanwhocodes/retry": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz",
- "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==",
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz",
+ "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -2296,9 +3190,9 @@
"license": "MIT"
},
"node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
- "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
+ "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2422,6 +3316,84 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz",
+ "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz",
+ "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz",
+ "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz",
+ "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz",
+ "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz",
+ "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
"node_modules/@oozcitak/dom": {
"version": "1.15.10",
"resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz",
@@ -2709,9 +3681,9 @@
}
},
"node_modules/@smithy/core": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.1.2.tgz",
- "integrity": "sha512-htwQXkbdF13uwwDevz9BEzL5ABK+1sJpVQXywwGSH973AVOvisHNfpcB8A8761G6XgHoS2kHPqc9DqHJ2gp+/Q==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.1.5.tgz",
+ "integrity": "sha512-HLclGWPkCsekQgsyzxLhCQLa8THWXtB5PxyYN+2O6nkyLt550KQKTlbV2D1/j5dNIQapAZM1+qFnpBFxZQkgCA==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/middleware-serde": "^4.0.2",
@@ -2719,7 +3691,7 @@
"@smithy/types": "^4.1.0",
"@smithy/util-body-length-browser": "^4.0.0",
"@smithy/util-middleware": "^4.0.1",
- "@smithy/util-stream": "^4.0.2",
+ "@smithy/util-stream": "^4.1.2",
"@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
@@ -2927,12 +3899,12 @@
}
},
"node_modules/@smithy/middleware-endpoint": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.0.3.tgz",
- "integrity": "sha512-YdbmWhQF5kIxZjWqPIgboVfi8i5XgiYMM7GGKFMTvBei4XjNQfNv8sukT50ITvgnWKKKpOtp0C0h7qixLgb77Q==",
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.0.6.tgz",
+ "integrity": "sha512-ftpmkTHIFqgaFugcjzLZv3kzPEFsBFSnq1JsIkr2mwFzCraZVhQk2gqN51OOeRxqhbPTkRFj39Qd2V91E/mQxg==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/core": "^3.1.2",
+ "@smithy/core": "^3.1.5",
"@smithy/middleware-serde": "^4.0.2",
"@smithy/node-config-provider": "^4.0.1",
"@smithy/shared-ini-file-loader": "^4.0.1",
@@ -2946,15 +3918,15 @@
}
},
"node_modules/@smithy/middleware-retry": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.0.4.tgz",
- "integrity": "sha512-wmxyUBGHaYUqul0wZiset4M39SMtDBOtUr2KpDuftKNN74Do9Y36Go6Eqzj9tL0mIPpr31ulB5UUtxcsCeGXsQ==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.0.7.tgz",
+ "integrity": "sha512-58j9XbUPLkqAcV1kHzVX/kAR16GT+j7DUZJqwzsxh1jtz7G82caZiGyyFgUvogVfNTg3TeAOIJepGc8TXF4AVQ==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/node-config-provider": "^4.0.1",
"@smithy/protocol-http": "^5.0.1",
"@smithy/service-error-classification": "^4.0.1",
- "@smithy/smithy-client": "^4.1.3",
+ "@smithy/smithy-client": "^4.1.6",
"@smithy/types": "^4.1.0",
"@smithy/util-middleware": "^4.0.1",
"@smithy/util-retry": "^4.0.1",
@@ -3020,9 +3992,9 @@
}
},
"node_modules/@smithy/node-http-handler": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.2.tgz",
- "integrity": "sha512-X66H9aah9hisLLSnGuzRYba6vckuFtGE+a5DcHLliI/YlqKrGoxhisD5XbX44KyoeRzoNlGr94eTsMVHFAzPOw==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.3.tgz",
+ "integrity": "sha512-dYCLeINNbYdvmMLtW0VdhW1biXt+PPCGazzT5ZjKw46mOtdgToQEwjqZSS9/EN8+tNs/RO0cEWG044+YZs97aA==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/abort-controller": "^4.0.1",
@@ -3133,17 +4105,17 @@
}
},
"node_modules/@smithy/smithy-client": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.1.3.tgz",
- "integrity": "sha512-A2Hz85pu8BJJaYFdX8yb1yocqigyqBzn+OVaVgm+Kwi/DkN8vhN2kbDVEfADo6jXf5hPKquMLGA3UINA64UZ7A==",
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.1.6.tgz",
+ "integrity": "sha512-UYDolNg6h2O0L+cJjtgSyKKvEKCOa/8FHYJnBobyeoeWDmNpXjwOAtw16ezyeu1ETuuLEOZbrynK0ZY1Lx9Jbw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/core": "^3.1.2",
- "@smithy/middleware-endpoint": "^4.0.3",
+ "@smithy/core": "^3.1.5",
+ "@smithy/middleware-endpoint": "^4.0.6",
"@smithy/middleware-stack": "^4.0.1",
"@smithy/protocol-http": "^5.0.1",
"@smithy/types": "^4.1.0",
- "@smithy/util-stream": "^4.0.2",
+ "@smithy/util-stream": "^4.1.2",
"tslib": "^2.6.2"
},
"engines": {
@@ -3240,13 +4212,13 @@
}
},
"node_modules/@smithy/util-defaults-mode-browser": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.4.tgz",
- "integrity": "sha512-Ej1bV5sbrIfH++KnWxjjzFNq9nyP3RIUq2c9Iqq7SmMO/idUR24sqvKH2LUQFTSPy/K7G4sB2m8n7YYlEAfZaw==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.7.tgz",
+ "integrity": "sha512-CZgDDrYHLv0RUElOsmZtAnp1pIjwDVCSuZWOPhIOBvG36RDfX1Q9+6lS61xBf+qqvHoqRjHxgINeQz47cYFC2Q==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/property-provider": "^4.0.1",
- "@smithy/smithy-client": "^4.1.3",
+ "@smithy/smithy-client": "^4.1.6",
"@smithy/types": "^4.1.0",
"bowser": "^2.11.0",
"tslib": "^2.6.2"
@@ -3256,16 +4228,16 @@
}
},
"node_modules/@smithy/util-defaults-mode-node": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.4.tgz",
- "integrity": "sha512-HE1I7gxa6yP7ZgXPCFfZSDmVmMtY7SHqzFF55gM/GPegzZKaQWZZ+nYn9C2Cc3JltCMyWe63VPR3tSFDEvuGjw==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.7.tgz",
+ "integrity": "sha512-79fQW3hnfCdrfIi1soPbK3zmooRFnLpSx3Vxi6nUlqaaQeC5dm8plt4OTNDNqEEEDkvKghZSaoti684dQFVrGQ==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/config-resolver": "^4.0.1",
"@smithy/credential-provider-imds": "^4.0.1",
"@smithy/node-config-provider": "^4.0.1",
"@smithy/property-provider": "^4.0.1",
- "@smithy/smithy-client": "^4.1.3",
+ "@smithy/smithy-client": "^4.1.6",
"@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
@@ -3327,13 +4299,13 @@
}
},
"node_modules/@smithy/util-stream": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.0.2.tgz",
- "integrity": "sha512-0eZ4G5fRzIoewtHtwaYyl8g2C+osYOT4KClXgfdNEDAgkbe2TYPqcnw4GAWabqkZCax2ihRGPe9LZnsPdIUIHA==",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.1.2.tgz",
+ "integrity": "sha512-44PKEqQ303d3rlQuiDpcCcu//hV8sn+u2JBo84dWCE0rvgeiVl0IlLMagbU++o0jCWhYCsHaAt9wZuZqNe05Hw==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/fetch-http-handler": "^5.0.1",
- "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/node-http-handler": "^4.0.3",
"@smithy/types": "^4.1.0",
"@smithy/util-base64": "^4.0.0",
"@smithy/util-buffer-from": "^4.0.0",
@@ -3466,26 +4438,37 @@
}
},
"node_modules/@trivago/prettier-plugin-sort-imports": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.0.tgz",
- "integrity": "sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==",
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-5.2.2.tgz",
+ "integrity": "sha512-fYDQA9e6yTNmA13TLVSA+WMQRc5Bn/c0EUBditUHNfMMxN7M82c38b1kEggVE3pLpZ0FwkwJkUEKMiOi52JXFA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@babel/generator": "7.17.7",
- "@babel/parser": "^7.20.5",
- "@babel/traverse": "7.23.2",
- "@babel/types": "7.17.0",
- "javascript-natural-sort": "0.7.1",
+ "@babel/generator": "^7.26.5",
+ "@babel/parser": "^7.26.7",
+ "@babel/traverse": "^7.26.7",
+ "@babel/types": "^7.26.7",
+ "javascript-natural-sort": "^0.7.1",
"lodash": "^4.17.21"
},
+ "engines": {
+ "node": ">18.12"
+ },
"peerDependencies": {
"@vue/compiler-sfc": "3.x",
- "prettier": "2.x - 3.x"
+ "prettier": "2.x - 3.x",
+ "prettier-plugin-svelte": "3.x",
+ "svelte": "4.x || 5.x"
},
"peerDependenciesMeta": {
"@vue/compiler-sfc": {
"optional": true
+ },
+ "prettier-plugin-svelte": {
+ "optional": true
+ },
+ "svelte": {
+ "optional": true
}
}
},
@@ -4029,7 +5012,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz",
"integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
@@ -4149,7 +5131,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz",
"integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"array-buffer-byte-length": "^1.0.1",
@@ -4202,7 +5183,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz",
"integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -4240,7 +5220,6 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
"integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"possible-typed-array-names": "^1.0.0"
@@ -4259,9 +5238,9 @@
"license": "MIT"
},
"node_modules/axios": {
- "version": "1.7.9",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
- "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.1.tgz",
+ "integrity": "sha512-NN+fvwH/kV01dYUQ3PTOZns4LWtWhOFCAhQ/pHb88WQ1hNe5V/dvFwc4VJcDL11LT9xSX0QtsR8sWUuyOuOq7g==",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.6",
@@ -4344,6 +5323,48 @@
"integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==",
"license": "MIT"
},
+ "node_modules/bee-queue": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/bee-queue/-/bee-queue-1.7.1.tgz",
+ "integrity": "sha512-ZjF6/rf9DUsM7Ox1hfPNL16rYy1OBHgjdAcrE/mwH+iqaoX1UAgysB5aYloVfLcVmK/FplKXADLemoni4eQ+Kg==",
+ "license": "MIT",
+ "dependencies": {
+ "p-finally": "^2.0.0",
+ "promise-callbacks": "^3.8.1",
+ "redis": "^3.1.2"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/bee-queue/node_modules/denque": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz",
+ "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/bee-queue/node_modules/redis": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz",
+ "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==",
+ "license": "MIT",
+ "dependencies": {
+ "denque": "^1.5.0",
+ "redis-commands": "^1.7.0",
+ "redis-errors": "^1.2.0",
+ "redis-parser": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/node-redis"
+ }
+ },
"node_modules/better-queue": {
"version": "3.8.12",
"resolved": "https://registry.npmjs.org/better-queue/-/better-queue-3.8.12.tgz",
@@ -4517,6 +5538,34 @@
"node": ">=10.0.0"
}
},
+ "node_modules/bullmq": {
+ "version": "5.41.7",
+ "resolved": "https://registry.npmjs.org/bullmq/-/bullmq-5.41.7.tgz",
+ "integrity": "sha512-eZbKJSx15bflfzKRiR+dKeLTr/M/YKb4cIp73OdU79PEMHQ6aEFUtbG6R+f0KvLLznI/O01G581U2Eqli6S2ew==",
+ "license": "MIT",
+ "dependencies": {
+ "cron-parser": "^4.9.0",
+ "ioredis": "^5.4.1",
+ "msgpackr": "^1.11.2",
+ "node-abort-controller": "^3.1.1",
+ "semver": "^7.5.4",
+ "tslib": "^2.0.0",
+ "uuid": "^9.0.0"
+ }
+ },
+ "node_modules/bullmq/node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
"node_modules/busboy": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
@@ -4541,7 +5590,6 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
"integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.0",
@@ -4633,9 +5681,9 @@
}
},
"node_modules/chart.js": {
- "version": "4.4.7",
- "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.7.tgz",
- "integrity": "sha512-pwkcKfdzTMAU/+jNosKhNL2bHtJc/sSmYgVbuGTEDhzkrhmyihmP7vUc/5ZK9WopidMDHNe3Wm7jOd/WhuHWuw==",
+ "version": "4.4.8",
+ "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.8.tgz",
+ "integrity": "sha512-IkGZlVpXP+83QpMm4uxEiGqSI7jFizwVtF3+n5Pc3k7sMO+tkd0qxh2OzLhenM0K80xtmAONWGBn082EiBQSDA==",
"license": "MIT",
"dependencies": {
"@kurkle/color": "^0.3.0"
@@ -4894,9 +5942,9 @@
}
},
"node_modules/compression": {
- "version": "1.7.5",
- "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.5.tgz",
- "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==",
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.0.tgz",
+ "integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==",
"license": "MIT",
"dependencies": {
"bytes": "3.1.2",
@@ -5150,6 +6198,18 @@
"node": ">= 4.0.0"
}
},
+ "node_modules/cron-parser": {
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz",
+ "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==",
+ "license": "MIT",
+ "dependencies": {
+ "luxon": "^3.2.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
"node_modules/cross-fetch": {
"version": "3.1.8",
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz",
@@ -5240,7 +6300,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz",
"integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
@@ -5258,7 +6317,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz",
"integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
@@ -5276,7 +6334,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz",
"integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
@@ -5323,16 +6380,16 @@
}
},
"node_modules/dd-trace": {
- "version": "5.35.0",
- "resolved": "https://registry.npmjs.org/dd-trace/-/dd-trace-5.35.0.tgz",
- "integrity": "sha512-buGy1mrW/HjkBiHMVyjW+zAzzJBtZbsC3dSYeO82ALYAGU3FvvGzvBMLcpKxg0cgAOdIlXKN2XZ2Zakj8WYCVw==",
+ "version": "5.40.0",
+ "resolved": "https://registry.npmjs.org/dd-trace/-/dd-trace-5.40.0.tgz",
+ "integrity": "sha512-/UYVCcgpZ9LnnUvIJcNfd1Hj51i8HhqLOn9PCj5gK3wJUn6MY/ie/5da2ZaFtoK2DKQ9OZmFBITLV3+KDl4pjA==",
"hasInstallScript": true,
"license": "(Apache-2.0 OR BSD-3-Clause)",
"dependencies": {
"@datadog/libdatadog": "^0.4.0",
"@datadog/native-appsec": "8.4.0",
- "@datadog/native-iast-rewriter": "2.6.1",
- "@datadog/native-iast-taint-tracking": "3.2.0",
+ "@datadog/native-iast-rewriter": "2.8.0",
+ "@datadog/native-iast-taint-tracking": "3.3.0",
"@datadog/native-metrics": "^3.1.0",
"@datadog/pprof": "5.5.1",
"@datadog/sketches-js": "^2.1.0",
@@ -5356,7 +6413,7 @@
"protobufjs": "^7.2.5",
"retry": "^0.13.1",
"rfdc": "^1.3.1",
- "semver": "^7.5.4",
+ "semifies": "^1.0.0",
"shell-quote": "^1.8.1",
"source-map": "^0.7.4",
"tlhunter-sorted-set": "^0.1.0",
@@ -5421,7 +6478,6 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
"integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
- "dev": true,
"license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0",
@@ -5439,7 +6495,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
"integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"define-data-property": "^1.0.1",
@@ -5846,7 +6901,6 @@
"version": "1.23.9",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz",
"integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"array-buffer-byte-length": "^1.0.2",
@@ -5970,7 +7024,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -5996,7 +7049,6 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz",
"integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==",
- "dev": true,
"license": "MIT",
"dependencies": {
"is-callable": "^1.2.7",
@@ -6052,22 +7104,22 @@
}
},
"node_modules/eslint": {
- "version": "9.19.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz",
- "integrity": "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==",
+ "version": "9.21.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz",
+ "integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.12.1",
- "@eslint/config-array": "^0.19.0",
- "@eslint/core": "^0.10.0",
- "@eslint/eslintrc": "^3.2.0",
- "@eslint/js": "9.19.0",
- "@eslint/plugin-kit": "^0.2.5",
+ "@eslint/config-array": "^0.19.2",
+ "@eslint/core": "^0.12.0",
+ "@eslint/eslintrc": "^3.3.0",
+ "@eslint/js": "9.21.0",
+ "@eslint/plugin-kit": "^0.2.7",
"@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
- "@humanwhocodes/retry": "^0.4.1",
+ "@humanwhocodes/retry": "^0.4.2",
"@types/estree": "^1.0.6",
"@types/json-schema": "^7.0.15",
"ajv": "^6.12.4",
@@ -6564,9 +7616,9 @@
}
},
"node_modules/firebase-admin": {
- "version": "13.0.2",
- "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-13.0.2.tgz",
- "integrity": "sha512-YWVpoN+tZVSRXF0qC0gojoF5bSqvBRbnBk8+xUtFiguM2L4vB7f0moAwV1VVWDDHvTnvQ68OyTMpdp6wKo/clw==",
+ "version": "13.1.0",
+ "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-13.1.0.tgz",
+ "integrity": "sha512-XPKiTyPyvUMZ22EPk4M1oSiZ8/4qFeYwjK88o/DYpGtNbOLKrM6Oc9jTaK+P6Vwn3Vr1+OCyLLJ93Bci382UqA==",
"license": "Apache-2.0",
"dependencies": {
"@fastify/busboy": "^3.0.0",
@@ -6658,7 +7710,6 @@
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
"integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"is-callable": "^1.1.3"
@@ -6781,7 +7832,6 @@
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz",
"integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
@@ -6809,7 +7859,6 @@
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
"integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
- "dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -6975,7 +8024,6 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz",
"integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
@@ -7050,9 +8098,9 @@
}
},
"node_modules/globals": {
- "version": "15.14.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz",
- "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==",
+ "version": "15.15.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz",
+ "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -7066,7 +8114,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
"integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"define-properties": "^1.2.1",
@@ -7207,7 +8254,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
"integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
- "dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -7226,7 +8272,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0"
@@ -7239,7 +8284,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz",
"integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"dunder-proto": "^1.0.0"
@@ -7267,7 +8311,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
@@ -7452,9 +8495,9 @@
}
},
"node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7532,7 +8575,6 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
"integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -7544,9 +8586,9 @@
}
},
"node_modules/intuit-oauth": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/intuit-oauth/-/intuit-oauth-4.1.3.tgz",
- "integrity": "sha512-jamanOys33Z2Uw1bisf+v7M+2rE9syMPmPZzkOt0iUrTp+IUk99QLgirKPukXidfwVdhgURnkTVb2wUcp84D8g==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/intuit-oauth/-/intuit-oauth-4.2.0.tgz",
+ "integrity": "sha512-FG+A4uiJT9xIm07yLtp4bhAdcOMcHukW7gZs6aJvh+3zHUKKqG/zEAtAIZP1d8YCMbPVHu5SbbnMygeM/OVEvg==",
"license": "Apache-2.0",
"dependencies": {
"atob": "2.1.2",
@@ -7562,9 +8604,9 @@
}
},
"node_modules/ioredis": {
- "version": "5.4.2",
- "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.4.2.tgz",
- "integrity": "sha512-0SZXGNGZ+WzISQ67QDyZ2x0+wVxjjUndtD8oSeik/4ajifeiRufed8fCb8QW8VMyi4MXcS+UO1k/0NGhvq1PAg==",
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.5.0.tgz",
+ "integrity": "sha512-7CutT89g23FfSa8MDoIFs2GYYa0PaNiW/OrT+nRyjRXHDZd17HmIgy+reOQ/yhh72NznNjGuS8kbCAcA4Ro4mw==",
"license": "MIT",
"dependencies": {
"@ioredis/commands": "^1.1.1",
@@ -7598,7 +8640,6 @@
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
"integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
@@ -7622,7 +8663,6 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz",
"integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"async-function": "^1.0.0",
@@ -7642,7 +8682,6 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz",
"integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"has-bigints": "^1.0.2"
@@ -7658,7 +8697,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz",
"integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
@@ -7675,7 +8713,6 @@
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
"integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -7704,7 +8741,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz",
"integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
@@ -7722,7 +8758,6 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz",
"integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
@@ -7765,7 +8800,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz",
"integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.3"
@@ -7790,7 +8824,6 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz",
"integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
@@ -7822,7 +8855,6 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
"integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -7835,7 +8867,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz",
"integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
@@ -7852,7 +8883,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
"integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
@@ -7871,7 +8901,6 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
"integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -7884,7 +8913,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz",
"integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.3"
@@ -7912,7 +8940,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz",
"integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
@@ -7929,7 +8956,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz",
"integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
@@ -7947,7 +8973,6 @@
"version": "1.1.15",
"resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
"integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"which-typed-array": "^1.1.16"
@@ -7963,7 +8988,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
"integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -7976,7 +9000,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz",
"integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.3"
@@ -7992,7 +9015,6 @@
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz",
"integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
@@ -8146,16 +9168,16 @@
}
},
"node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
"dev": true,
"license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
},
"engines": {
- "node": ">=4"
+ "node": ">=6"
}
},
"node_modules/json-2-csv": {
@@ -8270,13 +9292,14 @@
}
},
"node_modules/juice": {
- "version": "11.0.0",
- "resolved": "https://registry.npmjs.org/juice/-/juice-11.0.0.tgz",
- "integrity": "sha512-sGF8hPz9/Wg+YXbaNDqc1Iuoaw+J/P9lBHNQKXAGc9pPNjCd4fyPai0Zxj7MRtdjMr0lcgk5PjEIkP2b8R9F3w==",
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/juice/-/juice-11.0.1.tgz",
+ "integrity": "sha512-R3KLud4l/sN9AMmFZs0QY7cugGSiKvPhGyIsufCV5nJ0MjSlngUE7k80TmFeK9I62wOXrjWBtYA1knVs2OkF8w==",
"license": "MIT",
"dependencies": {
"cheerio": "^1.0.0",
"commander": "^12.1.0",
+ "entities": "^4.5.0",
"mensch": "^0.3.4",
"slick": "^1.12.2",
"web-resource-inliner": "^7.0.0"
@@ -8615,6 +9638,15 @@
"node": ">=10"
}
},
+ "node_modules/luxon": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz",
+ "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/make-dir": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
@@ -8839,6 +9871,37 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"license": "MIT"
},
+ "node_modules/msgpackr": {
+ "version": "1.11.2",
+ "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.2.tgz",
+ "integrity": "sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==",
+ "license": "MIT",
+ "optionalDependencies": {
+ "msgpackr-extract": "^3.0.2"
+ }
+ },
+ "node_modules/msgpackr-extract": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz",
+ "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "node-gyp-build-optional-packages": "5.2.2"
+ },
+ "bin": {
+ "download-msgpackr-prebuilds": "bin/download-prebuilds.js"
+ },
+ "optionalDependencies": {
+ "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3",
+ "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3"
+ }
+ },
"node_modules/multer": {
"version": "1.4.5-lts.1",
"resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz",
@@ -8880,6 +9943,12 @@
"node": ">= 0.6"
}
},
+ "node_modules/node-abort-controller": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz",
+ "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==",
+ "license": "MIT"
+ },
"node_modules/node-addon-api": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
@@ -8932,6 +10001,21 @@
"node-gyp-build-test": "build-test.js"
}
},
+ "node_modules/node-gyp-build-optional-packages": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz",
+ "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^2.0.1"
+ },
+ "bin": {
+ "node-gyp-build-optional-packages": "bin.js",
+ "node-gyp-build-optional-packages-optional": "optional.js",
+ "node-gyp-build-optional-packages-test": "build-test.js"
+ }
+ },
"node_modules/node-mailjet": {
"version": "6.0.6",
"resolved": "https://registry.npmjs.org/node-mailjet/-/node-mailjet-6.0.6.tgz",
@@ -9069,7 +10153,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -9079,7 +10162,6 @@
"version": "4.1.7",
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz",
"integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
@@ -9130,6 +10212,22 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/object.getownpropertydescriptors": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz",
+ "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==",
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.0-next.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/object.values": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz",
@@ -9236,7 +10334,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz",
"integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"get-intrinsic": "^1.2.6",
@@ -9250,6 +10347,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/p-finally": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz",
+ "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -9453,7 +10559,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
"integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -9476,9 +10581,9 @@
}
},
"node_modules/prettier": {
- "version": "3.4.2",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
- "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz",
+ "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==",
"dev": true,
"license": "MIT",
"bin": {
@@ -9506,6 +10611,19 @@
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
"license": "MIT"
},
+ "node_modules/promise-callbacks": {
+ "version": "3.8.2",
+ "resolved": "https://registry.npmjs.org/promise-callbacks/-/promise-callbacks-3.8.2.tgz",
+ "integrity": "sha512-g+SziwZr9eLwF+Tejuz0nirmzrYm1Ou4dExaRap1+wG/Bip1FAjMwE+oOqwv6C+CxDCQJ9l0jMSE8ui1oRC/tQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.9.2",
+ "object.getownpropertydescriptors": "2.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/promise-retry": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
@@ -9763,6 +10881,12 @@
"@redis/time-series": "1.1.0"
}
},
+ "node_modules/redis-commands": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz",
+ "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==",
+ "license": "MIT"
+ },
"node_modules/redis-errors": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
@@ -9788,7 +10912,6 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz",
"integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
@@ -9811,14 +10934,12 @@
"version": "0.14.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
- "dev": true,
"license": "MIT"
},
"node_modules/regexp.prototype.flags": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz",
"integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
@@ -9962,7 +11083,6 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz",
"integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
@@ -9982,7 +11102,6 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true,
"license": "MIT"
},
"node_modules/safe-buffer": {
@@ -10009,7 +11128,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz",
"integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -10026,14 +11144,12 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true,
"license": "MIT"
},
"node_modules/safe-regex-test": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
"integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
@@ -10080,6 +11196,12 @@
"integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==",
"license": "BSD-3-Clause"
},
+ "node_modules/semifies": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/semifies/-/semifies-1.0.0.tgz",
+ "integrity": "sha512-xXR3KGeoxTNWPD4aBvL5NUpMTT7WMANr3EWnaS190QVkY52lqqcVRD7Q05UVbBhiWDGWMlJEUam9m7uFFGVScw==",
+ "license": "Apache-2.0"
+ },
"node_modules/semver": {
"version": "7.6.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
@@ -10177,7 +11299,6 @@
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
"integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"define-data-property": "^1.1.4",
@@ -10195,7 +11316,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
"integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"define-data-property": "^1.1.4",
@@ -10211,7 +11331,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz",
"integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"dunder-proto": "^1.0.1",
@@ -10445,9 +11564,9 @@
}
},
"node_modules/soap": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/soap/-/soap-1.1.7.tgz",
- "integrity": "sha512-zKNMtlZhnqhW0jv5z8qVE5A/1Vw/HKXnIFe2bss8s/+tqub4uLU9r20A4mTfiluePHABvm7p2YQjyvFBJjIf9A==",
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/soap/-/soap-1.1.9.tgz",
+ "integrity": "sha512-x6wMhwIwGFnMQiV0tLIygERELwpV/EkidUvzjcCPRx0D16YngNL8z7j5+nFad0Fl5irisXbfY2FKzvF9SEjMog==",
"license": "MIT",
"dependencies": {
"axios": "^1.7.9",
@@ -10462,7 +11581,7 @@
"xml-crypto": "^6.0.0"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=14.17.0"
}
},
"node_modules/socket.io": {
@@ -10557,16 +11676,6 @@
}
}
},
- "node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/source-map-explorer": {
"version": "2.5.3",
"resolved": "https://registry.npmjs.org/source-map-explorer/-/source-map-explorer-2.5.3.tgz",
@@ -10937,7 +12046,6 @@
"version": "1.2.10",
"resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz",
"integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
@@ -10959,7 +12067,6 @@
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz",
"integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
@@ -10978,7 +12085,6 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
"integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
@@ -11243,16 +12349,6 @@
"integrity": "sha512-eGYW4bjf1DtrHzUYxYfAcSytpOkA44zsr7G2n3PV7yOUR23vmkGe3LL4R+1jL9OsXtbsFOwe8XtbCrabeaEFnw==",
"license": "MIT"
},
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
@@ -11366,7 +12462,6 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
"integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
@@ -11381,7 +12476,6 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz",
"integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
@@ -11401,7 +12495,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz",
"integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"available-typed-arrays": "^1.0.7",
@@ -11423,7 +12516,6 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz",
"integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
@@ -11471,7 +12563,6 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
"integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.3",
@@ -11798,7 +12889,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz",
"integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"is-bigint": "^1.1.0",
@@ -11818,7 +12908,6 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz",
"integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bound": "^1.0.2",
@@ -11846,14 +12935,12 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true,
"license": "MIT"
},
"node_modules/which-collection": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
"integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"is-map": "^2.0.3",
@@ -11872,7 +12959,6 @@
"version": "1.1.18",
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz",
"integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"available-typed-arrays": "^1.0.7",
diff --git a/package.json b/package.json
index 91b4bc851..474b36198 100644
--- a/package.json
+++ b/package.json
@@ -20,11 +20,11 @@
},
"dependencies": {
"@aws-sdk/client-cloudwatch-logs": "^3.738.0",
- "@aws-sdk/client-elasticache": "^3.738.0",
- "@aws-sdk/client-s3": "^3.738.0",
- "@aws-sdk/client-secrets-manager": "^3.738.0",
+ "@aws-sdk/client-elasticache": "^3.758.0",
+ "@aws-sdk/client-s3": "^3.758.0",
+ "@aws-sdk/client-secrets-manager": "^3.758.0",
"@aws-sdk/client-ses": "^3.738.0",
- "@aws-sdk/credential-provider-node": "^3.738.0",
+ "@aws-sdk/credential-provider-node": "^3.758.0",
"@aws-sdk/lib-storage": "^3.743.0",
"@aws-sdk/s3-request-presigner": "^3.731.1",
"@opensearch-project/opensearch": "^2.13.0",
@@ -32,29 +32,31 @@
"@socket.io/redis-adapter": "^8.3.0",
"archiver": "^7.0.1",
"aws4": "^1.13.2",
- "axios": "^1.7.7",
+ "axios": "^1.8.1",
+ "bee-queue": "^1.7.1",
"better-queue": "^3.8.12",
"bluebird": "^3.7.2",
"body-parser": "^1.20.3",
- "chart.js": "^4.4.6",
+ "bullmq": "^5.41.7",
+ "chart.js": "^4.4.8",
"cloudinary": "^2.5.1",
- "compression": "^1.7.5",
+ "compression": "^1.8.0",
"cookie-parser": "^1.4.7",
"cors": "2.8.5",
"crisp-status-reporter": "^1.2.2",
"csrf": "^3.1.0",
- "dd-trace": "^5.33.1",
+ "dd-trace": "^5.40.0",
"dinero.js": "^1.9.1",
"dotenv": "^16.4.5",
"express": "^4.21.1",
- "firebase-admin": "^13.0.2",
+ "firebase-admin": "^13.1.0",
"graphql": "^16.10.0",
"graphql-request": "^6.1.0",
"inline-css": "^4.0.3",
- "intuit-oauth": "^4.1.3",
- "ioredis": "^5.4.2",
+ "intuit-oauth": "^4.2.0",
+ "ioredis": "^5.5.0",
"json-2-csv": "^5.5.8",
- "juice": "^11.0.0",
+ "juice": "^11.0.1",
"lodash": "^4.17.21",
"moment": "^2.30.1",
"moment-timezone": "^0.5.47",
@@ -67,7 +69,7 @@
"redis": "^4.7.0",
"rimraf": "^6.0.1",
"skia-canvas": "^2.0.2",
- "soap": "^1.1.7",
+ "soap": "^1.1.9",
"socket.io": "^4.8.1",
"socket.io-adapter": "^2.5.5",
"ssh2-sftp-client": "^11.0.0",
@@ -79,14 +81,14 @@
"xmlbuilder2": "^3.1.1"
},
"devDependencies": {
- "@eslint/js": "^9.19.0",
- "@trivago/prettier-plugin-sort-imports": "^4.3.0",
+ "@eslint/js": "^9.21.0",
+ "@trivago/prettier-plugin-sort-imports": "^5.2.2",
"concurrently": "^8.2.2",
- "eslint": "^9.19.0",
+ "eslint": "^9.21.0",
"eslint-plugin-react": "^7.37.4",
- "globals": "^15.14.0",
+ "globals": "^15.15.0",
"p-limit": "^3.1.0",
- "prettier": "^3.3.3",
+ "prettier": "^3.5.3",
"source-map-explorer": "^2.5.2"
}
}
diff --git a/redis/redis.conf b/redis/redis.conf
index 22533e22d..dafe316cc 100644
--- a/redis/redis.conf
+++ b/redis/redis.conf
@@ -4,3 +4,4 @@ cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
+maxmemory-policy noeviction
diff --git a/server.js b/server.js
index b70b4e7cd..38e5beee9 100644
--- a/server.js
+++ b/server.js
@@ -5,7 +5,7 @@ require("dotenv").config({
});
if (process.env.NODE_ENV) {
- const tracer = require("dd-trace").init({
+ require("dd-trace").init({
profiling: true,
env: process.env.NODE_ENV,
service: "bodyshop-api"
@@ -31,9 +31,11 @@ const { redisSocketEvents } = require("./server/web-sockets/redisSocketEvents");
const { ElastiCacheClient, DescribeCacheClustersCommand } = require("@aws-sdk/client-elasticache");
const { InstanceRegion } = require("./server/utils/instanceMgr");
const StartStatusReporter = require("./server/utils/statusReporter");
+const { registerCleanupTask, initializeCleanupManager } = require("./server/utils/cleanupManager");
+
+const { loadEmailQueue } = require("./server/notifications/queues/emailQueue");
+const { loadAppQueue } = require("./server/notifications/queues/appQueue");
-const cleanupTasks = [];
-let isShuttingDown = false;
const CLUSTER_RETRY_BASE_DELAY = 100;
const CLUSTER_RETRY_MAX_DELAY = 5000;
const CLUSTER_RETRY_JITTER = 100;
@@ -58,7 +60,7 @@ const SOCKETIO_CORS_ORIGIN = [
"https://beta.test.imex.online",
"https://www.beta.test.imex.online",
"https://beta.imex.online",
- "https://www.beta.imex.online",
+ "https://www.beta.imex.online",
"https://www.test.promanager.web-est.com",
"https://test.promanager.web-est.com",
"https://www.promanager.web-est.com",
@@ -143,7 +145,10 @@ const getRedisNodesFromAWS = async () => {
cluster.CacheNodes.map((node) => `${node.Endpoint.Address}:${node.Endpoint.Port}`)
);
} catch (err) {
- logger.log(`Error fetching Redis nodes from AWS: ${err.message}`, "ERROR", "redis", "api");
+ logger.log(`Error fetching Redis nodes from AWS:`, "ERROR", "redis", "api", {
+ message: err?.message,
+ stack: err?.stack
+ });
throw err;
}
};
@@ -167,7 +172,10 @@ const connectToRedisCluster = async () => {
try {
redisServers = JSON.parse(process.env.REDIS_URL);
} catch (error) {
- logger.log(`Failed to parse REDIS_URL: ${error.message}. Exiting...`, "ERROR", "redis", "api");
+ logger.log(`Failed to parse REDIS_URL: ${error.message}. Exiting...`, "ERROR", "redis", "api", {
+ message: error?.message,
+ stack: error?.stack
+ });
process.exit(1);
}
}
@@ -193,11 +201,22 @@ const connectToRedisCluster = async () => {
return new Promise((resolve, reject) => {
redisCluster.on("ready", () => {
logger.log(`Redis cluster connection established.`, "INFO", "redis", "api");
- resolve(redisCluster);
+ if (process.env.NODE_ENV === "development" && process.env?.CLEAR_REDIS_ON_START === "true") {
+ logger.log("[Development] Flushing Redis Cluster on Service start...", "INFO", "redis", "api");
+ const master = redisCluster.nodes("master");
+ Promise.all(master.map((node) => node.flushall())).then(() => {
+ resolve(redisCluster);
+ });
+ } else {
+ resolve(redisCluster);
+ }
});
redisCluster.on("error", (err) => {
- logger.log(`Redis cluster connection failed: ${err.message}`, "ERROR", "redis", "api");
+ logger.log(`Redis cluster connection failed:`, "ERROR", "redis", "api", {
+ message: err?.message,
+ stack: err?.stack
+ });
reject(err);
});
});
@@ -219,17 +238,24 @@ const applySocketIO = async ({ server, app }) => {
const pubClient = redisCluster;
const subClient = pubClient.duplicate();
- pubClient.on("error", (err) => logger.log(`Redis pubClient error: ${err}`, "ERROR", "redis"));
- subClient.on("error", (err) => logger.log(`Redis subClient error: ${err}`, "ERROR", "redis"));
+ pubClient.on("error", (err) =>
+ logger.log(`Redis pubClient error: ${err}`, "ERROR", "redis", "api", {
+ message: err?.message,
+ stack: err?.stack
+ })
+ );
+ subClient.on("error", (err) =>
+ logger.log(`Redis subClient error: ${err}`, "ERROR", "redis", "api", {
+ message: err?.message,
+ stack: err?.stack
+ })
+ );
- process.on("SIGINT", async () => {
+ // Register Redis cleanup
+ registerCleanupTask(async () => {
logger.log("Closing Redis connections...", "INFO", "redis", "api");
- try {
- await Promise.all([pubClient.disconnect(), subClient.disconnect()]);
- logger.log("Redis connections closed. Process will exit.", "INFO", "redis", "api");
- } catch (error) {
- logger.log(`Error closing Redis connections: ${error.message}`, "ERROR", "redis", "api");
- }
+ await Promise.all([pubClient.disconnect(), subClient.disconnect()]);
+ logger.log("Redis connections closed.", "INFO", "redis", "api");
});
const ioRedis = new Server(server, {
@@ -287,6 +313,34 @@ const applySocketIO = async ({ server, app }) => {
return api;
};
+/**
+ * Load Queues for Email and App
+ * @param {Object} options - Queue configuration options
+ * @param {Redis.Cluster} options.pubClient - Redis client for publishing
+ * @param {Object} options.logger - Logger instance
+ * @param {Object} options.redisHelpers - Redis helper functions
+ * @param {Server} options.ioRedis - Socket.IO server instance
+ * @returns {Promise}
+ */
+const loadQueues = async ({ pubClient, logger, redisHelpers, ioRedis }) => {
+ const queueSettings = { pubClient, logger, redisHelpers, ioRedis };
+
+ // Assuming loadEmailQueue and loadAppQueue return Promises
+ const [notificationsEmailsQueue, notificationsAppQueue] = await Promise.all([
+ loadEmailQueue(queueSettings),
+ loadAppQueue(queueSettings)
+ ]);
+
+ // Add error listeners or other setup for queues if needed
+ notificationsEmailsQueue.on("error", (error) => {
+ logger.log(`Error in notificationsEmailsQueue: ${error}`, "ERROR", "queue", "api", null, { error: error?.message });
+ });
+
+ notificationsAppQueue.on("error", (error) => {
+ logger.log(`Error in notificationsAppQueue: ${error}`, "ERROR", "queue", "api", null, { error: error?.message });
+ });
+};
+
/**
* Main function to start the server
* @returns {Promise}
@@ -297,6 +351,9 @@ const main = async () => {
const server = http.createServer(app);
+ // Initialize cleanup manager with signal handlers
+ initializeCleanupManager();
+
const { pubClient, ioRedis } = await applySocketIO({ server, app });
const redisHelpers = applyRedisHelpers({ pubClient, app, logger });
const ioHelpers = applyIOHelpers({ app, redisHelpers, ioRedis, logger });
@@ -304,6 +361,9 @@ const main = async () => {
// Legacy Socket Events
require("./server/web-sockets/web-socket");
+ // Initialize Queues
+ await loadQueues({ pubClient: pubClient, logger, redisHelpers, ioRedis });
+
applyMiddleware({ app });
applyRoutes({ app });
redisSocketEvents({ io: ioRedis, redisHelpers, ioHelpers, logger });
@@ -313,15 +373,11 @@ const main = async () => {
StatusReporter.end();
});
- // Add SIGTERM signal handler
- process.on("SIGTERM", handleSigterm);
- process.on("SIGINT", handleSigterm); // Optional: Handle Ctrl+C
-
try {
await server.listen(port);
logger.log(`Server started on port ${port}`, "INFO", "api");
} catch (error) {
- logger.log(`Server failed to start on port ${port}`, "ERROR", "api", error);
+ logger.log(`Server failed to start on port ${port}`, "ERROR", "api", null, { error: error.message });
}
};
@@ -335,33 +391,3 @@ main().catch((error) => {
// Note: If we want the app to crash on all uncaught async operations, we would
// need to put a `process.exit(1);` here
});
-
-// Register a cleanup task
-function registerCleanupTask(task) {
- cleanupTasks.push(task);
-}
-
-// SIGTERM handler
-async function handleSigterm() {
- if (isShuttingDown) {
- logger.log("sigterm-api", "WARN", null, null, { message: "Shutdown already in progress, ignoring signal." });
- return;
- }
-
- isShuttingDown = true;
-
- logger.log("sigterm-api", "WARN", null, null, { message: "SIGTERM Received. Starting graceful shutdown." });
-
- try {
- for (const task of cleanupTasks) {
- logger.log("sigterm-api", "WARN", null, null, { message: `Running cleanup task: ${task.name}` });
-
- await task();
- }
- logger.log("sigterm-api", "WARN", null, null, { message: `All cleanup tasks completed.` });
- } catch (error) {
- logger.log("sigterm-api-error", "ERROR", null, null, { message: error.message, stack: error.stack });
- }
-
- process.exit(0);
-}
diff --git a/server/accounting/qbo/qbo-callback.js b/server/accounting/qbo/qbo-callback.js
index af6d244d7..f1de7d551 100644
--- a/server/accounting/qbo/qbo-callback.js
+++ b/server/accounting/qbo/qbo-callback.js
@@ -7,7 +7,7 @@ const OAuthClient = require("intuit-oauth");
const client = require("../../graphql-client/graphql-client").client;
const queries = require("../../graphql-client/queries");
const { parse, stringify } = require("querystring");
-const InstanceManager = require("../../utils/instanceMgr").default;
+const { InstanceEndpoints } = require("../../utils/instanceMgr");
const oauthClient = new OAuthClient({
clientId: process.env.QBO_CLIENT_ID,
@@ -17,16 +17,8 @@ const oauthClient = new OAuthClient({
logging: true
});
-let url;
-
-if (process.env.NODE_ENV === "production") {
- //TODO:AIO Add in QBO callbacks.
- url = InstanceManager({ imex: `https://imex.online`, rome: `https://romeonline.io` });
-} else if (process.env.NODE_ENV === "test") {
- url = InstanceManager({ imex: `https://test.imex.online`, rome: `https://test.romeonline.io` });
-} else {
- url = `http://localhost:3000`;
-}
+//TODO:AIO Add in QBO callbacks.
+const url = InstanceEndpoints();
exports.default = async (req, res) => {
const queryString = req.url.split("?").reverse()[0];
diff --git a/server/email/sendemail.js b/server/email/sendemail.js
index 81787fe49..26d5c8560 100644
--- a/server/email/sendemail.js
+++ b/server/email/sendemail.js
@@ -69,11 +69,14 @@ const sendServerEmail = async ({ subject, text }) => {
}
},
(err, info) => {
- logger.log("server-email-failure", err ? "error" : "debug", null, null, { message: err || info });
+ logger.log("server-email-failure", err ? "error" : "debug", null, null, {
+ message: err?.message,
+ stack: err?.stack
+ });
}
);
} catch (error) {
- logger.log("server-email-failure", "error", null, null, { error });
+ logger.log("server-email-failure", "error", null, null, { message: error?.message, stack: error?.stack });
}
};
@@ -92,11 +95,11 @@ const sendTaskEmail = async ({ to, subject, type = "text", html, text, attachmen
},
(err, info) => {
// (message, type, user, record, meta
- logger.log("server-email", err ? "error" : "debug", null, null, { message: err ? err?.message : info });
+ logger.log("server-email", err ? "error" : "debug", null, null, { message: err?.message, stack: err?.stack });
}
);
} catch (error) {
- logger.log("server-email-failure", "error", null, null, { error });
+ logger.log("server-email-failure", "error", null, null, { message: error?.message, stack: error?.stack });
}
};
@@ -125,7 +128,8 @@ const sendEmail = async (req, res) => {
cc: req.body.cc,
subject: req.body.subject,
templateStrings: req.body.templateStrings,
- error
+ errorMessage: error?.message,
+ errorStack: error?.stack
});
}
})
@@ -194,7 +198,8 @@ const sendEmail = async (req, res) => {
cc: req.body.cc,
subject: req.body.subject,
templateStrings: req.body.templateStrings,
- error: err
+ errorMessage: err?.message,
+ errorStack: err?.stack
});
logEmail(req, {
to: req.body.to,
@@ -202,7 +207,7 @@ const sendEmail = async (req, res) => {
subject: req.body.subject,
bodyshopid: req.body.bodyshopid
});
- res.status(500).json({ success: false, error: err });
+ res.status(500).json({ success: false, errorMessage: err?.message, stack: err?.stack });
}
}
);
@@ -270,14 +275,16 @@ ${body.bounce?.bouncedRecipients.map(
},
(err, info) => {
logger.log("sns-error", err ? "error" : "debug", "api", null, {
- message: err ? err?.message : info
+ errorMessage: err?.message,
+ errorStack: err?.stack
});
}
);
}
} catch (error) {
logger.log("sns-error", "ERROR", "api", null, {
- error: JSON.stringify(error)
+ errorMessage: error?.message,
+ errorStack: error?.stack
});
}
res.sendStatus(200);
diff --git a/server/email/tasksEmails.js b/server/email/tasksEmails.js
index 6d787811a..05811e5e2 100644
--- a/server/email/tasksEmails.js
+++ b/server/email/tasksEmails.js
@@ -10,6 +10,7 @@ const generateEmailTemplate = require("./generateTemplate");
const moment = require("moment-timezone");
const { taskEmailQueue } = require("./tasksEmailsQueue");
const mailer = require("./mailer");
+const { InstanceEndpoints } = require("../utils/instanceMgr");
// Initialize the Tasks Email Queue
const tasksEmailQueue = taskEmailQueue();
@@ -83,15 +84,8 @@ const formatPriority = (priority) => {
* @param taskId
* @returns {{header, body: string, subHeader: string}}
*/
-
-const getEndpoints = (bodyshop) =>
- InstanceManager({
- imex: process.env?.NODE_ENV === "test" ? "https://test.imex.online" : "https://imex.online",
- rome: process.env?.NODE_ENV === "test" ? "https//test.romeonline.io" : "https://romeonline.io"
- });
-
const generateTemplateArgs = (title, priority, description, dueDate, bodyshop, job, taskId, dateLine, createdBy) => {
- const endPoints = getEndpoints(bodyshop);
+ const endPoints = InstanceEndpoints();
return {
header: title,
subHeader: `Body Shop: ${bodyshop.shopname} | Priority: ${formatPriority(priority)} ${formatDate(dueDate)} | Created By: ${createdBy || "N/A"}`,
@@ -108,9 +102,8 @@ const generateTemplateArgs = (title, priority, description, dueDate, bodyshop, j
* @param html
* @param taskIds
* @param successCallback
- * @param requestInstance
*/
-const sendMail = (type, to, subject, html, taskIds, successCallback, requestInstance) => {
+const sendMail = (type, to, subject, html, taskIds, successCallback) => {
const fromEmails = InstanceManager({
imex: "ImEX Online ",
rome: "Rome Online "
@@ -136,7 +129,7 @@ const sendMail = (type, to, subject, html, taskIds, successCallback, requestInst
};
/**
- * Send an email to the assigned user.
+ * Email the assigned user.
* @param req
* @param res
* @returns {Promise<*>}
@@ -186,7 +179,7 @@ const taskAssignedEmail = async (req, res) => {
};
/**
- * Send an email to remind the user of their tasks.
+ * Email remind the user of their tasks.
* @param req
* @param res
* @returns {Promise<*>}
@@ -264,11 +257,6 @@ const tasksRemindEmail = async (req, res) => {
}
// There are multiple emails to send to this author.
else {
- const endPoints = InstanceManager({
- imex: process.env?.NODE_ENV === "test" ? "https://test.imex.online" : "https://imex.online",
- rome: process.env?.NODE_ENV === "test" ? "https//test.romeonline.io" : "https://romeonline.io"
- });
-
const allTasks = groupedTasks[recipient.email];
emailData.subject = `New Tasks Reminder - ${allTasks.length} Tasks require your attention`;
emailData.html = generateEmailTemplate({
@@ -278,7 +266,7 @@ const tasksRemindEmail = async (req, res) => {
body: ``
@@ -338,6 +326,5 @@ const tasksRemindEmail = async (req, res) => {
module.exports = {
taskAssignedEmail,
- tasksRemindEmail,
- getEndpoints
+ tasksRemindEmail
};
diff --git a/server/graphql-client/queries.js b/server/graphql-client/queries.js
index 7d52542e5..dec597e49 100644
--- a/server/graphql-client/queries.js
+++ b/server/graphql-client/queries.js
@@ -2765,3 +2765,55 @@ exports.GET_DOCUMENTS_BY_IDS = `
}
`;
+
+exports.GET_JOB_WATCHERS = `
+query GET_JOB_WATCHERS($jobid: uuid!) {
+ job_watchers(where: { jobid: { _eq: $jobid } }) {
+ user_email
+ user {
+ authid
+ employee {
+ id
+ first_name
+ last_name
+ }
+ }
+ }
+ job: jobs_by_pk(id: $jobid) {
+ id
+ ro_number
+ clm_no
+ bodyshop {
+ id
+ shopname
+ }
+ }
+}
+`;
+
+exports.GET_NOTIFICATION_ASSOCIATIONS = `
+query GET_NOTIFICATION_ASSOCIATIONS($emails: [String!]!, $shopid: uuid!) {
+ associations(where: {
+ useremail: { _in: $emails },
+ shopid: { _eq: $shopid }
+ }) {
+ id
+ useremail
+ notification_settings
+ }
+}
+`;
+
+exports.INSERT_NOTIFICATIONS_MUTATION = ` mutation INSERT_NOTIFICATIONS($objects: [notifications_insert_input!]!) {
+ insert_notifications(objects: $objects) {
+ affected_rows
+ returning {
+ id
+ jobid
+ associationid
+ scenario_text
+ fcm_text
+ scenario_meta
+ }
+ }
+ }`;
diff --git a/server/intellipay/intellipay.js b/server/intellipay/intellipay.js
index 71adce9a3..0106cb6da 100644
--- a/server/intellipay/intellipay.js
+++ b/server/intellipay/intellipay.js
@@ -10,12 +10,11 @@ const moment = require("moment");
const logger = require("../utils/logger");
const { sendTaskEmail } = require("../email/sendemail");
const generateEmailTemplate = require("../email/generateTemplate");
-const { getEndpoints } = require("../email/tasksEmails");
const domain = process.env.NODE_ENV ? "secure" : "test";
const { SecretsManagerClient, GetSecretValueCommand } = require("@aws-sdk/client-secrets-manager");
-const { InstanceRegion } = require("../utils/instanceMgr");
+const { InstanceRegion, InstanceEndpoints } = require("../utils/instanceMgr");
const client = new SecretsManagerClient({
region: InstanceRegion()
@@ -443,31 +442,28 @@ exports.postback = async (req, res) => {
});
if (values.origin === "OneLink" && parsedComment.userEmail) {
- try {
- const endPoints = getEndpoints();
- sendTaskEmail({
- to: parsedComment.userEmail,
- subject: `New Payment(s) Received - RO ${jobs.jobs.map((j) => j.ro_number).join(", ")}`,
- type: "html",
- html: generateEmailTemplate({
- header: "New Payment(s) Received",
- subHeader: "",
- body: jobs.jobs
- .map(
- (job) =>
- `Reference: ${job.ro_number || "N/A"} | ${job.ownr_co_nm ? job.ownr_co_nm : `${job.ownr_fn || ""} ${job.ownr_ln || ""}`.trim()} | ${`${job.v_model_yr || ""} ${job.v_make_desc || ""} ${job.v_model_desc || ""}`.trim()} | $${partialPayments.find((p) => p.jobid === job.id).amount}`
- )
- .join("
")
- })
- });
- } catch (error) {
+ sendTaskEmail({
+ to: parsedComment.userEmail,
+ subject: `New Payment(s) Received - RO ${jobs.jobs.map((j) => j.ro_number).join(", ")}`,
+ type: "html",
+ html: generateEmailTemplate({
+ header: "New Payment(s) Received",
+ subHeader: "",
+ body: jobs.jobs
+ .map(
+ (job) =>
+ `Reference: ${job.ro_number || "N/A"} | ${job.ownr_co_nm ? job.ownr_co_nm : `${job.ownr_fn || ""} ${job.ownr_ln || ""}`.trim()} | ${`${job.v_model_yr || ""} ${job.v_make_desc || ""} ${job.v_model_desc || ""}`.trim()} | $${partialPayments.find((p) => p.jobid === job.id).amount}`
+ )
+ .join("
")
+ })
+ }).catch((error) => {
logger.log("intellipay-postback-email-error", "ERROR", req.user?.email, null, {
message: error.message,
jobs,
paymentResult,
...logResponseMeta
});
- }
+ });
}
res.sendStatus(200);
} else if (values.invoice) {
diff --git a/server/notifications/eventHandlers.js b/server/notifications/eventHandlers.js
new file mode 100644
index 000000000..45de5dc3e
--- /dev/null
+++ b/server/notifications/eventHandlers.js
@@ -0,0 +1,140 @@
+/**
+ * @fileoverview Notification event handlers.
+ * This module exports functions to handle various notification events.
+ * Each handler optionally calls the scenarioParser and logs errors if they occur,
+ * then returns a JSON response with a success message.
+ */
+
+const scenarioParser = require("./scenarioParser");
+
+/**
+ * Processes a notification event by invoking the scenario parser.
+ * The scenarioParser is intentionally not awaited so that the response is sent immediately.
+ *
+ * @param {Object} req - Express request object.
+ * @param {Object} res - Express response object.
+ * @param {string} parserPath - The key path to be passed to scenarioParser.
+ * @param {string} successMessage - The message to return on success.
+ * @returns {Promise