From 903118e47d0a0955f85ee82df0236f959b8e9db4 Mon Sep 17 00:00:00 2001 From: robbond Date: Fri, 13 Mar 2026 06:15:32 +0000 Subject: [PATCH 1/7] refactor(actions): phase 5 extract search and reference direct services --- .../services/referenceDataDirectService.js | 111 +++++ actions/services/referenceDataService.js | 2 +- actions/services/searchDirectService.js | 384 ++++++++++++++++++ actions/services/searchService.js | 2 +- 4 files changed, 497 insertions(+), 2 deletions(-) create mode 100644 actions/services/referenceDataDirectService.js create mode 100644 actions/services/searchDirectService.js diff --git a/actions/services/referenceDataDirectService.js b/actions/services/referenceDataDirectService.js new file mode 100644 index 00000000..07e558cc --- /dev/null +++ b/actions/services/referenceDataDirectService.js @@ -0,0 +1,111 @@ +import axios from "axios"; +import { BASE_URL } from "../core/env"; +import { consoleLogger } from "../core/logger"; + +export const getAppealsTypes = () => { + return axios + .get(BASE_URL + "/api/endpoint/getappealtypes_api") + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + let ErrResponse = { + value: [], + errorCode: error.response.status, + errorMsg: error.response.statusText + }; + + return ErrResponse; + }); +}; + +export const getProjectTypes = () => { + return axios + .get(BASE_URL + "/api/endpoint/getprojecttypes_api") + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + let ErrResponse = { + value: [], + errorCode: error.response.status, + errorMsg: error.response.statusText + }; + + return ErrResponse; + }); +}; + +export const getAppealsTypesForNewAppeal = () => { + return axios + .get(BASE_URL + "/api/endpoint/getappealtypesfornewappeal_api") + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + let ErrResponse = { + value: [], + errorCode: error.response.status, + errorMsg: error.response.statusText + }; + + return ErrResponse; + }); +}; + +export const getLPA = () => { + return axios + .get(BASE_URL + "/api/endpoint/getlpa_api") + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + let ErrResponse = { + value: [], + errorCode: error.response.status, + errorMsg: error.response.statusText + }; + + return ErrResponse; + }); +}; + +export const getFormData = (whichForm) => { + return axios + .get(BASE_URL + "/api/endpoint/getformdata_api?whichForm=" + whichForm) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getMandatoryFields = (whichForm) => { + return axios + .get( + BASE_URL + + "/api/endpoint/getmandatoryfields_api?whichForm=" + + whichForm + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getPickLists = (whichForm) => { + return axios + .get(BASE_URL + "/api/endpoint/getpicklists_api?whichForm=" + whichForm) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getNotice = () => { + return axios + .get(BASE_URL + "/api/notices") + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; diff --git a/actions/services/referenceDataService.js b/actions/services/referenceDataService.js index 660ab66b..e2dc6a28 100644 --- a/actions/services/referenceDataService.js +++ b/actions/services/referenceDataService.js @@ -7,7 +7,7 @@ import { getMandatoryFields, getPickLists, getNotice -} from "./legacyActionsService"; +} from "./referenceDataDirectService"; export { getAppealsTypes, diff --git a/actions/services/searchDirectService.js b/actions/services/searchDirectService.js new file mode 100644 index 00000000..5b364c71 --- /dev/null +++ b/actions/services/searchDirectService.js @@ -0,0 +1,384 @@ +import axios from "axios"; +import { BASE_URL } from "../core/env"; +import { consoleLogger } from "../core/logger"; + +export const getBasicSearch = (searchString) => { + return axios + .get( + BASE_URL + + "/api/endpoint/getbasicsearch_api?searchString=" + + searchString + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + return error.response; + }); +}; + +export const getBasicDNSURLSearch = (searchString) => { + return axios + .get( + BASE_URL + + "/api/endpoint/getbasicdnsurlsearch_api?searchString=" + + searchString + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + return error.response; + }); +}; + +export const getAddressSearchPaged = ( + searchString, + pageNumber, + orderBy, + fieldSort, + showNumberOfRecords +) => { + return axios + .get( + "/api/endpoint/getbasicsearch_by_address_paged_api?searchString=" + + searchString + + "&pageNumber=" + + pageNumber + + "&orderby=" + + orderBy + + "&fieldSort=" + + fieldSort + + "&showNumberOfRecords=" + + showNumberOfRecords + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + return error.response; + }); +}; + +export const getBasicSearchPaged = ( + searchString, + pageNumber, + orderBy, + fieldSort, + showNumberOfRecords +) => { + return axios + .get( + "/api/endpoint/getbasicsearchpaged_api?searchString=" + + searchString + + "&pageNumber=" + + pageNumber + + "&orderby=" + + orderBy + + "&fieldSort=" + + fieldSort + + "&showNumberOfRecords=" + + showNumberOfRecords + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + return error.response; + }); +}; + +export const getDNSCoords = () => { + return axios + .get(BASE_URL + "/api/endpoint/getdnscoords_api") + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + let ErrResponse = { + value: [], + errorCode: error.response.status, + errorMsg: error.response.statusText + }; + + return ErrResponse; + }); +}; + +export const getDNSList = (searchString) => { + return axios + .get(BASE_URL + "/api/endpoint/getdnslist_api") + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + return error.response; + }); +}; + +export const getBasicDNSSearch = (searchString) => { + return axios + .get(BASE_URL + "/api/endpoint/getbasicdnssearch_api") + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + return error.response; + }); +}; + +export const getBasicDNSSearchPaged = ( + pageNumber, + orderBy, + fieldSort, + showNumberOfRecords +) => { + return axios + .get( + "/api/endpoint/getbasicdnssearchpaged_api?pageNumber=" + + pageNumber + + "&orderby=" + + orderBy + + "&fieldSort=" + + fieldSort + + "&showNumberOfRecords=" + + showNumberOfRecords + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + return error.response; + }); +}; + +export const getAdvancedSearch = (searchString) => { + return axios + .get( + BASE_URL + + "/api/endpoint/getadvancedsearch_api?searchstring=" + + JSON.stringify(searchString) + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + let ErrResponse = { + value: [], + errorCode: error.response.status, + errorMsg: error.response.statusText + }; + + return ErrResponse; + }); +}; + +export const getAdvancedSearchPaged = ( + searchString, + pageNumber, + orderBy, + fieldSort, + showNumberOfRecords +) => { + return axios + .get( + "/api/endpoint/getadvancedsearchpaged_api?searchstring=" + + JSON.stringify(searchString) + + "&pageNumber=" + + pageNumber + + "&orderby=" + + orderBy + + "&fieldSort=" + + fieldSort + + "&showNumberOfRecords=" + + showNumberOfRecords + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + let ErrResponse = { + value: [], + errorCode: error.response.status, + errorMsg: error.response.statusText + }; + + return ErrResponse; + }); +}; + +export const getBasicSearchDetails = async ( + appealTypeName, + caseReference, + primaryIdAttribute, + incidentID +) => { + return axios + .get( + BASE_URL + + "/api/endpoint/getbasicsearchdetails_api?appealTypeName=" + + appealTypeName + + "&primaryIdAttribute=" + + primaryIdAttribute + + "&incidentID=" + + incidentID + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getBasicPartSavedDetails = ( + appealTypeName, + caseReference, + primaryIdAttribute, + incidentID +) => { + return axios + .get( + BASE_URL + + "/api/endpoint/getbasicpartsaveddetails_api?appealTypeName=" + + appealTypeName + + "&primaryIdAttribute=" + + primaryIdAttribute + + "&incidentID=" + + incidentID + ) + .then((res) => res.data) + .catch((error) => { + console.log("this error", error); + }); +}; + +export const getBasicSearchDetailsPaged = async ( + appealTypeName, + caseReference, + primaryIdAttribute, + incidentIDs +) => { + if (!incidentIDs || incidentIDs.length === 0) return []; + + console.log("=======", primaryIdAttribute); + + const filter = incidentIDs + .map((id) => { + const suffix = + primaryIdAttribute === "pinswg_sipscase" + ? `_${primaryIdAttribute}_value` + : `_${primaryIdAttribute}s_value`; + + return `${suffix} eq ${id}`; + }) + .join(" or "); + + const url = `/api/endpoint/getbasicsearchdetailspaged_api?appealTypeName=${appealTypeName}&primaryIdAttribute=${primaryIdAttribute}&incidentID=${encodeURIComponent( + filter + )}`; + + console.log( + `Fetching ${incidentIDs.length} incidents for appeal type: ${appealTypeName}` + ); + + try { + const res = await axios.get(url); + return res.data.value || []; + } catch (error) { + consoleLogger(error); + return []; + } +}; + +export const getSearchDocumentDetails = (incidentID) => { + return axios + .get( + "/api/endpoint/getsearchdocumentdetails_api?incidentid=" + + incidentID + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + throw error; + }); +}; + +export const getSearchDocumentTypes = (incidentID) => { + return axios + .get( + "/api/endpoint/getsearchdocumentTypes_api?incidentid=" + incidentID + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getSearchDocumentDetailsPaged = ( + incidentID, + pageNumber, + orderBy, + fieldSort, + showNumberOfRecords, + documentType +) => { + return axios + .get( + "/api/endpoint/getsearchdocumentdetailspaged_api?incidentid=" + + incidentID + + "&pageNumber=" + + pageNumber + + "&orderby=" + + orderBy + + "&fieldSort=" + + fieldSort + + "&showNumberOfRecords=" + + showNumberOfRecords + + "&documentType=" + + documentType + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getLinkedCases = (parentIncidentid) => { + return axios + .get( + "/api/endpoint/getlinkedcases_api?parentincidentid=" + + parentIncidentid + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getAddressSearch = async (searchString) => { + const params = new URLSearchParams(searchString); + const str = params.toString(); + + var queryUrl = + BASE_URL + "/api/endpoint/getbasicsearch_by_address_api?" + str; + + var config = { + method: "get", + url: queryUrl + }; + + return axios(config) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + let ErrResponse = { + value: [], + errorCode: error.response.status, + errorMsg: error.response.statusText + }; + return ErrResponse; + }); +}; diff --git a/actions/services/searchService.js b/actions/services/searchService.js index 18b7e7a1..1e262cdc 100644 --- a/actions/services/searchService.js +++ b/actions/services/searchService.js @@ -17,7 +17,7 @@ import { getSearchDocumentTypes, getSearchDocumentDetailsPaged, getLinkedCases -} from "./legacyActionsService"; +} from "./searchDirectService"; export { getBasicSearch, From 344b6efed146c078c53f020a41cac5df3cc047cd Mon Sep 17 00:00:00 2001 From: robbond Date: Fri, 13 Mar 2026 06:24:38 +0000 Subject: [PATCH 2/7] chore(lint): unblock next lint and fix current eslint errors --- .../representationCompleteSubmit.js | 4 +- components/case/summary/utils/helpers.js | 7 +- components/mapping/index.js | 4 +- components/newappeal/buildchecksection.js | 4 +- components/search/dnssearchresults.js | 2 +- components/search/repsonresults.js | 9 +- components/utils/index.js | 12 +- package-lock.json | 1082 +++++++---------- package.json | 4 +- yarn.lock | 772 +++++------- 10 files changed, 815 insertions(+), 1085 deletions(-) diff --git a/components/case/representation/representationCompleteSubmit.js b/components/case/representation/representationCompleteSubmit.js index bb69ed02..fc819e03 100644 --- a/components/case/representation/representationCompleteSubmit.js +++ b/components/case/representation/representationCompleteSubmit.js @@ -727,11 +727,11 @@ const RepCompleteSubmit = (props) => { {" "} {" "} - + {t( "myrepresentations:return-to-myportal-link" )} - + ) : ( <> diff --git a/components/case/summary/utils/helpers.js b/components/case/summary/utils/helpers.js index a014ee4f..fe3d7b31 100644 --- a/components/case/summary/utils/helpers.js +++ b/components/case/summary/utils/helpers.js @@ -1,5 +1,4 @@ import Link from "next/link"; -import { useRouter } from "next/router"; export function capitalizeFirstLetter(val) { return String(val).charAt(0).toUpperCase() + String(val).slice(1); @@ -44,11 +43,9 @@ export function hasOwnPropertyAndNotNull(obj, property) { return obj.hasOwnProperty(property) && obj[property] !== null; } -export function linkedCasesList(linkedCasesReference) { +export function linkedCasesList(linkedCasesReference, locale) { //console.log(linkedCasesReference); - const router = useRouter(); - linkedCasesReference = linkedCasesReference.value || []; return ( @@ -59,7 +56,7 @@ export function linkedCasesList(linkedCasesReference) {
  • { let marker = new maps.Marker({ position: { lat: dataArray[i].lat, lng: dataArray[i].lng }, map, - label: dataArray[i].id, + label: dataArray[i].id }); } }; @@ -78,7 +78,7 @@ const GoogleMapComponent = (props) => { } //src={"https://datamap.gov.wales/maps/pedw-dev/embed#/"} width={"100%"} - maxheight={"400px"} + style={{ maxHeight: "400px" }} height={"500px"} className={"mappingFrame"} > diff --git a/components/newappeal/buildchecksection.js b/components/newappeal/buildchecksection.js index a3a6b5e5..5c30d0ff 100644 --- a/components/newappeal/buildchecksection.js +++ b/components/newappeal/buildchecksection.js @@ -351,9 +351,9 @@ let BuildCheckSection = (props) => { {" "} {" "} - + {t("newappeal:return-to-myportal-link")} - + ) : ( <> diff --git a/components/search/dnssearchresults.js b/components/search/dnssearchresults.js index 2ea31c88..a1154d62 100644 --- a/components/search/dnssearchresults.js +++ b/components/search/dnssearchresults.js @@ -975,7 +975,7 @@ const DNSSearchResults = (props) => { } //src={"https://datamap.gov.wales/maps/pedw-dev/embed#/"} width={"100%"} - maxheight={"400px"} + style={{ maxHeight: "400px" }} height={"500px"} className={"mappingFrame"} > diff --git a/components/search/repsonresults.js b/components/search/repsonresults.js index 2409e142..229a9c49 100644 --- a/components/search/repsonresults.js +++ b/components/search/repsonresults.js @@ -1,6 +1,7 @@ import useTranslation from "next-translate/useTranslation"; import { useRouter } from "next/router"; import _ from "lodash"; +import Link from "next/link"; const RepsOnResults = (props) => { let { t } = useTranslation(); @@ -46,9 +47,9 @@ const RepsOnResults = (props) => { .pinswg_speacialistcaseprocess == 846040000 && isLPA ? true : props.searchDetailsObj[0].value[0] - .pinswg_speacialistcaseprocess == 846040001 - ? true - : false; + .pinswg_speacialistcaseprocess == 846040001 + ? true + : false; return shouldShow; @@ -155,7 +156,7 @@ const RepsOnResults = (props) => { ) : formatDates( detailsObj.pinswg_finalcommentsduedate - ), + ) } )}
    {" "} diff --git a/components/utils/index.js b/components/utils/index.js index 151c97ba..8e8ad905 100644 --- a/components/utils/index.js +++ b/components/utils/index.js @@ -10,7 +10,6 @@ import { getPortalModuleDetails } from "../../actions/services/caseService"; import data from "../../data/collections.json"; -import { useRouter } from "next/router"; import xpath from "xpath"; @@ -775,9 +774,7 @@ export const updateLinks = (input) => { return updated; }; -export const whichRepType = (props) => { - const router = useRouter(); - const { locale } = router; +export const whichRepType = (props, locale) => { let repType; let whichBaseType = props.currentView?.caseReference.repDetails.representationType || @@ -785,14 +782,13 @@ export const whichRepType = (props) => { switch (whichBaseType) { case "Statement": - repType = router.locale == "cy" ? "Datganiad" : "Statment"; + repType = locale == "cy" ? "Datganiad" : "Statment"; break; case "Questionnaire": - repType = router.locale == "cy" ? "Holiadur" : "Questionnaire"; + repType = locale == "cy" ? "Holiadur" : "Questionnaire"; break; case "Final comments": - repType = - router.locale == "cy" ? "Sylwadau terfynol" : "Final comments"; + repType = locale == "cy" ? "Sylwadau terfynol" : "Final comments"; break; default: // code block diff --git a/package-lock.json b/package-lock.json index 73a6296b..dbddd511 100644 --- a/package-lock.json +++ b/package-lock.json @@ -87,8 +87,8 @@ "xpath": "^0.0.32" }, "devDependencies": { - "eslint": "^9.11.1", - "eslint-config-next": "^15.0.3", + "eslint": "^8.57.0", + "eslint-config-next": "^14.2.28", "eslint-plugin-jsdoc": "^48.2.3", "prisma": "^5.0.0" } @@ -603,51 +603,16 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@eslint/config-array": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", - "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", - "dev": true, - "dependencies": { - "@eslint/object-schema": "^2.1.6", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz", - "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", - "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", + "espree": "^9.6.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -655,80 +620,55 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/js": { - "version": "9.26.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.26.0.tgz", - "integrity": "sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/object-schema": { - "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, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", - "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", - "dev": true, - "dependencies": { - "@eslint/core": "^0.13.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@googlemaps/js-api-loader": { "version": "1.16.8", "license": "Apache-2.0" }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node": ">=10.10.0" } }, "node_modules/@humanwhocodes/module-importer": { @@ -743,17 +683,72 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "engines": { - "node": ">=18.18" + "node": ">=12" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/@jridgewell/gen-mapping": { @@ -1046,302 +1041,6 @@ "@nevware21/ts-utils": ">= 0.10.4 < 2.x" } }, - "node_modules/@modelcontextprotocol/sdk": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.2.tgz", - "integrity": "sha512-H9vwztj5OAqHg9GockCQC06k1natgcxWQSRpQcPJf6i5+MWBzfKkRtxGbjQf0X2ihii0ffLZCRGbYV2f2bjNCQ==", - "dev": true, - "dependencies": { - "content-type": "^1.0.5", - "cors": "^2.8.5", - "cross-spawn": "^7.0.3", - "eventsource": "^3.0.2", - "express": "^5.0.1", - "express-rate-limit": "^7.5.0", - "pkce-challenge": "^5.0.0", - "raw-body": "^3.0.0", - "zod": "^3.23.8", - "zod-to-json-schema": "^3.24.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "dev": true, - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/body-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", - "dev": true, - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.0", - "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", - "on-finished": "^2.4.1", - "qs": "^6.14.0", - "raw-body": "^3.0.0", - "type-is": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", - "dev": true, - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "dev": true, - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/express": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", - "dev": true, - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.0", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", - "dev": true, - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "dev": true, - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "dev": true, - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/raw-body": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", - "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.6.3", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/send": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", - "dev": true, - "dependencies": { - "debug": "^4.3.5", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "mime-types": "^3.0.1", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", - "dev": true, - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "dev": true, - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/@napi-rs/wasm-runtime": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.9.tgz", @@ -1379,28 +1078,12 @@ "integrity": "sha512-PAmWhJfJQlP+kxZwCjrVd9QnR5x0R3u0mTXTiZDgSd4h5LdXmjxCCWbN9kq6hkZBOax8Rm3xDW5HagWyJuT37g==" }, "node_modules/@next/eslint-plugin-next": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.3.2.tgz", - "integrity": "sha512-ijVRTXBgnHT33aWnDtmlG+LJD+5vhc9AKTJPquGG5NKXjpKNjc62woIhFtrAcWdBobt8kqjCoaJ0q6sDQoX7aQ==", + "version": "14.2.35", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.35.tgz", + "integrity": "sha512-Jw9A3ICz2183qSsqwi7fgq4SBPiNfmOLmTPXKvlnzstUwyvBrtySiY+8RXJweNAs9KThb1+bYhZh9XWcNOr2zQ==", "dev": true, "dependencies": { - "fast-glob": "3.3.1" - } - }, - "node_modules/@next/eslint-plugin-next/node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" + "glob": "10.3.10" } }, "node_modules/@next/swc-darwin-arm64": { @@ -1682,6 +1365,16 @@ "url": "https://github.com/sponsors/panva" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@pkgr/core": { "version": "0.1.1", "dev": true, @@ -2838,6 +2531,12 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true + }, "node_modules/@unrs/resolver-binding-darwin-arm64": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.7.2.tgz", @@ -3267,8 +2966,8 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", + "devOptional": true, "license": "MIT", - "optional": true, "engines": { "node": ">=8" } @@ -3784,9 +3483,9 @@ "license": "ISC" }, "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dependencies": { "balanced-match": "^1.0.0" } @@ -4320,19 +4019,6 @@ "version": "1.0.3", "license": "MIT" }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/cross-fetch": { "version": "3.1.8", "license": "MIT", @@ -4710,6 +4396,12 @@ "node": ">= 0.4" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "license": "Apache-2.0", @@ -5090,86 +4782,80 @@ } }, "node_modules/eslint": { - "version": "9.26.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.26.0.tgz", - "integrity": "sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.20.0", - "@eslint/config-helpers": "^0.2.1", - "@eslint/core": "^0.13.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.26.0", - "@eslint/plugin-kit": "^0.2.8", - "@humanfs/node": "^0.16.6", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@modelcontextprotocol/sdk": "^1.8.0", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", + "cross-spawn": "^7.0.2", "debug": "^4.3.2", + "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.3.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", + "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3", - "zod": "^3.24.2" + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-next": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.3.2.tgz", - "integrity": "sha512-FerU4DYccO4FgeYFFglz0SnaKRe1ejXQrDb8kWUkTAg036YWi+jUsgg4sIGNCDhAsDITsZaL4MzBWKB6f4G1Dg==", + "version": "14.2.35", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.35.tgz", + "integrity": "sha512-BpLsv01UisH193WyT/1lpHqq5iJ/Orfz9h/NOOlAmTUq4GY349PextQ62K4XpnaM9supeiEn3TaOTeQO07gURg==", "dev": true, "dependencies": { - "@next/eslint-plugin-next": "15.3.2", - "@rushstack/eslint-patch": "^1.10.3", + "@next/eslint-plugin-next": "14.2.35", + "@rushstack/eslint-patch": "^1.3.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jsx-a11y": "^6.10.0", - "eslint-plugin-react": "^7.37.0", - "eslint-plugin-react-hooks": "^5.0.0" + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" }, "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", + "eslint": "^7.23.0 || ^8.0.0", "typescript": ">=3.3.1" }, "peerDependenciesMeta": { @@ -5408,15 +5094,15 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", - "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "version": "5.0.0-canary-7118f5dd7-20230705", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0-canary-7118f5dd7-20230705.tgz", + "integrity": "sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==", "dev": true, "engines": { "node": ">=10" }, "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, "node_modules/eslint-plugin-react/node_modules/doctrine": { @@ -5458,16 +5144,16 @@ } }, "node_modules/eslint-scope": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", - "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -5484,13 +5170,18 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "node_modules/eslint/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -5599,27 +5290,6 @@ "node": ">=0.8.x" } }, - "node_modules/eventsource": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", - "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", - "dev": true, - "dependencies": { - "eventsource-parser": "^3.0.1" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/eventsource-parser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.1.tgz", - "integrity": "sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==", - "dev": true, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/express": { "version": "4.21.2", "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", @@ -5665,21 +5335,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/express-rate-limit": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.0.tgz", - "integrity": "sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==", - "dev": true, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/express-rate-limit" - }, - "peerDependencies": { - "express": "^4.11 || 5 || ^5.0.0-beta.1" - } - }, "node_modules/express/node_modules/cookie": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", @@ -5787,15 +5442,15 @@ "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==" }, "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { - "flat-cache": "^4.0.0" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=16.0.0" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/file-selector": { @@ -5878,22 +5533,23 @@ } }, "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.4" + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=16" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz", + "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==", "dev": true }, "node_modules/follow-redirects": { @@ -5944,6 +5600,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/form-data": { "version": "4.0.0", "license": "MIT", @@ -6119,6 +5791,29 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "license": "ISC", @@ -6133,13 +5828,31 @@ "version": "0.4.1", "license": "BSD-2-Clause" }, - "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, + "dependencies": { + "brace-expansion": "^2.0.2" + }, "engines": { - "node": ">=18" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6738,8 +6451,8 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "devOptional": true, "license": "MIT", - "optional": true, "engines": { "node": ">=8" } @@ -6815,6 +6528,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-promise": { "version": "2.2.2", "license": "MIT" @@ -6992,6 +6714,24 @@ "node": ">= 0.4" } }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jay-peg": { "version": "1.0.2", "license": "MIT", @@ -7351,6 +7091,12 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, "node_modules/make-cancellable-promise": { "version": "1.3.2", "license": "MIT", @@ -7528,6 +7274,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/minizlib": { "version": "2.1.2", "license": "MIT", @@ -8502,6 +8257,22 @@ "version": "1.0.7", "license": "MIT" }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/path-to-regexp": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", @@ -8552,15 +8323,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pkce-challenge": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz", - "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==", - "dev": true, - "engines": { - "node": ">=16.20.0" - } - }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "dev": true, @@ -9491,8 +9253,8 @@ }, "node_modules/rimraf": { "version": "3.0.2", + "devOptional": true, "license": "ISC", - "optional": true, "dependencies": { "glob": "^7.1.3" }, @@ -9505,8 +9267,8 @@ }, "node_modules/rimraf/node_modules/glob": { "version": "7.2.3", + "devOptional": true, "license": "ISC", - "optional": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9522,37 +9284,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "dev": true, - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/router/node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "dev": true - }, - "node_modules/router/node_modules/path-to-regexp": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", - "dev": true, - "engines": { - "node": ">=16" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "dev": true, @@ -9986,6 +9717,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/simple-concat": { "version": "1.0.1", "funding": [ @@ -10132,8 +9875,8 @@ }, "node_modules/string-width": { "version": "4.2.3", + "devOptional": true, "license": "MIT", - "optional": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -10143,10 +9886,31 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "node_modules/string-width/node_modules/emoji-regex": { "version": "8.0.0", - "license": "MIT", - "optional": true + "devOptional": true, + "license": "MIT" }, "node_modules/string.prototype.includes": { "version": "2.0.0", @@ -10251,8 +10015,21 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", + "devOptional": true, "license": "MIT", - "optional": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -10695,6 +10472,12 @@ "version": "2.20.3", "license": "MIT" }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, "node_modules/third-party-capital": { "version": "1.0.20", "license": "ISC" @@ -11441,6 +11224,97 @@ "node": ">=0.10.0" } }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "license": "ISC" @@ -11526,24 +11400,6 @@ "node_modules/zenscroll": { "version": "4.0.2", "license": "Unlicense" - }, - "node_modules/zod": { - "version": "3.24.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.4.tgz", - "integrity": "sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/zod-to-json-schema": { - "version": "3.24.5", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz", - "integrity": "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==", - "dev": true, - "peerDependencies": { - "zod": "^3.24.1" - } } } -} \ No newline at end of file +} diff --git a/package.json b/package.json index bb9fbe27..36af15ac 100644 --- a/package.json +++ b/package.json @@ -100,8 +100,8 @@ "@react-pdf/pdfkit": "3.1.0" }, "devDependencies": { - "eslint": "^9.11.1", - "eslint-config-next": "^15.0.3", + "eslint": "^8.57.0", + "eslint-config-next": "^14.2.28", "eslint-plugin-jsdoc": "^48.2.3", "prisma": "^5.0.0" } diff --git a/yarn.lock b/yarn.lock index ca119fbe..e9367cd3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -259,93 +259,62 @@ dependencies: eslint-visitor-keys "^3.4.3" -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1": version "4.12.1" resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== -"@eslint/config-array@^0.20.0": - version "0.20.0" - resolved "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz" - integrity sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ== - dependencies: - "@eslint/object-schema" "^2.1.6" - debug "^4.3.1" - minimatch "^3.1.2" - -"@eslint/config-helpers@^0.2.1": - version "0.2.2" - resolved "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz" - integrity sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg== - -"@eslint/core@^0.13.0": - version "0.13.0" - resolved "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz" - integrity sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw== - dependencies: - "@types/json-schema" "^7.0.15" - -"@eslint/eslintrc@^3.3.1": - version "3.3.1" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz" - integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^10.0.1" - globals "^14.0.0" + espree "^9.6.0" + globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.26.0": - version "9.26.0" - resolved "https://registry.npmjs.org/@eslint/js/-/js-9.26.0.tgz" - integrity sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ== - -"@eslint/object-schema@^2.1.6": - version "2.1.6" - resolved "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz" - integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== - -"@eslint/plugin-kit@^0.2.8": - version "0.2.8" - resolved "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz" - integrity sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA== - dependencies: - "@eslint/core" "^0.13.0" - levn "^0.4.1" +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== "@googlemaps/js-api-loader@^1.13.8": version "1.16.8" -"@humanfs/core@^0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz" - integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== - -"@humanfs/node@^0.16.6": - version "0.16.6" - resolved "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz" - integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== dependencies: - "@humanfs/core" "^0.19.1" - "@humanwhocodes/retry" "^0.3.0" + "@humanwhocodes/object-schema" "^2.0.3" + debug "^4.3.1" + minimatch "^3.0.5" "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" -"@humanwhocodes/retry@^0.3.0": - version "0.3.1" - resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz" - integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== +"@humanwhocodes/object-schema@^2.0.3": + version "2.0.3" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== -"@humanwhocodes/retry@^0.4.2": - version "0.4.3" - resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz" - integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" "@jridgewell/gen-mapping@^0.3.5": version "0.3.5" @@ -505,22 +474,6 @@ dependencies: "@nevware21/ts-utils" ">= 0.10.4 < 2.x" -"@modelcontextprotocol/sdk@^1.8.0": - version "1.11.2" - resolved "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.2.tgz" - integrity sha512-H9vwztj5OAqHg9GockCQC06k1natgcxWQSRpQcPJf6i5+MWBzfKkRtxGbjQf0X2ihii0ffLZCRGbYV2f2bjNCQ== - dependencies: - content-type "^1.0.5" - cors "^2.8.5" - cross-spawn "^7.0.3" - eventsource "^3.0.2" - express "^5.0.1" - express-rate-limit "^7.5.0" - pkce-challenge "^5.0.0" - raw-body "^3.0.0" - zod "^3.23.8" - zod-to-json-schema "^3.24.1" - "@nevware21/ts-async@>= 0.5.2 < 2.x": version "0.5.2" dependencies: @@ -537,12 +490,12 @@ resolved "https://registry.npmjs.org/@next/env/-/env-14.2.28.tgz" integrity sha512-PAmWhJfJQlP+kxZwCjrVd9QnR5x0R3u0mTXTiZDgSd4h5LdXmjxCCWbN9kq6hkZBOax8Rm3xDW5HagWyJuT37g== -"@next/eslint-plugin-next@15.3.2": - version "15.3.2" - resolved "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.3.2.tgz" - integrity sha512-ijVRTXBgnHT33aWnDtmlG+LJD+5vhc9AKTJPquGG5NKXjpKNjc62woIhFtrAcWdBobt8kqjCoaJ0q6sDQoX7aQ== +"@next/eslint-plugin-next@14.2.35": + version "14.2.35" + resolved "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.35.tgz" + integrity sha512-Jw9A3ICz2183qSsqwi7fgq4SBPiNfmOLmTPXKvlnzstUwyvBrtySiY+8RXJweNAs9KThb1+bYhZh9XWcNOr2zQ== dependencies: - fast-glob "3.3.1" + glob "10.3.10" "@next/swc-darwin-x64@14.2.28": version "14.2.28" @@ -565,7 +518,7 @@ "@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" -"@nodelib/fs.walk@^1.2.3": +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" dependencies: "@nodelib/fs.scandir" "2.1.5" @@ -618,6 +571,11 @@ "@panva/hkdf@^1.0.2", "@panva/hkdf@^1.1.1": version "1.2.1" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + "@pkgr/core@^0.1.0": version "0.1.1" @@ -777,7 +735,7 @@ resolved "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz" integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== -"@rushstack/eslint-patch@^1.10.3": +"@rushstack/eslint-patch@^1.3.3": version "1.10.4" "@scarf/scarf@=1.4.0": @@ -1263,7 +1221,7 @@ "@types/cookie@0.6.0": version "0.6.0" -"@types/estree@^1.0.5", "@types/estree@^1.0.6": +"@types/estree@^1.0.5": version "1.0.7" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz" integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== @@ -1281,7 +1239,7 @@ "@types/react" "*" hoist-non-react-statics "^3.3.0" -"@types/json-schema@^7.0.15", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.8": +"@types/json-schema@^7.0.6", "@types/json-schema@^7.0.8": version "7.0.15" "@types/json5@^0.0.29": @@ -1425,6 +1383,11 @@ "@typescript-eslint/types" "8.32.0" eslint-visitor-keys "^4.2.0" +"@ungap/structured-clone@^1.2.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" + integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== + "@unrs/resolver-binding-darwin-x64@1.7.2": version "1.7.2" resolved "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.7.2.tgz" @@ -1536,14 +1499,6 @@ abbrev@1: abs-svg-path@^0.1.1: version "0.1.1" -accepts@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz" - integrity sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng== - dependencies: - mime-types "^3.0.0" - negotiator "^1.0.0" - accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" dependencies: @@ -1556,7 +1511,7 @@ acorn-import-attributes@^1.9.5: acorn-jsx@^5.3.2: version "5.3.2" -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.14.0, acorn@^8.7.1, acorn@^8.8.2: +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.14.0, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: version "8.14.1" resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz" integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== @@ -1585,11 +1540,21 @@ ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: ansi-regex@^5.0.1: version "5.0.1" -ansi-styles@^4.1.0: +ansi-regex@^6.2.2: + version "6.2.2" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz" + integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" dependencies: color-convert "^2.0.1" +ansi-styles@^6.1.0: + version "6.2.3" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz" + integrity sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== + anymatch@~3.1.2: version "3.1.3" dependencies: @@ -1800,21 +1765,6 @@ bignumber.js@9.0.0: binary-extensions@^2.0.0: version "2.3.0" -body-parser@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz" - integrity sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg== - dependencies: - bytes "^3.1.2" - content-type "^1.0.5" - debug "^4.4.0" - http-errors "^2.0.0" - iconv-lite "^0.6.3" - on-finished "^2.4.1" - qs "^6.14.0" - raw-body "^3.0.0" - type-is "^2.0.0" - body-parser@1.20.3: version "1.20.3" dependencies: @@ -1840,10 +1790,10 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== +brace-expansion@^2.0.1, brace-expansion@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== dependencies: balanced-match "^1.0.0" @@ -1881,12 +1831,12 @@ busboy@1.6.0: dependencies: streamsearch "^1.1.0" -bytes@^3.1.2, bytes@3.1.2: - version "3.1.2" - bytes@3.0.0: version "3.0.0" +bytes@3.1.2: + version "3.1.2" + call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" @@ -2062,19 +2012,12 @@ concat-map@0.0.1: console-control-strings@^1.0.0, console-control-strings@^1.1.0: version "1.1.0" -content-disposition@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz" - integrity sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg== - dependencies: - safe-buffer "5.2.1" - content-disposition@0.5.4: version "0.5.4" dependencies: safe-buffer "5.2.1" -content-type@^1.0.5, content-type@~1.0.4, content-type@~1.0.5: +content-type@~1.0.4, content-type@~1.0.5: version "1.0.5" continuation-local-storage@^3.2.1: @@ -2086,11 +2029,6 @@ continuation-local-storage@^3.2.1: cookie-cutter@^0.2.0: version "0.2.0" -cookie-signature@^1.2.1: - version "1.2.2" - resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz" - integrity sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg== - cookie-signature@1.0.6: version "1.0.6" @@ -2102,11 +2040,6 @@ cookie@^0.7.0: resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz" integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== -cookie@^0.7.1: - version "0.7.2" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz" - integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== - cookie@0.6.0: version "0.6.0" @@ -2128,20 +2061,12 @@ core-js-pure@^3.30.2: core-util-is@~1.0.0: version "1.0.3" -cors@^2.8.5: - version "2.8.5" - resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - cross-fetch@^3.1.5: version "3.1.8" dependencies: node-fetch "^2.6.12" -cross-spawn@^7.0.3, cross-spawn@^7.0.6: +cross-spawn@^7.0.2, cross-spawn@^7.0.6: version "7.0.6" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== @@ -2302,12 +2227,12 @@ delayed-stream@~1.0.0: delegates@^1.0.0: version "1.0.0" -depd@^2.0.0, depd@2.0.0: - version "2.0.0" - depd@~1.1.2: version "1.1.2" +depd@2.0.0: + version "2.0.0" + dequal@^2.0.3: version "2.0.3" @@ -2335,7 +2260,7 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" -doctrine@3.0.0: +doctrine@^3.0.0, doctrine@3.0.0: version "3.0.0" dependencies: esutils "^2.0.2" @@ -2384,6 +2309,11 @@ dunder-proto@^1.0.0, dunder-proto@^1.0.1: es-errors "^1.3.0" gopd "^1.2.0" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ecdsa-sig-formatter@1.0.11: version "1.0.11" dependencies: @@ -2405,6 +2335,8 @@ emoji-regex@^10.3.0: emoji-regex@^8.0.0: version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== emoji-regex@^9.2.2: version "9.2.2" @@ -2412,12 +2344,12 @@ emoji-regex@^9.2.2: emojis-list@^3.0.0: version "3.0.0" -encodeurl@^2.0.0, encodeurl@~2.0.0: - version "2.0.0" - encodeurl@~1.0.2: version "1.0.2" +encodeurl@~2.0.0: + version "2.0.0" + encoding@^0.1.0: version "0.1.13" resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" @@ -2579,7 +2511,7 @@ es6-promise@^4.2.8: escalade@^3.1.2: version "3.2.0" -escape-html@^1.0.3, escape-html@~1.0.3: +escape-html@~1.0.3: version "1.0.3" escape-string-regexp@^4.0.0: @@ -2595,21 +2527,21 @@ escodegen@^1.8.1: optionalDependencies: source-map "~0.6.1" -eslint-config-next@^15.0.3: - version "15.3.2" - resolved "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.3.2.tgz" - integrity sha512-FerU4DYccO4FgeYFFglz0SnaKRe1ejXQrDb8kWUkTAg036YWi+jUsgg4sIGNCDhAsDITsZaL4MzBWKB6f4G1Dg== +eslint-config-next@^14.2.28: + version "14.2.35" + resolved "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.35.tgz" + integrity sha512-BpLsv01UisH193WyT/1lpHqq5iJ/Orfz9h/NOOlAmTUq4GY349PextQ62K4XpnaM9supeiEn3TaOTeQO07gURg== dependencies: - "@next/eslint-plugin-next" "15.3.2" - "@rushstack/eslint-patch" "^1.10.3" + "@next/eslint-plugin-next" "14.2.35" + "@rushstack/eslint-patch" "^1.3.3" "@typescript-eslint/eslint-plugin" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" "@typescript-eslint/parser" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" eslint-import-resolver-node "^0.3.6" eslint-import-resolver-typescript "^3.5.2" - eslint-plugin-import "^2.31.0" - eslint-plugin-jsx-a11y "^6.10.0" - eslint-plugin-react "^7.37.0" - eslint-plugin-react-hooks "^5.0.0" + eslint-plugin-import "^2.28.1" + eslint-plugin-jsx-a11y "^6.7.1" + eslint-plugin-react "^7.33.2" + eslint-plugin-react-hooks "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9: version "0.3.9" @@ -2638,7 +2570,7 @@ eslint-module-utils@^2.12.0: dependencies: debug "^3.2.7" -eslint-plugin-import@*, eslint-plugin-import@^2.31.0: +eslint-plugin-import@*, eslint-plugin-import@^2.28.1: version "2.31.0" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz" integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== @@ -2678,7 +2610,7 @@ eslint-plugin-jsdoc@^48.2.3: spdx-expression-parse "^4.0.0" synckit "^0.9.1" -eslint-plugin-jsx-a11y@^6.10.0: +eslint-plugin-jsx-a11y@^6.7.1: version "6.10.0" dependencies: aria-query "~5.1.3" @@ -2698,12 +2630,12 @@ eslint-plugin-jsx-a11y@^6.10.0: safe-regex-test "^1.0.3" string.prototype.includes "^2.0.0" -eslint-plugin-react-hooks@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz" - integrity sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg== +"eslint-plugin-react-hooks@^4.5.0 || 5.0.0-canary-7118f5dd7-20230705": + version "5.0.0-canary-7118f5dd7-20230705" + resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0-canary-7118f5dd7-20230705.tgz" + integrity sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw== -eslint-plugin-react@^7.37.0: +eslint-plugin-react@^7.33.2: version "7.37.5" resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz" integrity sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA== @@ -2727,10 +2659,10 @@ eslint-plugin-react@^7.37.0: string.prototype.matchall "^4.0.12" string.prototype.repeat "^1.0.0" -eslint-scope@^8.3.0: - version "8.3.0" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz" - integrity sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -2741,7 +2673,7 @@ eslint-scope@5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-visitor-keys@^3.4.3: +eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: version "3.4.3" eslint-visitor-keys@^4.2.0: @@ -2749,50 +2681,51 @@ eslint-visitor-keys@^4.2.0: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz" integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== -eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0 || ^9.0.0", "eslint@^7.23.0 || ^8.0.0 || ^9.0.0", "eslint@^8.57.0 || ^9.0.0", eslint@^9.11.1: - version "9.26.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-9.26.0.tgz" - integrity sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ== +eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0 || ^9.0.0", "eslint@^7.23.0 || ^8.0.0", eslint@^8.57.0, "eslint@^8.57.0 || ^9.0.0": + version "8.57.1" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.12.1" - "@eslint/config-array" "^0.20.0" - "@eslint/config-helpers" "^0.2.1" - "@eslint/core" "^0.13.0" - "@eslint/eslintrc" "^3.3.1" - "@eslint/js" "9.26.0" - "@eslint/plugin-kit" "^0.2.8" - "@humanfs/node" "^0.16.6" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" "@humanwhocodes/module-importer" "^1.0.1" - "@humanwhocodes/retry" "^0.4.2" - "@modelcontextprotocol/sdk" "^1.8.0" - "@types/estree" "^1.0.6" - "@types/json-schema" "^7.0.15" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" ajv "^6.12.4" chalk "^4.0.0" - cross-spawn "^7.0.6" + cross-spawn "^7.0.2" debug "^4.3.2" + doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^8.3.0" - eslint-visitor-keys "^4.2.0" - espree "^10.3.0" - esquery "^1.5.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" - file-entry-cache "^8.0.0" + file-entry-cache "^6.0.1" find-up "^5.0.0" glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.3" - zod "^3.24.2" + strip-ansi "^6.0.1" + text-table "^0.2.0" -espree@^10.0.1, espree@^10.1.0, espree@^10.3.0: +espree@^10.1.0: version "10.3.0" resolved "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz" integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== @@ -2801,13 +2734,31 @@ espree@^10.0.1, espree@^10.1.0, espree@^10.3.0: acorn-jsx "^5.3.2" eslint-visitor-keys "^4.2.0" +espree@^9.6.0: + version "9.6.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +espree@^9.6.1: + version "9.6.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + esprima@^4.0.1: version "4.0.1" esprima@1.2.2: version "1.2.2" -esquery@^1.5.0, esquery@^1.6.0: +esquery@^1.4.2, esquery@^1.6.0: version "1.6.0" dependencies: estraverse "^5.1.0" @@ -2829,7 +2780,7 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: esutils@^2.0.2: version "2.0.3" -etag@^1.8.1, etag@~1.8.1: +etag@~1.8.1: version "1.8.1" eventemitter3@^2.0.3: @@ -2846,24 +2797,7 @@ eventemitter3@^5.0.1: events@^3.0.0, events@^3.2.0, events@^3.3.0: version "3.3.0" -eventsource-parser@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.1.tgz" - integrity sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA== - -eventsource@^3.0.2: - version "3.0.7" - resolved "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz" - integrity sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA== - dependencies: - eventsource-parser "^3.0.1" - -express-rate-limit@^7.5.0: - version "7.5.0" - resolved "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.0.tgz" - integrity sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg== - -"express@^4.11 || 5 || ^5.0.0-beta.1", express@^4.18.2: +express@^4.18.2: version "4.21.2" resolved "https://registry.npmjs.org/express/-/express-4.21.2.tgz" integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== @@ -2900,39 +2834,6 @@ express-rate-limit@^7.5.0: utils-merge "1.0.1" vary "~1.1.2" -express@^5.0.1: - version "5.1.0" - resolved "https://registry.npmjs.org/express/-/express-5.1.0.tgz" - integrity sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA== - dependencies: - accepts "^2.0.0" - body-parser "^2.2.0" - content-disposition "^1.0.0" - content-type "^1.0.5" - cookie "^0.7.1" - cookie-signature "^1.2.1" - debug "^4.4.0" - encodeurl "^2.0.0" - escape-html "^1.0.3" - etag "^1.8.1" - finalhandler "^2.1.0" - fresh "^2.0.0" - http-errors "^2.0.0" - merge-descriptors "^2.0.0" - mime-types "^3.0.0" - on-finished "^2.4.1" - once "^1.4.0" - parseurl "^1.3.3" - proxy-addr "^2.0.7" - qs "^6.14.0" - range-parser "^1.2.1" - router "^2.2.0" - send "^1.1.0" - serve-static "^2.2.0" - statuses "^2.0.1" - type-is "^2.0.1" - vary "^1.1.2" - extend@^3.0.2: version "3.0.2" @@ -2960,17 +2861,6 @@ fast-glob@^3.3.2: merge2 "^1.3.0" micromatch "^4.0.8" -fast-glob@3.3.1: - version "3.3.1" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz" - integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - fast-json-patch@^3.0.0-1: version "3.1.1" resolved "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz" @@ -3009,12 +2899,12 @@ fflate@^0.8.2: resolved "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz" integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A== -file-entry-cache@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz" - integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: - flat-cache "^4.0.0" + flat-cache "^3.0.4" file-selector@^0.6.0: version "0.6.0" @@ -3036,18 +2926,6 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -finalhandler@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz" - integrity sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q== - dependencies: - debug "^4.4.0" - encodeurl "^2.0.0" - escape-html "^1.0.3" - on-finished "^2.4.1" - parseurl "^1.3.3" - statuses "^2.0.1" - finalhandler@1.3.1: version "1.3.1" dependencies: @@ -3065,18 +2943,19 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -flat-cache@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz" - integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== dependencies: flatted "^3.2.9" - keyv "^4.5.4" + keyv "^4.5.3" + rimraf "^3.0.2" flatted@^3.2.9: - version "3.3.3" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz" - integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== + version "3.4.1" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz" + integrity sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ== follow-redirects@^1.15.6: version "1.15.9" @@ -3101,6 +2980,14 @@ for-each@^0.3.3, for-each@^0.3.5: dependencies: is-callable "^1.2.7" +foreground-child@^3.1.0: + version "3.3.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== + dependencies: + cross-spawn "^7.0.6" + signal-exit "^4.0.1" + form-data@^4.0.0: version "4.0.0" dependencies: @@ -3116,11 +3003,6 @@ format@^0.2.0: forwarded@0.2.0: version "0.2.0" -fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz" - integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A== - fresh@0.5.2: version "0.5.2" @@ -3232,6 +3114,17 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@10.3.10: + version "10.3.10" + resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + glob@7.1.6: version "7.1.6" dependencies: @@ -3242,10 +3135,12 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^14.0.0: - version "14.0.0" - resolved "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz" - integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" globalthis@^1.0.4: version "1.0.4" @@ -3358,15 +3253,6 @@ hsl-to-hex@^1.0.0: hsl-to-rgb-for-reals@^1.1.0: version "1.1.1" -http-errors@^2.0.0, http-errors@2.0.0: - version "2.0.0" - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - http-errors@~1.8.1: version "1.8.1" dependencies: @@ -3376,6 +3262,15 @@ http-errors@~1.8.1: statuses ">= 1.5.0 < 2" toidentifier "1.0.1" +http-errors@2.0.0: + version "2.0.0" + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + http-proxy-agent@^7.0.0: version "7.0.2" dependencies: @@ -3402,13 +3297,6 @@ iconv-lite@^0.6.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" -iconv-lite@^0.6.3, iconv-lite@0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - iconv-lite@0.4.24: version "0.4.24" dependencies: @@ -3626,14 +3514,14 @@ is-number-object@^1.1.1: is-number@^7.0.0: version "7.0.0" +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + is-promise@^2.1.0: version "2.2.2" -is-promise@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz" - integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== - is-regex@^1.1.4, is-regex@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz" @@ -3725,6 +3613,15 @@ iterator.prototype@^1.1.4: has-symbols "^1.1.0" set-function-name "^2.0.2" +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jay-peg@^1.0.2: version "1.0.2" dependencies: @@ -3853,7 +3750,7 @@ jws@^4.0.0: jwa "^2.0.0" safe-buffer "^5.0.1" -keyv@^4.5.4: +keyv@^4.5.3: version "4.5.4" resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== @@ -3963,6 +3860,11 @@ lowlight@^1.17.0: fault "^1.0.0" highlight.js "~10.7.0" +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + lru-cache@^6.0.0: version "6.0.0" dependencies: @@ -3990,19 +3892,9 @@ mdn-data@2.0.30: media-engine@^1.0.3: version "1.0.3" -media-typer@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz" - integrity sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw== - media-typer@0.3.0: version "0.3.0" -merge-descriptors@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz" - integrity sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g== - merge-descriptors@1.0.3: version "1.0.3" @@ -4018,17 +3910,12 @@ merge2@^1.3.0: methods@~1.1.2: version "1.1.2" -micromatch@^4.0.4, micromatch@^4.0.8: +micromatch@^4.0.8: version "4.0.8" dependencies: braces "^3.0.3" picomatch "^2.3.1" -mime-db@^1.54.0: - version "1.54.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz" - integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== - "mime-db@>= 1.43.0 < 2": version "1.53.0" @@ -4040,13 +3927,6 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: dependencies: mime-db "1.52.0" -mime-types@^3.0.0, mime-types@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz" - integrity sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA== - dependencies: - mime-db "^1.54.0" - mime@1.6.0: version "1.6.0" @@ -4060,7 +3940,7 @@ minim@~0.23.8: dependencies: lodash "^4.15.0" -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" dependencies: brace-expansion "^1.1.7" @@ -4072,6 +3952,13 @@ minimatch@^7.4.3: dependencies: brace-expansion "^2.0.1" +minimatch@^9.0.1: + version "9.0.9" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz" + integrity sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg== + dependencies: + brace-expansion "^2.0.2" + minimatch@^9.0.4: version "9.0.5" resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" @@ -4089,6 +3976,11 @@ minipass@^3.0.0: dependencies: yallist "^4.0.0" +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.1.3" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz" + integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A== + minipass@^5.0.0: version "5.0.0" @@ -4144,11 +4036,6 @@ napi-postinstall@^0.2.2: natural-compare@^1.4.0: version "1.4.0" -negotiator@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz" - integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg== - negotiator@0.6.3: version "0.6.3" @@ -4317,7 +4204,7 @@ oauth4webapi@^2.10.4, oauth4webapi@^2.4.0: object-assign@^3.0.0: version "3.0.0" -object-assign@^4, object-assign@^4.1.1: +object-assign@^4.1.1: version "4.1.1" object-hash@^2.2.0: @@ -4389,7 +4276,7 @@ object.values@^1.1.6, object.values@^1.2.0, object.values@^1.2.1: oidc-token-hash@^5.0.3: version "5.0.3" -on-finished@^2.4.1, on-finished@2.4.1: +on-finished@2.4.1: version "2.4.1" dependencies: ee-first "1.1.1" @@ -4397,7 +4284,7 @@ on-finished@^2.4.1, on-finished@2.4.1: on-headers@~1.0.2: version "1.0.2" -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0, once@^1.3.1: version "1.4.0" dependencies: wrappy "1" @@ -4527,7 +4414,7 @@ parse-imports@^2.1.1: parse-svg-path@^0.1.2: version "0.1.2" -parseurl@^1.3.3, parseurl@~1.3.3: +parseurl@~1.3.3: version "1.3.3" path-exists@^4.0.0: @@ -4544,10 +4431,13 @@ path-key@^3.1.0: path-parse@^1.0.7: version "1.0.7" -path-to-regexp@^8.0.0: - version "8.2.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz" - integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ== +path-scurry@^1.10.1: + version "1.11.1" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-to-regexp@0.1.12: version "0.1.12" @@ -4585,11 +4475,6 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz" integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== -pkce-challenge@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz" - integrity sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ== - possible-typed-array-names@^1.0.0: version "1.0.0" @@ -4665,7 +4550,7 @@ property-information@^5.0.0: dependencies: xtend "^4.0.0" -proxy-addr@^2.0.7, proxy-addr@~2.0.7: +proxy-addr@~2.0.7: version "2.0.7" dependencies: forwarded "0.2.0" @@ -4677,13 +4562,6 @@ proxy-from-env@^1.1.0: punycode@^2.1.0: version "2.3.1" -qs@^6.14.0: - version "6.14.0" - resolved "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz" - integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== - dependencies: - side-channel "^1.1.0" - qs@6.13.0: version "6.13.0" dependencies: @@ -4762,19 +4640,9 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -range-parser@^1.2.1, range-parser@~1.2.1: +range-parser@~1.2.1: version "1.2.1" -raw-body@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz" - integrity sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.6.3" - unpipe "1.0.0" - raw-body@2.5.2: version "2.5.2" dependencies: @@ -5112,17 +4980,6 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -router@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/router/-/router-2.2.0.tgz" - integrity sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ== - dependencies: - debug "^4.4.0" - depd "^2.0.0" - is-promise "^4.0.0" - parseurl "^1.3.3" - path-to-regexp "^8.0.0" - run-parallel@^1.1.9: version "1.2.0" dependencies: @@ -5217,23 +5074,6 @@ semver@^7.3.5, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semve resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz" integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== -send@^1.1.0, send@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/send/-/send-1.2.0.tgz" - integrity sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw== - dependencies: - debug "^4.3.5" - encodeurl "^2.0.0" - escape-html "^1.0.3" - etag "^1.8.1" - fresh "^2.0.0" - http-errors "^2.0.0" - mime-types "^3.0.1" - ms "^2.1.3" - on-finished "^2.4.1" - range-parser "^1.2.1" - statuses "^2.0.1" - send@0.19.0: version "0.19.0" dependencies: @@ -5261,16 +5101,6 @@ serialize-javascript@^6.0.1: dependencies: randombytes "^2.1.0" -serve-static@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz" - integrity sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ== - dependencies: - encodeurl "^2.0.0" - escape-html "^1.0.3" - parseurl "^1.3.3" - send "^1.2.0" - serve-static@1.16.2: version "1.16.2" dependencies: @@ -5387,6 +5217,11 @@ side-channel@^1.0.4, side-channel@^1.0.6, side-channel@^1.1.0: signal-exit@^3.0.0: version "3.0.7" +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + simple-concat@^1.0.0: version "1.0.1" @@ -5453,12 +5288,12 @@ static-eval@2.0.2: dependencies: escodegen "^1.8.1" -statuses@^2.0.1, statuses@2.0.1: - version "2.0.1" - "statuses@>= 1.5.0 < 2": version "1.5.0" +statuses@2.0.1: + version "2.0.1" + stop-iteration-iterator@^1.0.0: version "1.0.0" dependencies: @@ -5480,13 +5315,40 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.3: version "4.2.3" dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^5.0.1: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string.prototype.includes@^2.0.0: version "2.0.0" dependencies: @@ -5550,11 +5412,25 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" dependencies: ansi-regex "^5.0.1" +strip-ansi@^7.0.1: + version "7.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz" + integrity sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w== + dependencies: + ansi-regex "^6.2.2" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" @@ -5760,6 +5636,11 @@ terser@^5.26.0: commander "^2.20.0" source-map-support "~0.5.20" +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + third-party-capital@1.0.20: version "1.0.20" @@ -5872,15 +5753,6 @@ type-fest@^0.20.2: type-flag@^3.0.0: version "3.0.0" -type-is@^2.0.0, type-is@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz" - integrity sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw== - dependencies: - content-type "^1.0.5" - media-typer "^1.1.0" - mime-types "^3.0.0" - type-is@~1.6.18: version "1.6.18" dependencies: @@ -6061,7 +5933,7 @@ uuid@9.0.0: validator@^13.7.0: version "13.12.0" -vary@^1, vary@^1.1.2, vary@~1.1.2: +vary@~1.1.2: version "1.1.2" vite-compatible-readable-stream@^3.6.1: @@ -6197,6 +6069,24 @@ wide-align@^1.1.2: word-wrap@^1.2.5, word-wrap@~1.2.3: version "1.2.5" +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" @@ -6246,13 +6136,3 @@ z-schema@^5.0.1: zenscroll@^4.0.2: version "4.0.2" - -zod-to-json-schema@^3.24.1: - version "3.24.5" - resolved "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz" - integrity sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g== - -zod@^3.23.8, zod@^3.24.1, zod@^3.24.2: - version "3.24.4" - resolved "https://registry.npmjs.org/zod/-/zod-3.24.4.tgz" - integrity sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg== From 906be69648bb67abcb21fa747a70d1719dd37e8f Mon Sep 17 00:00:00 2001 From: robbond Date: Fri, 13 Mar 2026 06:32:29 +0000 Subject: [PATCH 3/7] refactor(actions): phase 5 extract document direct service --- actions/services/documentDirectService.js | 432 ++++++++++++++++++++++ actions/services/documentService.js | 2 +- 2 files changed, 433 insertions(+), 1 deletion(-) create mode 100644 actions/services/documentDirectService.js diff --git a/actions/services/documentDirectService.js b/actions/services/documentDirectService.js new file mode 100644 index 00000000..6d518ea2 --- /dev/null +++ b/actions/services/documentDirectService.js @@ -0,0 +1,432 @@ +import axios from "axios"; +import { BASE_URL } from "../core/env"; +import { consoleLogger } from "../core/logger"; +import { hashAPIPath } from "../core/hash"; + +export const getAwaitingSubmissionFromBlob = (containerName) => { + return axios + .get( + BASE_URL + + "/api/file/getawaitingsubmissionfromblob?container=" + + containerName + + hashAPIPath( + "/api/file/getawaitingsubmissionfromblob?container=" + + containerName + ) + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getRepsFromBlob = (containerName) => { + return axios + .get( + BASE_URL + + "/api/file/getrepsblob?container=" + + containerName + + hashAPIPath("/api/file/getrepsblob?container=" + containerName) + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getRepsFromBlobProxy = async (containerName) => { + try { + const res = await axios.get( + "/api/file/getrepsblobproxy?container=" + containerName + ); + return res.data; + } catch (error) { + consoleLogger(error); + } +}; + +export const getAwaitingSubmissionFromBlobProxy = async (containerName) => { + console.log( + "///////////////////////getAwaitingSubmissionFromBlobProxy: " + + containerName, + "/api/file/getawaitingsubmissionfromblobproxy?container=" + + containerName, + "\n///////////////////////\n" + ); + + try { + const res = await axios.get( + BASE_URL + + "/api/file/getawaitingsubmissionfromblobproxy?container=" + + containerName + ); + return res.data; + } catch (error) { + consoleLogger(error); + } +}; + +export const deleteAwaitingSubmissionsFromBlob = ( + containerID, + casefolderID +) => { + var queryUrl = + "/api/file/deleteblobcase?container=" + + containerID + + "&casefolderID=" + + casefolderID; + + var config = { + method: "get", + url: queryUrl + }; + return axios(config) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const deleteMyRepresentationsFromBlob = ( + containerID, + casefolderID, + repfile +) => { + var queryUrl = + "/api/file/deleteblobrep?container=" + + containerID + + "&casefolderID=" + + casefolderID + + "&repfile=" + + repfile; + + var config = { + method: "get", + url: queryUrl + }; + return axios(config) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const uploadFiles = async ( + formValues, + filesObj, + containerID, + casefolderID +) => { + let files = filesObj; + + var formData = new FormData(); + formData.append("appealData", JSON.stringify(formValues)); + formData.append("containerID", containerID); + formData.append("casefolderID", casefolderID); + + for (let i = 0; i < files.length; i++) { + for (let j = 0; j < files[i].length; j++) { + formData.append(files[i][j].name, files[i][j]); + } + } + + var queryUrl = "/api/file/upload"; + + const config = { + method: "post", + url: queryUrl, + data: formData, + headers: { "content-type": "multipart/form-data" } + }; + + try { + const res = await axios(config); + return res.data; + } catch (error) { + consoleLogger(error); + } +}; + +export const uploadSingleFile = async (filesObj, containerID, casefolderID) => { + let files = filesObj; + + var formData = new FormData(); + formData.append("containerID", containerID); + formData.append("casefolderID", casefolderID); + + for (let i = 0; i < files.length; i++) { + console.log(files.length); + formData.append(files[i].name, files[i]); + } + + var queryUrl = "/api/file/uploadsinglefile"; + + const config = { + method: "post", + url: queryUrl, + data: formData, + headers: { "content-type": "multipart/form-data" } + }; + + try { + const res = await axios(config); + return res.data; + } catch (error) { + consoleLogger(error); + } +}; + +export const uploadRepFiles = async ( + formValues, + filesObj, + containerID, + casefolderID +) => { + var formData = new FormData(); + formData.append("appealData", JSON.stringify(formValues)); + formData.append("containerID", containerID); + formData.append("casefolderID", casefolderID); + formData.append("repOrAppeal", true); + + var queryUrl = "/api/file/upload"; + + const config = { + method: "post", + url: queryUrl, + data: formData, + headers: { "content-type": "multipart/form-data" } + }; + + try { + const res = await axios(config); + return res.data; + } catch (error) { + consoleLogger(error); + } +}; + +export const generateRepPDF = async ( + formValues, + containerID, + casefolderID, + options = {} +) => { + console.log("generateRepPDF function: " + formValues); + + var queryUrl = + "/api/file/generatepdf" + (options.download ? "?download=true" : ""); + + const config = { + method: "post", + url: queryUrl, + data: formValues, + ...(options.download ? { responseType: "blob" } : {}) + }; + + try { + const res = await axios(config); + return res.data; + } catch (error) { + consoleLogger(error); + } +}; + +export const generateAppealPDF = async ( + formValues, + containerID, + casefolderID, + appealType, + fileList +) => { + Object.assign(formValues, { + "filesList": fileList + }); + + var queryUrl = "/api/file/generateappealpdf?appealType=" + appealType; + + const config = { + method: "post", + url: queryUrl, + data: formValues + }; + + try { + const res = await axios(config); + return res.data; + } catch (error) { + consoleLogger(error); + } +}; + +export const getFilesFromBlob = (containerName, casefolderID) => { + return axios + .get( + BASE_URL + + "/api/file/getbloblist?container=" + + containerName + + "&casefolderID=" + + casefolderID + + hashAPIPath( + "/api/file/getbloblist?container=" + + containerName + + "&casefolderID=" + + casefolderID + ) + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getFilesFromBlobproxy = (containerName, casefolderID) => { + return axios + .get( + "/api/file/getbloblistproxy?container=" + + containerName + + "&casefolderID=" + + casefolderID + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getFilesFromBlobHashed = ( + containerName, + getblobshash, + casefolderID +) => { + return axios + .get( + "/api/file/getbloblist?container=" + + containerName + + "&casefolderID=" + + casefolderID + + getblobshash + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const deleteBlob = async ( + containerName, + blobName, + deleteblobhash, + casefolderID +) => { + try { + const res = await axios.get( + "/api/file/deleteblob?container=" + + containerName + + "&casefolderID=" + + encodeURIComponent(casefolderID) + + "&blobname=" + + encodeURIComponent(blobName) + + deleteblobhash + ); + return res.data; + } catch (error) { + consoleLogger(error); + } +}; + +export const deleteRepBlob = async ( + containerName, + blobName, + deleteblobhash, + casefolderID, + filenamePrefix +) => { + try { + const res = await axios.get( + "/api/file/deleteblob?container=" + + containerName + + "&casefolderID=" + + encodeURIComponent(casefolderID + "/" + filenamePrefix) + + "&blobname=" + + encodeURIComponent(blobName) + + deleteblobhash + ); + return res.data; + } catch (error) { + consoleLogger(error); + } +}; + +export const downloadBlob = (containerName, blobName) => { + return axios + .get( + BASE_URL + + "/api/file/downloadblob?container=" + + containerName.toLowerCase() + + "&blobname=" + + blobName, + { responseType: "blob" } + ) + .then((response) => { + res.setHeader( + "content-disposition", + "attachment; filename=" + blobName + ); + + return res.status(200).send(response.data); + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getProgressFromBlob = async (containerName, casereference) => { + try { + const res = await axios.get( + BASE_URL + + "/api/file/getprogressobjblob?container=" + + encodeURIComponent(containerName) + + "&casefolderID=" + + encodeURIComponent(casereference) + + hashAPIPath( + "/api/file/getprogressobjblob?container=" + + encodeURIComponent(containerName) + + "&casefolderID=" + + encodeURIComponent(casereference) + ) + ); + return res.data; + } catch (error) { + consoleLogger(error); + } +}; + +export const createContainerProxy = (containerName) => { + var queryUrl = + "/api/file/setupcontainer?ident=" + + containerName + + hashAPIPath("/api/file/setupcontainer?ident=" + containerName); + + return axios + .get(BASE_URL + queryUrl) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + + return JSON.stringify(error); + }); +}; diff --git a/actions/services/documentService.js b/actions/services/documentService.js index 4b856086..8b0deca6 100644 --- a/actions/services/documentService.js +++ b/actions/services/documentService.js @@ -18,7 +18,7 @@ import { downloadBlob, getProgressFromBlob, createContainerProxy -} from "./legacyActionsService"; +} from "./documentDirectService"; export { getAwaitingSubmissionFromBlob, From 9a24ba177408dee001efe52bb7ad5bd1396e984d Mon Sep 17 00:00:00 2001 From: robbond Date: Fri, 13 Mar 2026 06:37:24 +0000 Subject: [PATCH 4/7] refactor(actions): phase 5 extract portal direct service --- actions/services/portalDirectService.js | 333 ++++++++++++++++++++++++ actions/services/portalService.js | 2 +- 2 files changed, 334 insertions(+), 1 deletion(-) create mode 100644 actions/services/portalDirectService.js diff --git a/actions/services/portalDirectService.js b/actions/services/portalDirectService.js new file mode 100644 index 00000000..c0577505 --- /dev/null +++ b/actions/services/portalDirectService.js @@ -0,0 +1,333 @@ +import axios from "axios"; +import { BASE_URL } from "../core/env"; +import { consoleLogger } from "../core/logger"; +import { hashAPIPath } from "../core/hash"; + +export const getMyCases = (loggedInUserId) => { + return axios + .get( + BASE_URL + + "/api/endpoint/getmycases_api?loggedInUserId=" + + loggedInUserId + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getMyInvolvements = async (loggedInUserId) => { + try { + const res = await axios.get( + BASE_URL + + "/api/endpoint/getmyinvolvements_api?loggedInUserId=" + + loggedInUserId + ); + return res.data; + } catch (error) { + consoleLogger(error); + } +}; + +export const getMyLPACases = (lpaid) => { + return axios + .get(BASE_URL + "/api/endpoint/getmylpacases_api?lpaid=" + lpaid) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getMyRepresentations = (loggedInUserId) => { + return axios + .get( + BASE_URL + + "/api/endpoint/getmyrepresentations_api?loggedInUserId=" + + loggedInUserId + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getMyRepresentationsProxy = (loggedInUserId) => { + return axios + .get( + "/api/endpoint/getmyrepresentationsproxy_api?loggedInUserId=" + + loggedInUserId + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getRepresentations = (incidentID) => { + return axios + .get("/api/endpoint/getrepresentations_api?incidentID=" + incidentID) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getRepresentationsProxy = (incidentID) => { + return axios + .get( + "/api/endpoint/getrepresentationsproxy_api?incidentID=" + incidentID + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getWatchedCases = (loggedInUserId) => { + return axios + .get( + BASE_URL + + "/api/endpoint/getwatchedcases_api?loggedInUserId=" + + loggedInUserId + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getWatchedCasesProxy = (loggedInUserId) => { + return axios + .get( + "/api/endpoint/getwatchedcasesproxy_api?loggedInUserId=" + + loggedInUserId + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getAwaitingSubmissionProxy = (loggedInUserId) => { + return axios + .get( + "/api/endpoint/getawaitingsubmissionproxy_api?loggedInUserId=" + + loggedInUserId + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getAwaitingSubmission = (loggedInUserId) => { + return axios + .get( + BASE_URL + + "/api/endpoint/getawaitingsubmission_api?loggedInUserId=" + + loggedInUserId + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const createWatchedCases = async (formValues) => { + var data = formValues; + var queryUrl = "/api/endpoint/createwatchedcases_api"; + + var config = { + method: "post", + url: queryUrl, + data: data + }; + + try { + const res = await axios(config); + return res.data; + } catch (error) { + consoleLogger(error); + } +}; + +export const deleteMyRepresentations = (myRepresentationsID) => { + var queryUrl = + "/api/endpoint/deletemyrepresentations_api?myRepresentationsID=" + + myRepresentationsID; + + var config = { + method: "delete", + url: queryUrl + hashAPIPath(queryUrl), + headers: { + "OData-MaxVersion": "4.0", + "OData-Version": "4.0", + "Accept": "application/json;odata.metadata=none", + "Prefer": 'odata.include-annotations="*",return=representation', + "Content-Type": "application/json" + } + }; + + return axios(config) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const deleteAwaitingSubmissions = (incidentID) => { + var queryUrl = + "/api/endpoint/deleteawaitingsubmissions_api?incidentID=" + incidentID; + + var config = { + method: "delete", + url: queryUrl + }; + + return axios(config) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const deleteWatchedCases = async (watchedCaseID) => { + var queryUrl = + "/api/endpoint/deletewatchedcases_api?watchedCaseID=" + watchedCaseID; + var config = { + method: "delete", + url: queryUrl + }; + + try { + const res = await axios(config); + return res.data; + } catch (error) { + consoleLogger(error); + } +}; + +export const sendCaseCompleteMessage = async ( + containerID, + caseReference, + inv +) => { + var queryUrl = + "/api/file/createappealcompletemessage_api?container=" + + containerID + + "&tempcaseref=" + + caseReference + + "&inv=" + + inv; + + var config = { + method: "get", + url: queryUrl + }; + + return axios(config) + .then((res) => { + console.log("sendCaseCompleteMessage: ", res.data); + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const sendCaseCompleteMessageProxy = async ( + containerID, + caseReference +) => { + var queryUrl = + "/api/file/createappealcompletemessageproxy_api?container=" + + containerID + + "&tempcaseref=" + + caseReference; + + var config = { + method: "get", + url: queryUrl + }; + + return axios(config) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const sendRepCompleteMessage = async ( + containerID, + caseReference, + fileName +) => { + var queryUrl = + "/api/file/createrepcompletemessage_api?container=" + + containerID + + "&tempcaseref=" + + caseReference + + "&repid=" + + fileName; + + var config = { + method: "get", + url: queryUrl + }; + + return axios(config) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const setRepInvolvment = async (caseid, contactid) => { + var queryUrl = "/api/file/createrepinvolvement_api"; + + var data = { "incidentid": caseid, "contactid": contactid }; + var config = { + method: "post", + url: queryUrl, + data: data + }; + + try { + const res = await axios(config); + return res.data; + } catch (error) { + consoleLogger(error); + } +}; + +export const setCaseInvolvment = async (caseid, contactid) => { + var queryUrl = "/api/file/createrepinvolvement_api"; + + var data = { "incidentid": caseid, "contactid": contactid }; + var config = { + method: "post", + url: queryUrl, + data: data + }; + + try { + const res = await axios(config); + return res.data; + } catch (error) { + consoleLogger(error); + } +}; diff --git a/actions/services/portalService.js b/actions/services/portalService.js index 876a7242..a0b7f31c 100644 --- a/actions/services/portalService.js +++ b/actions/services/portalService.js @@ -19,7 +19,7 @@ import { sendRepCompleteMessage, setRepInvolvment, setCaseInvolvment -} from "./legacyActionsService"; +} from "./portalDirectService"; export { getMyCases, From cd1345312110c37bef57068c8b303b3df47fec73 Mon Sep 17 00:00:00 2001 From: robbond Date: Fri, 13 Mar 2026 06:41:47 +0000 Subject: [PATCH 5/7] refactor(actions): phase 5 extract account and case direct services --- actions/services/accountDirectService.js | 145 +++++++++ actions/services/accountService.js | 2 +- actions/services/caseDirectService.js | 362 +++++++++++++++++++++++ actions/services/caseService.js | 2 +- 4 files changed, 509 insertions(+), 2 deletions(-) create mode 100644 actions/services/accountDirectService.js create mode 100644 actions/services/caseDirectService.js diff --git a/actions/services/accountDirectService.js b/actions/services/accountDirectService.js new file mode 100644 index 00000000..5f719fd2 --- /dev/null +++ b/actions/services/accountDirectService.js @@ -0,0 +1,145 @@ +import axios from "axios"; +import { BASE_URL } from "../core/env"; +import { consoleLogger } from "../core/logger"; +import { hashAPIPath } from "../core/hash"; + +export const getPersonalAccount = (contactid) => { + return axios + .get( + BASE_URL + + "/api/endpoint/getpersonalaccount_api?contactid=" + + contactid + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getLogin = (emailAddress, pwd) => { + return axios + .get( + "/api/endpoint/getlogin_api?emailAddress=" + + emailAddress + + "&pwd=" + + pwd + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const updatePassword = (contactId, newpassword) => { + var queryUrl = "/api/endpoint/updateaccount_api?contactId=" + contactId; + var data = { "pinswg_custom_password": newpassword }; + var config = { + method: "post", + url: queryUrl, + data: data + }; + + return axios(config) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const updateAccount = async (contactId, updateBody, ssr) => { + var queryUrl = + (ssr ? BASE_URL : "") + + "/api/endpoint/updateaccount_api?contactId=" + + contactId; + var data = updateBody; + var config = { + method: "post", + url: queryUrl, + data: data + }; + return axios(config) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const createAccount = (formValues) => { + var data = formValues; + var queryUrl = "/api/endpoint/createaccount_api"; + var config = { + method: "post", + url: queryUrl, + data: data + }; + + return axios(config) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getEmailAccountCheck = (emailAddress) => { + return axios + .get( + "/api/endpoint/getemailaccountcheck_api?emailAddress=" + + emailAddress + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getPortalLogin = async (emailAddress) => { + var queryUrl = + "/api/endpoint/getportallogin_api?emailAddress=" + emailAddress; + + return axios + .get(BASE_URL + queryUrl + hashAPIPath(queryUrl)) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + + return JSON.stringify(error); + }); +}; + +export const getPortalLoginProxy = async (emailAddress) => { + var queryUrl = + "/api/endpoint/getportalloginproxy_api?emailAddress=" + emailAddress; + + return axios + .get(queryUrl) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + + return JSON.stringify(error); + }); +}; + +export const getPreferredLanguage = async (email) => { + return axios + .get( + BASE_URL + + "/api/endpoint/getpreferredlanguage_api?emailAddress=" + + email + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + return error.response; + }); +}; diff --git a/actions/services/accountService.js b/actions/services/accountService.js index b0287211..1cf7f7aa 100644 --- a/actions/services/accountService.js +++ b/actions/services/accountService.js @@ -8,7 +8,7 @@ import { getPortalLogin, getPortalLoginProxy, getPreferredLanguage -} from "./legacyActionsService"; +} from "./accountDirectService"; export { getPersonalAccount, diff --git a/actions/services/caseDirectService.js b/actions/services/caseDirectService.js new file mode 100644 index 00000000..5e1c5f8b --- /dev/null +++ b/actions/services/caseDirectService.js @@ -0,0 +1,362 @@ +import axios from "axios"; +import { BASE_URL } from "../core/env"; +import { consoleLogger } from "../core/logger"; + +export const getCaseMessage = (searchString) => { + return axios + .get(BASE_URL + "/api/endpoint/getcasemessage_api?id=" + searchString) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + return error.response; + }); +}; + +export const getIncidentbyID = (searchString) => { + return axios + .get( + BASE_URL + + "/api/endpoint/getincidentbyid_api?searchString=" + + searchString + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + return error.response; + }); +}; + +export const getIsPublishedbyID = (searchString) => { + return axios + .get( + "/api/endpoint/getispublishedbyid_api?searchString=" + searchString + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + return error.response; + }); +}; + +export const getPartSavedAppeal = (searchString) => { + return axios + .get( + BASE_URL + + "/api/endpoint/getpartsavedappeal_api?searchString=" + + searchString + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + return error.response; + }); +}; + +export const getSIPSEvents = async (caseid) => { + return axios + .get(BASE_URL + "/api/endpoint/getsipsevents_api?caseid=" + caseid) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + return error.response; + }); +}; + +export const getSIPSMedia = async (caseid) => { + return axios + .get(BASE_URL + "/api/endpoint/getsipsmedia_api?caseid=" + caseid) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + return error.response; + }); +}; + +export const getAppealID = ( + caseReference, + updateFormCollection, + primaryAttribute +) => { + return axios + .get( + "/api/endpoint/getappealid_api?updateFormCollection=" + + updateFormCollection + + "&primaryAttribute=" + + primaryAttribute + + "&caseReference=" + + caseReference + ) + .then((res) => { + const result = Object.entries(res.data.value[0]).filter( + ([key]) => !key.startsWith("_") + )[0][1]; + var appealID = result; + return appealID; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const createNewCase = ( + appealTypeId, + lpaID, + contactid, + createBody, + containerName +) => { + appealTypeId = parseInt(appealTypeId); + + var data = createBody; + + var queryUrl = + "/api/endpoint/createcase_api?appealTypeId=" + + appealTypeId + + "&lpaID=" + + lpaID + + "&contactid=" + + contactid + + "&containername=" + + containerName; + + var config = { + method: "post", + url: BASE_URL + queryUrl, + data: data + }; + + return axios(config) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const createNewCaseBlob = ( + appealTypeId, + lpaID, + contactid, + createBody, + containerName, + lpaName +) => { + appealTypeId = parseInt(appealTypeId); + + var data = createBody; + + data.pinswg_lpaname = lpaName; + data.createdon = new Date(); + + var queryUrl = + "/api/file/createcase_api?appealTypeId=" + + appealTypeId + + "&lpaID=" + + lpaID + + "&contactid=" + + contactid + + "&containername=" + + containerName; + + var config = { + method: "post", + url: queryUrl, + data: data + }; + + return axios(config) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const updateCase = async ( + incidentId, + updateBody, + updateFormCollection, + primaryAttribute, + caseReference +) => { + var data = updateBody; + + var appealObj = await getAppealID( + caseReference, + updateFormCollection, + primaryAttribute + ); + + var queryUrl = + "/api/endpoint/updatecase_api?updateFormCollection=" + + updateFormCollection + + "&appealObj=" + + appealObj; + + var config = { + method: "post", + url: queryUrl, + data: updateBody + }; + + return axios(config) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const updateCaseBlob = async ( + incidentId, + updateBody, + updateFormCollection, + primaryAttribute, + caseReference +) => { + var data = updateBody; + + var appealObj = await getAppealID( + caseReference, + updateFormCollection, + primaryAttribute + ); + + var queryUrl = + "/api/file/updatecase_api?updateFormCollection=" + + updateFormCollection + + "&appealObj=" + + appealObj; + + var config = { + method: "post", + url: queryUrl, + data: updateBody + }; + + return axios(config) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const patchCase = async (incidentid) => { + var queryUrl = "/api/endpoint/patchcase_api?incidentid=" + incidentid; + var config = { + method: "get", + url: queryUrl + }; + + return axios(config) + .then((res) => { + return res.data; + }) + .catch((error) => { + //console.log("this error:", error); + }); +}; + +export const getCase = (incidentID) => { + return axios + .get(BASE_URL + "/api/endpoint/getcase_api?incidentID=" + incidentID) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getCaseByID = (incidentID) => { + return axios + .get( + BASE_URL + "/api/endpoint/getcasebyid_api?incidentID=" + incidentID + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getAppealPDFDocs = (incidentID) => { + return axios + .get( + BASE_URL + + "/api/endpoint/getappealpdfdocuments_api?incidentid=" + + incidentID + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + }); +}; + +export const getAppealPDFDocument = async (incidentid) => { + return axios + .get( + BASE_URL + + "/api/endpoint/getappealpdfdocuments_api?incidentid=" + + incidentid + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + return error.response; + }); +}; + +export const getPortalModuleDetails = async (appealType, caseReference) => { + var config = { + method: "get", + url: + BASE_URL + + "/api/endpoint/getportalmoduledetails_api?appealType=" + + appealType + + "&caseReference=" + + encodeURI(caseReference) + }; + + try { + const res = await axios(config); + return res.data; + } catch (error) { + console.log("error case ref:", caseReference); + consoleLogger(error); + } +}; + +export const getPortalModuleDetailsProxy = (appealType, caseReference) => { + return axios + .get( + "/api/endpoint/getportalmoduledetailsproxy_api?appealType=" + + appealType + + "&caseReference=" + + caseReference.replace(/\'/g, "''") + ) + .then((res) => res.data) + .catch((error) => { + consoleLogger(error); + }); +}; diff --git a/actions/services/caseService.js b/actions/services/caseService.js index a5f682e8..ca19d922 100644 --- a/actions/services/caseService.js +++ b/actions/services/caseService.js @@ -17,7 +17,7 @@ import { getIsPublishedbyID, getPortalModuleDetails, getPortalModuleDetailsProxy -} from "./legacyActionsService"; +} from "./caseDirectService"; export { getCaseMessage, From 13e7e0c1a415326890903079cc99837e46dc9a35 Mon Sep 17 00:00:00 2001 From: robbond Date: Fri, 13 Mar 2026 06:44:10 +0000 Subject: [PATCH 6/7] refactor(actions): phase 5 extract remaining direct service modules --- actions/services/adminDirectService.js | 93 ++++++++++++++++++++ actions/services/adminService.js | 2 +- actions/services/integrationDirectService.js | 20 +++++ actions/services/integrationService.js | 2 +- actions/services/notifyDirectService.js | 24 +++++ actions/services/notifyService.js | 2 +- 6 files changed, 140 insertions(+), 3 deletions(-) create mode 100644 actions/services/adminDirectService.js create mode 100644 actions/services/integrationDirectService.js create mode 100644 actions/services/notifyDirectService.js diff --git a/actions/services/adminDirectService.js b/actions/services/adminDirectService.js new file mode 100644 index 00000000..0ea3fe38 --- /dev/null +++ b/actions/services/adminDirectService.js @@ -0,0 +1,93 @@ +import axios from "axios"; +import { BASE_URL } from "../core/env"; +import { consoleLogger } from "../core/logger"; + +export const getNewAppeals = async (searchString) => { + try { + const res = await axios.get(BASE_URL + "/api/admin/getnewappeals_api"); + return res.data; + } catch (error) { + consoleLogger(error); + return error.response; + } +}; + +export const getNewAppealsPage = async ( + searchString, + pageNumber, + orderBy, + fieldSort, + showNumberOfRecords +) => { + return axios + .get( + "/api/admin/getnewappeals_api?searchString=" + + searchString + + "&pageNumber=" + + pageNumber + + "&orderby=" + + orderBy + + "&fieldSort=" + + fieldSort + + "&showNumberOfRecords=" + + showNumberOfRecords + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + return error.response; + }); +}; + +export const getNewDocumentsPaged = async ( + pageNumber, + orderBy, + fieldSort, + showNumberOfRecords, + documentType, + documentOrigin, + selectedWeeks +) => { + console.log( + "/api/admin/getlatestdocuments_api?pageNumber=" + + pageNumber + + "&orderby=" + + orderBy + + "&fieldSort=" + + fieldSort + + "&showNumberOfRecords=" + + showNumberOfRecords + + "&documentType=" + + documentType + + "&numberWeeks=" + + selectedWeeks + + "&documentOrigin=" + + documentOrigin + ); + return axios + .get( + "/api/admin/getlatestdocuments_api?pageNumber=" + + pageNumber + + "&orderby=" + + orderBy + + "&fieldSort=" + + fieldSort + + "&showNumberOfRecords=" + + showNumberOfRecords + + "&documentType=" + + documentType + + "&numberWeeks=" + + selectedWeeks + + "&documentOrigin=" + + documentOrigin + ) + .then((res) => { + return res.data; + }) + .catch((error) => { + consoleLogger(error); + return error.response; + }); +}; diff --git a/actions/services/adminService.js b/actions/services/adminService.js index 612f4e72..1cf0c6c0 100644 --- a/actions/services/adminService.js +++ b/actions/services/adminService.js @@ -2,6 +2,6 @@ import { getNewAppeals, getNewAppealsPage, getNewDocumentsPaged -} from "./legacyActionsService"; +} from "./adminDirectService"; export { getNewAppeals, getNewAppealsPage, getNewDocumentsPaged }; diff --git a/actions/services/integrationDirectService.js b/actions/services/integrationDirectService.js new file mode 100644 index 00000000..51a54602 --- /dev/null +++ b/actions/services/integrationDirectService.js @@ -0,0 +1,20 @@ +import axios from "axios"; +import { consoleLogger } from "../core/logger"; + +export const createCRMTask = async (formValues) => { + var queryUrl = "/api/endpoint/createcrmtask_api"; + + var data = formValues; + var config = { + method: "post", + url: queryUrl, + data: data + }; + + try { + const res = await axios(config); + return res.data; + } catch (error) { + consoleLogger(error); + } +}; diff --git a/actions/services/integrationService.js b/actions/services/integrationService.js index fd4f1349..ef113285 100644 --- a/actions/services/integrationService.js +++ b/actions/services/integrationService.js @@ -1,3 +1,3 @@ -import { createCRMTask } from "./legacyActionsService"; +import { createCRMTask } from "./integrationDirectService"; export { createCRMTask }; diff --git a/actions/services/notifyDirectService.js b/actions/services/notifyDirectService.js new file mode 100644 index 00000000..557ae2cc --- /dev/null +++ b/actions/services/notifyDirectService.js @@ -0,0 +1,24 @@ +import axios from "axios"; +import { consoleLogger } from "../core/logger"; + +export const sendEmail = async ( + templateId, + emailAddress, + personalisation, + reference +) => { + var mailData = { + "templateId": templateId, + "emailAddress": emailAddress, + "reference": reference, + "personalisation": personalisation + }; + + try { + const response = await axios.post("/api/email/notify", mailData); + return response.data; + } catch (error) { + consoleLogger(error); + throw error; + } +}; diff --git a/actions/services/notifyService.js b/actions/services/notifyService.js index 572469cf..82718125 100644 --- a/actions/services/notifyService.js +++ b/actions/services/notifyService.js @@ -1,3 +1,3 @@ -import { sendEmail } from "./legacyActionsService"; +import { sendEmail } from "./notifyDirectService"; export { sendEmail }; From 0c4a50a9e117d9639359ecbf4b4498c1474f715b Mon Sep 17 00:00:00 2001 From: robbond Date: Fri, 13 Mar 2026 06:47:00 +0000 Subject: [PATCH 7/7] refactor(actions): remove legacy actions service after phase 5 split --- actions/services/legacyActionsService.js | 2114 ---------------------- 1 file changed, 2114 deletions(-) delete mode 100644 actions/services/legacyActionsService.js diff --git a/actions/services/legacyActionsService.js b/actions/services/legacyActionsService.js deleted file mode 100644 index 696b7a26..00000000 --- a/actions/services/legacyActionsService.js +++ /dev/null @@ -1,2114 +0,0 @@ -import axios from "axios"; -import { BASE_URL } from "../core/env"; -import { consoleLogger } from "../core/logger"; -import { hashAPIPath } from "../core/hash"; - -export const getBasicSearch = (searchString) => { - return axios - .get( - BASE_URL + - "/api/endpoint/getbasicsearch_api?searchString=" + - searchString - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - return error.response; - }); -}; - -export const getCaseMessage = (searchString) => { - return axios - .get(BASE_URL + "/api/endpoint/getcasemessage_api?id=" + searchString) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - return error.response; - }); -}; - -export const getIncidentbyID = (searchString) => { - return axios - .get( - BASE_URL + - "/api/endpoint/getincidentbyid_api?searchString=" + - searchString - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - return error.response; - }); -}; - -export const getIsPublishedbyID = (searchString) => { - return axios - .get( - "/api/endpoint/getispublishedbyid_api?searchString=" + searchString - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - return error.response; - }); -}; - -export const getPartSavedAppeal = (searchString) => { - return axios - .get( - BASE_URL + - "/api/endpoint/getpartsavedappeal_api?searchString=" + - searchString - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - return error.response; - }); -}; - -export const getBasicDNSURLSearch = (searchString) => { - return axios - .get( - BASE_URL + - "/api/endpoint/getbasicdnsurlsearch_api?searchString=" + - searchString - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - return error.response; - }); -}; - -export const getSIPSEvents = async (caseid) => { - return axios - .get(BASE_URL + "/api/endpoint/getsipsevents_api?caseid=" + caseid) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - return error.response; - }); -}; - -export const getSIPSMedia = async (caseid) => { - return axios - .get(BASE_URL + "/api/endpoint/getsipsmedia_api?caseid=" + caseid) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - return error.response; - }); -}; - -export const getAddressSearchPaged = ( - searchString, - pageNumber, - orderBy, - fieldSort, - showNumberOfRecords -) => { - return axios - .get( - "/api/endpoint/getbasicsearch_by_address_paged_api?searchString=" + - searchString + - "&pageNumber=" + - pageNumber + - "&orderby=" + - orderBy + - "&fieldSort=" + - fieldSort + - "&showNumberOfRecords=" + - showNumberOfRecords - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - return error.response; - }); -}; - -export const getBasicSearchPaged = ( - searchString, - pageNumber, - orderBy, - fieldSort, - showNumberOfRecords -) => { - return axios - .get( - "/api/endpoint/getbasicsearchpaged_api?searchString=" + - searchString + - "&pageNumber=" + - pageNumber + - "&orderby=" + - orderBy + - "&fieldSort=" + - fieldSort + - "&showNumberOfRecords=" + - showNumberOfRecords - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - return error.response; - }); -}; - -export const getDNSCoords = () => { - return axios - .get(BASE_URL + "/api/endpoint/getdnscoords_api") - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - let ErrResponse = { - value: [], - errorCode: error.response.status, - errorMsg: error.response.statusText - }; - - return ErrResponse; - }); -}; - -export const getDNSList = (searchString) => { - return axios - .get(BASE_URL + "/api/endpoint/getdnslist_api") - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - return error.response; - }); -}; - -export const getBasicDNSSearch = (searchString) => { - return axios - .get(BASE_URL + "/api/endpoint/getbasicdnssearch_api") - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - return error.response; - }); -}; - -export const getBasicDNSSearchPaged = ( - pageNumber, - orderBy, - fieldSort, - showNumberOfRecords -) => { - return axios - .get( - "/api/endpoint/getbasicdnssearchpaged_api?pageNumber=" + - pageNumber + - "&orderby=" + - orderBy + - "&fieldSort=" + - fieldSort + - "&showNumberOfRecords=" + - showNumberOfRecords - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - return error.response; - }); -}; - -export const getAdvancedSearch = (searchString) => { - return axios - .get( - BASE_URL + - "/api/endpoint/getadvancedsearch_api?searchstring=" + - JSON.stringify(searchString) - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - let ErrResponse = { - value: [], - errorCode: error.response.status, - errorMsg: error.response.statusText - }; - - return ErrResponse; - }); -}; - -export const getAdvancedSearchPaged = ( - searchString, - pageNumber, - orderBy, - fieldSort, - showNumberOfRecords -) => { - return axios - .get( - "/api/endpoint/getadvancedsearchpaged_api?searchstring=" + - JSON.stringify(searchString) + - "&pageNumber=" + - pageNumber + - "&orderby=" + - orderBy + - "&fieldSort=" + - fieldSort + - "&showNumberOfRecords=" + - showNumberOfRecords - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - let ErrResponse = { - value: [], - errorCode: error.response.status, - errorMsg: error.response.statusText - }; - - return ErrResponse; - }); -}; - -export const getBasicSearchDetails = async ( - appealTypeName, - caseReference, - primaryIdAttribute, - incidentID -) => { - return axios - .get( - BASE_URL + - "/api/endpoint/getbasicsearchdetails_api?appealTypeName=" + - appealTypeName + - "&primaryIdAttribute=" + - primaryIdAttribute + - "&incidentID=" + - incidentID - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getBasicPartSavedDetails = ( - appealTypeName, - caseReference, - primaryIdAttribute, - incidentID -) => { - //console.log( - // "///////api call: ", - // BASE_URL + - // "/api/endpoint/getbasicpartsaveddetails_api?appealTypeName=" + - // appealTypeName + - // "&primaryIdAttribute=" + - // primaryIdAttribute + - // "&incidentID=" + - // incidentID - // ); - return axios - .get( - BASE_URL + - "/api/endpoint/getbasicpartsaveddetails_api?appealTypeName=" + - appealTypeName + - "&primaryIdAttribute=" + - primaryIdAttribute + - "&incidentID=" + - incidentID - ) - .then((res) => res.data) - .catch((error) => { - console.log("this error", error); - }); -}; - -export const getBasicSearchDetailsPaged = async ( - appealTypeName, - caseReference, - primaryIdAttribute, - incidentIDs -) => { - if (!incidentIDs || incidentIDs.length === 0) return []; - - console.log("=======", primaryIdAttribute); - // Build OData filter correctly - // const filter = incidentIDs - // .map((id) => `_${primaryIdAttribute}s_value eq ${id}`) - // .join(" or "); - - const filter = incidentIDs - .map((id) => { - const suffix = - primaryIdAttribute === "pinswg_sipscase" - ? `_${primaryIdAttribute}_value` - : `_${primaryIdAttribute}s_value`; - - return `${suffix} eq ${id}`; - }) - .join(" or "); - - const url = `/api/endpoint/getbasicsearchdetailspaged_api?appealTypeName=${appealTypeName}&primaryIdAttribute=${primaryIdAttribute}&incidentID=${encodeURIComponent( - filter - )}`; - - console.log( - `Fetching ${incidentIDs.length} incidents for appeal type: ${appealTypeName}` - ); - - try { - const res = await axios.get(url); - return res.data.value || []; // ensure returning an array - } catch (error) { - consoleLogger(error); - return []; - } -}; - -export const getSearchDocumentDetails = (incidentID) => { - return axios - .get( - "/api/endpoint/getsearchdocumentdetails_api?incidentid=" + - incidentID - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - throw error; // Important! - }); -}; - -export const getSearchDocumentTypes = (incidentID) => { - return axios - .get( - "/api/endpoint/getsearchdocumentTypes_api?incidentid=" + incidentID - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getAppealPDFDocs = (incidentID) => { - return axios - .get( - BASE_URL + - "/api/endpoint/getappealpdfdocuments_api?incidentid=" + - incidentID - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getSearchDocumentDetailsPaged = ( - incidentID, - pageNumber, - orderBy, - fieldSort, - showNumberOfRecords, - documentType -) => { - //console.log("to api:", documentType); - return axios - .get( - "/api/endpoint/getsearchdocumentdetailspaged_api?incidentid=" + - incidentID + - "&pageNumber=" + - pageNumber + - "&orderby=" + - orderBy + - "&fieldSort=" + - fieldSort + - "&showNumberOfRecords=" + - showNumberOfRecords + - "&documentType=" + - documentType - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getLinkedCases = (parentIncidentid) => { - return axios - .get( - "/api/endpoint/getlinkedcases_api?parentincidentid=" + - parentIncidentid - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getAppealsTypes = () => { - return axios - .get(BASE_URL + "/api/endpoint/getappealtypes_api") - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - let ErrResponse = { - value: [], - errorCode: error.response.status, - errorMsg: error.response.statusText - }; - - return ErrResponse; - }); -}; - -export const getProjectTypes = () => { - return axios - .get(BASE_URL + "/api/endpoint/getprojecttypes_api") - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - let ErrResponse = { - value: [], - errorCode: error.response.status, - errorMsg: error.response.statusText - }; - - return ErrResponse; - }); -}; - -export const getAppealsTypesForNewAppeal = () => { - return axios - .get(BASE_URL + "/api/endpoint/getappealtypesfornewappeal_api") - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - let ErrResponse = { - value: [], - errorCode: error.response.status, - errorMsg: error.response.statusText - }; - - return ErrResponse; - }); -}; - -export const getLPA = () => { - return axios - .get(BASE_URL + "/api/endpoint/getlpa_api") - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - let ErrResponse = { - value: [], - errorCode: error.response.status, - errorMsg: error.response.statusText - }; - - return ErrResponse; - }); -}; - -// iteration 2 methods - -export const getFormData = (whichForm) => { - return axios - .get(BASE_URL + "/api/endpoint/getformdata_api?whichForm=" + whichForm) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getMandatoryFields = (whichForm) => { - return axios - .get( - BASE_URL + - "/api/endpoint/getmandatoryfields_api?whichForm=" + - whichForm - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getPickLists = (whichForm) => { - return axios - .get(BASE_URL + "/api/endpoint/getpicklists_api?whichForm=" + whichForm) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getPersonalAccount = (contactid) => { - return axios - .get( - BASE_URL + - "/api/endpoint/getpersonalaccount_api?contactid=" + - contactid - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - //console.log("returned:", error); - // let ErrResponse = { - // value: [], - // errorCode: error.response.status, - // errorMsg: error.response.statusText, - // }; - // return ErrResponse; - }); -}; - -export const getAppealID = ( - caseReference, - updateFormCollection, - primaryAttribute -) => { - //console.log( - // "is this the collection?:", - // getFormCollection(updateFormCollection) - // ) - - //let formCollectionName = getFormCollection(updateFormCollection); - //console.log(formCollectionName); - return axios - .get( - "/api/endpoint/getappealid_api?updateFormCollection=" + - updateFormCollection + - "&primaryAttribute=" + - primaryAttribute + - "&caseReference=" + - caseReference - ) - .then((res) => { - const result = Object.entries(res.data.value[0]).filter( - ([key]) => !key.startsWith("_") - )[0][1]; - // console.log("result:", res.data); - var appealID = result; - return appealID; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getLogin = (emailAddress, pwd) => { - return axios - .get( - "/api/endpoint/getlogin_api?emailAddress=" + - emailAddress + - "&pwd=" + - pwd - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getMyCases = (loggedInUserId) => { - return axios - .get( - BASE_URL + - "/api/endpoint/getmycases_api?loggedInUserId=" + - loggedInUserId - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getMyInvolvements = async (loggedInUserId) => { - try { - const res = await axios.get( - BASE_URL + - "/api/endpoint/getmyinvolvements_api?loggedInUserId=" + - loggedInUserId - ); - return res.data; - } catch (error) { - consoleLogger(error); - } -}; - -export const getMyLPACases = (lpaid) => { - return axios - .get(BASE_URL + "/api/endpoint/getmylpacases_api?lpaid=" + lpaid) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getMyRepresentations = (loggedInUserId) => { - return axios - .get( - BASE_URL + - "/api/endpoint/getmyrepresentations_api?loggedInUserId=" + - loggedInUserId - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getMyRepresentationsProxy = (loggedInUserId) => { - return axios - .get( - "/api/endpoint/getmyrepresentationsproxy_api?loggedInUserId=" + - loggedInUserId - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getRepresentations = (incidentID) => { - return axios - .get("/api/endpoint/getrepresentations_api?incidentID=" + incidentID) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getRepresentationsProxy = (incidentID) => { - return axios - .get( - "/api/endpoint/getrepresentationsproxy_api?incidentID=" + incidentID - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getWatchedCases = (loggedInUserId) => { - return axios - .get( - BASE_URL + - "/api/endpoint/getwatchedcases_api?loggedInUserId=" + - loggedInUserId - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getWatchedCasesProxy = (loggedInUserId) => { - return axios - .get( - "/api/endpoint/getwatchedcasesproxy_api?loggedInUserId=" + - loggedInUserId - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getAwaitingSubmissionProxy = (loggedInUserId) => { - return axios - .get( - "/api/endpoint/getawaitingsubmissionproxy_api?loggedInUserId=" + - loggedInUserId - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getAwaitingSubmission = (loggedInUserId) => { - return axios - .get( - BASE_URL + - "/api/endpoint/getawaitingsubmission_api?loggedInUserId=" + - loggedInUserId - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getAwaitingSubmissionFromBlob = (containerName) => { - //console.log( - // "///////////////////////\ngetAwaitingSubmissionFromBlob: " + - // containerName, - // BASE_URL + - // "/api/file/getawaitingsubmissionfromblob?container=" + - // containerName + - // hashAPIPath( - // "/api/file/getawaitingsubmissionfromblob?container=" + - // containerName - // ), - // "\n///////////////////////\n" - // ); - return axios - .get( - BASE_URL + - "/api/file/getawaitingsubmissionfromblob?container=" + - containerName + - hashAPIPath( - "/api/file/getawaitingsubmissionfromblob?container=" + - containerName - ) - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getRepsFromBlob = (containerName) => { - //console.log( - // "///////////////////////\ngetRepsFromBlob function: " + - // containerName + - // "\n///////////////////////\n", - // BASE_URL + - // "/api/file/getrepsblob?container=" + - // containerName + - // hashAPIPath("/api/file/getrepsblob?container=" + containerName) - // ); - - return axios - .get( - BASE_URL + - "/api/file/getrepsblob?container=" + - containerName + - hashAPIPath("/api/file/getrepsblob?container=" + containerName) - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - //console.log( - // "///////////////////////\ngetRepsFromBlob error response: " + - // error + - // "\n///////////////////////\n" - // ); - consoleLogger(error); - //console.log("API call error", error); - }); -}; - -export const getRepsFromBlobProxy = async (containerName) => { - //console.log( - // "///////////////////////getRepsFromBlobProxy: " + containerName, - // "/api/file/getawaitingsubmissionfromblobproxy?container=" + - // containerName, - // "\n///////////////////////\n" - // ); - - try { - const res = await axios.get( - // BASE_URL + - "/api/file/getrepsblobproxy?container=" + containerName - // + - // hashAPIPath( - // "/api/file/getawaitingsubmissionfromblob?container=" + - // containerName - // ) - ); - return res.data; - } catch (error) { - consoleLogger(error); - } -}; - -export const getAwaitingSubmissionFromBlobProxy = async (containerName) => { - console.log( - "///////////////////////getAwaitingSubmissionFromBlobProxy: " + - containerName, - "/api/file/getawaitingsubmissionfromblobproxy?container=" + - containerName, - "\n///////////////////////\n" - ); - - try { - const res = await axios.get( - BASE_URL + - "/api/file/getawaitingsubmissionfromblobproxy?container=" + - containerName - // + - // hashAPIPath( - // "/api/file/getawaitingsubmissionfromblob?container=" + - // containerName - // ) - ); - return res.data; - } catch (error) { - consoleLogger(error); - } -}; - -export const getPortalModuleDetails = async (appealType, caseReference) => { - //console.log( - // BASE_URL + - // "/api/endpoint/getportalmoduledetails_api?appealType=" + - // appealType + - // "&caseReference=" + - // encodeURI(caseReference) - // ); - - // return axios - // .get( - // BASE_URL + - // "/api/endpoint/getportalmoduledetails_api?appealType=" + - // appealType + - // "&caseReference=" + - // encodeURI(caseReference) - // ) - // .then((res) => res.data) - // .catch((error) => { - // console.log("error case ref:", caseReference); - // consoleLogger(error); - // }); - - var config = { - method: "get", - url: - BASE_URL + - "/api/endpoint/getportalmoduledetails_api?appealType=" + - appealType + - "&caseReference=" + - encodeURI(caseReference) - }; - - try { - const res = await axios(config); - return res.data; - } catch (error) { - console.log("error case ref:", caseReference); - consoleLogger(error); - } -}; - -export const getPortalModuleDetailsProxy = (appealType, caseReference) => { - return axios - .get( - "/api/endpoint/getportalmoduledetailsproxy_api?appealType=" + - appealType + - "&caseReference=" + - caseReference.replace(/\'/g, "''") - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getEmailAccountCheck = (emailAddress) => { - return axios - .get( - "/api/endpoint/getemailaccountcheck_api?emailAddress=" + - emailAddress - ) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - }); -}; - -//uses more than get methods - -export const updatePassword = (contactId, newpassword) => { - var queryUrl = "/api/endpoint/updateaccount_api?contactId=" + contactId; - var data = { "pinswg_custom_password": newpassword }; - var config = { - method: "post", - url: queryUrl, - data: data - }; - - return axios(config) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const updateAccount = async (contactId, updateBody, ssr) => { - var queryUrl = - (ssr ? BASE_URL : "") + - "/api/endpoint/updateaccount_api?contactId=" + - contactId; - var data = updateBody; - var config = { - method: "post", - url: queryUrl, - data: data - }; - return axios(config) - .then((res) => { - return res.data; - }) - .catch((error) => { - //console.log("this error:", error); - consoleLogger(error); - }); -}; - -export const createWatchedCases = async (formValues) => { - var data = formValues; - var queryUrl = "/api/endpoint/createwatchedcases_api"; - - var config = { - method: "post", - url: queryUrl, - data: data - }; - - try { - const res = await axios(config); - return res.data; - } catch (error) { - consoleLogger(error); - } -}; - -export const createNewCase = ( - appealTypeId, - lpaID, - contactid, - createBody, - containerName -) => { - appealTypeId = parseInt(appealTypeId); - - var data = createBody; - - var queryUrl = - "/api/endpoint/createcase_api?appealTypeId=" + - appealTypeId + - "&lpaID=" + - lpaID + - "&contactid=" + - contactid + - "&containername=" + - containerName; - - var config = { - method: "post", - url: BASE_URL + queryUrl, - data: data - }; - - return axios(config) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const createNewCaseBlob = ( - appealTypeId, - lpaID, - contactid, - createBody, - containerName, - lpaName -) => { - appealTypeId = parseInt(appealTypeId); - - var data = createBody; - - data.pinswg_lpaname = lpaName; - data.createdon = new Date(); - - var queryUrl = - "/api/file/createcase_api?appealTypeId=" + - appealTypeId + - "&lpaID=" + - lpaID + - "&contactid=" + - contactid + - "&containername=" + - containerName; - //+ - // hashAPIPath( - // "/api/file/createcase_api?appealTypeId=" + - // appealTypeId + - // "&lpaID=" + - // lpaID + - // "&contactid=" + - // contactid + - // "&containername=" + - // containerName - // ); - - var config = { - method: "post", - url: queryUrl, - data: data - }; - - //console.log("the query url for crearte csase:", queryUrl); - - return axios(config) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const updateCase = async ( - incidentId, - updateBody, - updateFormCollection, - primaryAttribute, - caseReference -) => { - var data = updateBody; - - var appealObj = await getAppealID( - caseReference, - updateFormCollection, - primaryAttribute - ); - - var queryUrl = - "/api/endpoint/updatecase_api?updateFormCollection=" + - updateFormCollection + - "&appealObj=" + - appealObj; - - var config = { - method: "post", - url: queryUrl, - data: updateBody - }; - - //console.log(data); - - return axios(config) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const updateCaseBlob = async ( - incidentId, - updateBody, - updateFormCollection, - primaryAttribute, - caseReference -) => { - var data = updateBody; - - var appealObj = await getAppealID( - caseReference, - updateFormCollection, - primaryAttribute - ); - - var queryUrl = - "/api/file/updatecase_api?updateFormCollection=" + - updateFormCollection + - "&appealObj=" + - appealObj; - - var config = { - method: "post", - url: queryUrl, - data: updateBody - }; - - //console.log(data); - - return axios(config) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const patchCase = async (incidentid) => { - var queryUrl = "/api/endpoint/patchcase_api?incidentid=" + incidentid; - var config = { - method: "get", - url: queryUrl - }; - - return axios(config) - .then((res) => { - return res.data; - }) - .catch((error) => { - //console.log("this error:", error); - }); -}; - -export const getCase = (incidentID) => { - //console.log( - // "////////////// ------" + - // BASE_URL + - // "/api/endpoint/getcase_api?incidentID=" + - // incidentID - // ); - return axios - .get(BASE_URL + "/api/endpoint/getcase_api?incidentID=" + incidentID) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getCaseByID = (incidentID) => { - //console.log( - // "////////////// ------" + - // BASE_URL + - // "/api/endpoint/getcase_api?incidentID=" + - // incidentID - // ); - return axios - .get( - BASE_URL + "/api/endpoint/getcasebyid_api?incidentID=" + incidentID - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const deleteMyRepresentations = (myRepresentationsID) => { - var queryUrl = - "/api/endpoint/deletemyrepresentations_api?myRepresentationsID=" + - myRepresentationsID; - - var config = { - method: "delete", - url: queryUrl + hashAPIPath(queryUrl), - headers: { - "OData-MaxVersion": "4.0", - "OData-Version": "4.0", - "Accept": "application/json;odata.metadata=none", - "Prefer": 'odata.include-annotations="*",return=representation', - "Content-Type": "application/json" - } - }; - //console.log(config); - return axios(config) - .then((res) => { - //console.log("deleted ", res.data); - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const deleteAwaitingSubmissions = (incidentID) => { - var queryUrl = - "/api/endpoint/deleteawaitingsubmissions_api?incidentID=" + incidentID; - - var config = { - method: "delete", - url: queryUrl - }; - //console.log(config); - return axios(config) - .then((res) => { - //console.log("deleted ", res.data); - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const deleteAwaitingSubmissionsFromBlob = ( - containerID, - casefolderID -) => { - var queryUrl = - "/api/file/deleteblobcase?container=" + - containerID + - "&casefolderID=" + - casefolderID; - - var config = { - method: "get", - url: queryUrl - }; - //console.log(config); - return axios(config) - .then((res) => { - //console.log("deleted ", res.data); - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const deleteMyRepresentationsFromBlob = ( - containerID, - casefolderID, - repfile -) => { - var queryUrl = - "/api/file/deleteblobrep?container=" + - containerID + - "&casefolderID=" + - casefolderID + - "&repfile=" + - repfile; - - var config = { - method: "get", - url: queryUrl - }; - //console.log(config); - return axios(config) - .then((res) => { - //console.log("deleted ", res.data); - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const deleteWatchedCases = async (watchedCaseID) => { - var queryUrl = - "/api/endpoint/deletewatchedcases_api?watchedCaseID=" + watchedCaseID; - var config = { - method: "delete", - url: queryUrl - }; - - try { - const res = await axios(config); - return res.data; - } catch (error) { - consoleLogger(error); - } -}; - -export const createAccount = (formValues) => { - var data = formValues; - var queryUrl = "/api/endpoint/createaccount_api"; - var config = { - method: "post", - url: queryUrl, - data: data - }; - - return axios(config) - .then((res) => { - //console.log("posted ", res.data); - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const uploadFiles = async ( - formValues, - filesObj, - containerID, - casefolderID -) => { - let files = filesObj; - - //console.log(formValues); - var formData = new FormData(); - formData.append("appealData", JSON.stringify(formValues)); - formData.append("containerID", containerID); - formData.append("casefolderID", casefolderID); - - // files.forEach((file) => formData.append("files", file)); - - for (let i = 0; i < files.length; i++) { - for (let j = 0; j < files[i].length; j++) { - //console.log("upload files:", files[i][j].name); - formData.append(files[i][j].name, files[i][j]); - } - } - - //console.log(formData); - - var queryUrl = "/api/file/upload"; - - const config = { - method: "post", - url: queryUrl, - data: formData, - headers: { "content-type": "multipart/form-data" } - }; - - //console.log(config); - try { - const res = await axios(config); - return res.data; - } catch (error) { - consoleLogger(error); - } -}; - -export const uploadSingleFile = async (filesObj, containerID, casefolderID) => { - let files = filesObj; - - //console.log(formValues); - var formData = new FormData(); - formData.append("containerID", containerID); - formData.append("casefolderID", casefolderID); - - // files.forEach((file) => formData.append("files", file)); - - for (let i = 0; i < files.length; i++) { - console.log(files.length); - // for (let j = 0; j < files[i].length; j++) { - // console.log("upload files:", files[i][j].name); - formData.append(files[i].name, files[i]); - // } - } - - //console.log(formData); - - var queryUrl = "/api/file/uploadsinglefile"; - - const config = { - method: "post", - url: queryUrl, - data: formData, - headers: { "content-type": "multipart/form-data" } - }; - - //console.log(config); - try { - const res = await axios(config); - return res.data; - } catch (error) { - consoleLogger(error); - } -}; - -export const uploadRepFiles = async ( - formValues, - filesObj, - containerID, - casefolderID -) => { - let files = filesObj; - - //console.log(formValues); - var formData = new FormData(); - formData.append("appealData", JSON.stringify(formValues)); - formData.append("containerID", containerID); - formData.append("casefolderID", casefolderID); - formData.append("repOrAppeal", true); - - // files.forEach((file) => formData.append("files", file)); - - // for (let i = 0; i < files.length; i++) { - // for (let j = 0; j < files[i].length; j++) { - // //console.log("upload rep files:", files[i][j].name); - // formData.append(files[i][j].name, files[i][j]); - // } - // } - - //console.log(formData); - - var queryUrl = "/api/file/upload"; - - const config = { - method: "post", - url: queryUrl, - data: formData, - headers: { "content-type": "multipart/form-data" } - }; - - //console.log(config); - try { - const res = await axios(config); - return res.data; - } catch (error) { - consoleLogger(error); - } -}; - -export const generateRepPDF = async ( - formValues, - containerID, - casefolderID, - options = {} -) => { - //let files = filesObj; - - console.log("generateRepPDF function: " + formValues); - // var formData = new FormData(); - // formValues.append("appealData", JSON.stringify(formValues)); - // formValues.append("containerID", containerID); - // formValues.append("casefolderID", casefolderID); - - // Object.assign(formValues, { - // "containerID": containerID, - // "casefolderID": casefolderID, - // }); - - var queryUrl = - "/api/file/generatepdf" + (options.download ? "?download=true" : ""); - - const config = { - method: "post", - url: queryUrl, - data: formValues, - ...(options.download ? { responseType: "blob" } : {}) - //headers: { "content-type": "multipart/form-data" }, - }; - - //console.log(config); - try { - const res = await axios(config); - return res.data; - } catch (error) { - consoleLogger(error); - } -}; - -export const generateAppealPDF = async ( - formValues, - containerID, - casefolderID, - appealType, - fileList -) => { - //let files = filesObj; - - //console.log("generateAppealPDF function: " + formValues); - // var formData = new FormData(); - // formValues.append("appealData", JSON.stringify(formValues)); - // formValues.append("containerID", containerID); - //formValues.append("filesList", fileList); - - Object.assign(formValues, { - "filesList": fileList - }); - - var queryUrl = "/api/file/generateappealpdf?appealType=" + appealType; - - const config = { - method: "post", - url: queryUrl, - data: formValues - //headers: { "content-type": "multipart/form-data" }, - }; - - //console.log(config); - try { - const res = await axios(config); - return res.data; - } catch (error) { - consoleLogger(error); - } -}; - -export const getFilesFromBlob = (containerName, casefolderID) => { - //console.log( - // " get files from blob", - // BASE_URL + - // "/api/file/getbloblist?container=" + - // containerName + - // "&casefolderID=" + - // casefolderID + - // hashAPIPath( - // "/api/file/getbloblist?container=" + - // containerName + - // "&casefolderID=" + - // casefolderID - // ) - // ); - return axios - .get( - BASE_URL + - "/api/file/getbloblist?container=" + - containerName + - "&casefolderID=" + - casefolderID + - hashAPIPath( - "/api/file/getbloblist?container=" + - containerName + - "&casefolderID=" + - casefolderID - ) - ) - .then((res) => { - //console.log("//////////----", res.data); - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getFilesFromBlobproxy = (containerName, casefolderID) => { - return axios - .get( - // BASE_URL + - "/api/file/getbloblistproxy?container=" + - containerName + - "&casefolderID=" + - casefolderID - ) - .then((res) => { - //console.log("//////////----", res.data); - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getFilesFromBlobHashed = ( - containerName, - getblobshash, - casefolderID -) => { - return axios - .get( - "/api/file/getbloblist?container=" + - containerName + - "&casefolderID=" + - casefolderID + - getblobshash - ) - .then((res) => { - //console.log("//////////----", res.data); - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const deleteBlob = async ( - containerName, - blobName, - deleteblobhash, - casefolderID -) => { - try { - const res = await axios.get( - "/api/file/deleteblob?container=" + - containerName + - "&casefolderID=" + - encodeURIComponent(casefolderID) + - "&blobname=" + - encodeURIComponent(blobName) + - deleteblobhash - ); - return res.data; - } catch (error) { - consoleLogger(error); - } -}; - -export const deleteRepBlob = async ( - containerName, - blobName, - deleteblobhash, - casefolderID, - filenamePrefix -) => { - try { - const res = await axios.get( - "/api/file/deleteblob?container=" + - containerName + - "&casefolderID=" + - encodeURIComponent(casefolderID + "/" + filenamePrefix) + - "&blobname=" + - encodeURIComponent(blobName) + - deleteblobhash - ); - return res.data; - } catch (error) { - consoleLogger(error); - } -}; - -export const downloadBlob = (containerName, blobName) => { - return axios - .get( - BASE_URL + - "/api/file/downloadblob?container=" + - containerName.toLowerCase() + - "&blobname=" + - blobName, - { responseType: "blob" } - ) - .then((response) => { - //console.log("Downloaded blob content:"); - - res.setHeader( - "content-disposition", - "attachment; filename=" + blobName - ); - //console.log("has downloaded"); - - return res.status(200).send(response.data); - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getProgressFromBlob = async (containerName, casereference) => { - //console.log( - // /////////////////\ngetProgressFromBlob", - // BASE_URL + - // "/api/file/getprogressobjblob?container=" + - // containerName + - // "&casefolderID=" + - // casereference + - // hashAPIPath( - // "/api/file/getprogressobjblob?container=" + - // containerName + - // "&casefolderID=" + - // casereference - // ) - // ); - try { - const res = await axios.get( - BASE_URL + - "/api/file/getprogressobjblob?container=" + - encodeURIComponent(containerName) + - "&casefolderID=" + - encodeURIComponent(casereference) + - hashAPIPath( - "/api/file/getprogressobjblob?container=" + - encodeURIComponent(containerName) + - "&casefolderID=" + - encodeURIComponent(casereference) - ) - ); - return res.data; - } catch (error) { - consoleLogger(error); - } -}; - -export const sendEmail = async ( - templateId, - emailAddress, - personalisation, - reference -) => { - var mailData = { - "templateId": templateId, - "emailAddress": emailAddress, - "reference": reference, - "personalisation": personalisation - }; - - try { - const response = await axios.post("/api/email/notify", mailData); - return response.data; - } catch (error) { - consoleLogger(error); // Optional custom logging - throw error; - } -}; - -export const getNotice = () => { - return axios - .get(BASE_URL + "/api/notices") - .then((res) => { - //console.log("//////////----", res.data); - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const getPortalLogin = async (emailAddress) => { - var queryUrl = - "/api/endpoint/getportallogin_api?emailAddress=" + emailAddress; - - return axios - .get(BASE_URL + queryUrl + hashAPIPath(queryUrl)) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - - return JSON.stringify(error); - }); -}; - -export const getPortalLoginProxy = async (emailAddress) => { - var queryUrl = - "/api/endpoint/getportalloginproxy_api?emailAddress=" + emailAddress; - - return axios - .get(queryUrl) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - - return JSON.stringify(error); - }); -}; - -export const createContainerProxy = (containerName) => { - var queryUrl = - "/api/file/setupcontainer?ident=" + - containerName + - hashAPIPath("/api/file/setupcontainer?ident=" + containerName); - - return axios - .get(BASE_URL + queryUrl) - .then((res) => res.data) - .catch((error) => { - consoleLogger(error); - - return JSON.stringify(error); - }); -}; - -export const sendCaseCompleteMessage = async ( - containerID, - caseReference, - inv -) => { - var queryUrl = - "/api/file/createappealcompletemessage_api?container=" + - containerID + - "&tempcaseref=" + - caseReference + - "&inv=" + - inv; - - var config = { - method: "get", - url: queryUrl - }; - - //console.log(data); - - return axios(config) - .then((res) => { - console.log("sendCaseCompleteMessage: ", res.data); - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const sendCaseCompleteMessageProxy = async ( - containerID, - caseReference -) => { - var queryUrl = - "/api/file/createappealcompletemessageproxy_api?container=" + - containerID + - "&tempcaseref=" + - caseReference; - - var config = { - method: "get", - url: queryUrl - }; - - //console.log(data); - - return axios(config) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const sendRepCompleteMessage = async ( - containerID, - caseReference, - fileName -) => { - var queryUrl = - "/api/file/createrepcompletemessage_api?container=" + - containerID + - "&tempcaseref=" + - caseReference + - "&repid=" + - fileName; - - var config = { - method: "get", - url: queryUrl - }; - - //console.log(data); - - return axios(config) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); -}; - -export const setRepInvolvment = async (caseid, contactid) => { - var queryUrl = "/api/file/createrepinvolvement_api"; - - var data = { "incidentid": caseid, "contactid": contactid }; - var config = { - method: "post", - url: queryUrl, - data: data - }; - - try { - const res = await axios(config); - return res.data; - } catch (error) { - consoleLogger(error); - } -}; - -export const setCaseInvolvment = async (caseid, contactid) => { - var queryUrl = "/api/file/createrepinvolvement_api"; - - var data = { "incidentid": caseid, "contactid": contactid }; - var config = { - method: "post", - url: queryUrl, - data: data - }; - - try { - const res = await axios(config); - return res.data; - } catch (error) { - consoleLogger(error); - } -}; - -export const getAddressSearch = async (searchString) => { - const params = new URLSearchParams(searchString); - const str = params.toString(); - - var queryUrl = - BASE_URL + "/api/endpoint/getbasicsearch_by_address_api?" + str; - - var config = { - method: "get", - url: queryUrl - }; - - return axios(config) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - let ErrResponse = { - value: [], - errorCode: error.response.status, - errorMsg: error.response.statusText - }; - return ErrResponse; - }); -}; - -export const createCRMTask = async (formValues) => { - var queryUrl = "/api/endpoint/createcrmtask_api"; - - var data = formValues; - var config = { - method: "post", - url: queryUrl, - data: data - }; - - try { - const res = await axios(config); - return res.data; - } catch (error) { - consoleLogger(error); - } -}; - -export const getPreferredLanguage = async (email) => { - return axios - .get( - BASE_URL + - "/api/endpoint/getpreferredlanguage_api?emailAddress=" + - email - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - return error.response; - }); -}; - -export const getAppealPDFDocument = async (incidentid) => { - return axios - .get( - BASE_URL + - "/api/endpoint/getappealpdfdocuments_api?incidentid=" + - incidentid - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - return error.response; - }); -}; -export const getNewAppeals = async (searchString) => { - try { - const res = await axios.get(BASE_URL + "/api/admin/getnewappeals_api"); - return res.data; - } catch (error) { - consoleLogger(error); - return error.response; - } -}; - -export const getNewAppealsPage = async ( - searchString, - pageNumber, - orderBy, - fieldSort, - showNumberOfRecords -) => { - return axios - .get( - "/api/admin/getnewappeals_api?searchString=" + - searchString + - "&pageNumber=" + - pageNumber + - "&orderby=" + - orderBy + - "&fieldSort=" + - fieldSort + - "&showNumberOfRecords=" + - showNumberOfRecords - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - return error.response; - }); -}; - -export const getNewDocumentsPaged = async ( - pageNumber, - orderBy, - fieldSort, - showNumberOfRecords, - documentType, - documentOrigin, - selectedWeeks -) => { - console.log( - "/api/admin/getlatestdocuments_api?pageNumber=" + - pageNumber + - "&orderby=" + - orderBy + - "&fieldSort=" + - fieldSort + - "&showNumberOfRecords=" + - showNumberOfRecords + - "&documentType=" + - documentType + - "&numberWeeks=" + - selectedWeeks + - "&documentOrigin=" + - documentOrigin - ); - return axios - .get( - "/api/admin/getlatestdocuments_api?pageNumber=" + - pageNumber + - "&orderby=" + - orderBy + - "&fieldSort=" + - fieldSort + - "&showNumberOfRecords=" + - showNumberOfRecords + - "&documentType=" + - documentType + - "&numberWeeks=" + - selectedWeeks + - "&documentOrigin=" + - documentOrigin - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - return error.response; - }); -};