From 5bd4219743ccb2e2a37da040f3cafa2e3c68f9e6 Mon Sep 17 00:00:00 2001 From: orangecoding Date: Mon, 8 Dec 2025 20:31:28 +0100 Subject: [PATCH] upgrading dependencies | adding ohneMakler provider --- lib/provider/ohneMakler.js | 45 +++++++++ package.json | 16 ++-- test/provider/ohneMakler.test.js | 33 +++++++ test/provider/testProvider.json | 4 + yarn.lock | 154 +++++++++++++++---------------- 5 files changed, 167 insertions(+), 85 deletions(-) create mode 100755 lib/provider/ohneMakler.js create mode 100644 test/provider/ohneMakler.test.js diff --git a/lib/provider/ohneMakler.js b/lib/provider/ohneMakler.js new file mode 100755 index 0000000..e06bdda --- /dev/null +++ b/lib/provider/ohneMakler.js @@ -0,0 +1,45 @@ +import { isOneOf, buildHash } from '../utils.js'; +import checkIfListingIsActive from '../services/listings/listingActiveTester.js'; +let appliedBlackList = []; + +function normalize(o) { + const link = metaInformation.baseUrl + o.link; + const id = buildHash(o.title, o.link, o.price); + return Object.assign(o, { link, id }); +} +function applyBlacklist(o) { + const titleNotBlacklisted = !isOneOf(o.title, appliedBlackList); + const descNotBlacklisted = !isOneOf(o.description, appliedBlackList); + return titleNotBlacklisted && descNotBlacklisted; +} +const config = { + url: null, + crawlContainer: 'div[data-livecomponent-id*="search/property_list"] .grid > div', + sortByDateParam: null, + waitForSelector: null, + crawlFields: { + id: 'a@href', + title: 'h4 | removeNewline | trim', + price: '.text-xl | trim', + size: 'div[title="Wohnfläche"] | trim', + address: '.text-slate-800 | removeNewline | trim', + image: 'img@src', + link: 'a@href', + }, + normalize: normalize, + filter: applyBlacklist, + activeTester: checkIfListingIsActive, +}; + +export const init = (sourceConfig, blacklist) => { + config.enabled = sourceConfig.enabled; + config.url = sourceConfig.url; + appliedBlackList = blacklist || []; +}; + +export const metaInformation = { + name: 'OhneMakler', + baseUrl: 'https://www.ohne-makler.net/immobilien', + id: 'ohneMakler', +}; +export { config }; diff --git a/package.json b/package.json index ca19330..03e081e 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fredy", - "version": "14.3.7", + "version": "14.4.0", "description": "[F]ind [R]eal [E]states [d]amn eas[y].", "scripts": { "prepare": "husky", @@ -57,13 +57,13 @@ "Firefox ESR" ], "dependencies": { - "@douyinfe/semi-icons": "^2.88.3", - "@douyinfe/semi-ui": "2.88.3", + "@douyinfe/semi-icons": "^2.89.0", + "@douyinfe/semi-ui": "2.89.0", "@sendgrid/mail": "8.1.6", "@visactor/react-vchart": "^2.0.10", "@visactor/vchart": "^2.0.10", "@visactor/vchart-semi-theme": "^1.12.2", - "@vitejs/plugin-react": "5.1.1", + "@vitejs/plugin-react": "5.1.2", "better-sqlite3": "^12.5.0", "body-parser": "2.2.1", "cheerio": "^1.1.2", @@ -76,19 +76,19 @@ "node-mailjet": "6.0.11", "p-throttle": "^8.1.0", "package-up": "^5.0.0", - "puppeteer": "^24.32.0", + "puppeteer": "^24.32.1", "puppeteer-extra": "^3.3.6", "puppeteer-extra-plugin-stealth": "^2.11.2", "query-string": "9.3.1", "react": "18.3.1", "react-dom": "18.3.1", - "react-router": "7.10.0", - "react-router-dom": "7.10.0", + "react-router": "7.10.1", + "react-router-dom": "7.10.1", "restana": "5.1.0", "semver": "^7.7.3", "serve-static": "2.2.0", "slack": "11.0.2", - "vite": "7.2.6", + "vite": "7.2.7", "x-var": "^3.0.1", "zustand": "^5.0.9" }, diff --git a/test/provider/ohneMakler.test.js b/test/provider/ohneMakler.test.js new file mode 100644 index 0000000..e469e73 --- /dev/null +++ b/test/provider/ohneMakler.test.js @@ -0,0 +1,33 @@ +import * as similarityCache from '../../lib/services/similarity-check/similarityCache.js'; +import { get } from '../mocks/mockNotification.js'; +import { mockFredy, providerConfig } from '../utils.js'; +import { expect } from 'chai'; +import * as provider from '../../lib/provider/ohneMakler.js'; + +describe('#ohneMakler testsuite()', () => { + it('should test ohneMakler provider', async () => { + const Fredy = await mockFredy(); + provider.init(providerConfig.ohneMakler, []); + + const fredy = new Fredy(provider.config, null, provider.metaInformation.id, 'ohneMakler', similarityCache); + const listing = await fredy.execute(); + + expect(listing).to.be.a('array'); + const notificationObj = get(); + expect(notificationObj).to.be.a('object'); + expect(notificationObj.serviceName).to.equal('ohneMakler'); + notificationObj.payload.forEach((notify) => { + /** check the actual structure **/ + expect(notify.id).to.be.a('string'); + expect(notify.price).to.be.a('string'); + expect(notify.size).to.be.a('string'); + expect(notify.title).to.be.a('string'); + expect(notify.link).to.be.a('string'); + expect(notify.address).to.be.a('string'); + /** check the values if possible **/ + expect(notify.size).that.does.include('m²'); + expect(notify.title).to.be.not.empty; + expect(notify.address).to.be.not.empty; + }); + }); +}); diff --git a/test/provider/testProvider.json b/test/provider/testProvider.json index 91eeccb..4560a92 100644 --- a/test/provider/testProvider.json +++ b/test/provider/testProvider.json @@ -32,6 +32,10 @@ "url": "https://www.mcmakler.de/immobilien/results?placeId=62649&search=Leipzig%252C+Sachsen&propertyTypes=APARTMENT&page=0", "enabled": true }, + "ohneMakler": { + "url": "https://www.ohne-makler.net/immobilien/wohnung-kaufen/nordrhein-westfalen/dusseldorf/", + "enabled": true + }, "neubauKompass": { "url": "https://www.neubaukompass.de/neubau-immobilien/duesseldorf-region/eigentumswohnung/", "enabled": true diff --git a/yarn.lock b/yarn.lock index d645c79..0825076 100644 --- a/yarn.lock +++ b/yarn.lock @@ -997,34 +997,34 @@ dependencies: tslib "^2.0.0" -"@douyinfe/semi-animation-react@2.88.3": - version "2.88.3" - resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation-react/-/semi-animation-react-2.88.3.tgz#8e3b7e11e90baa3d6b7e5a692c4e3b4b72d33958" - integrity sha512-Jhk/QXZ1Wz++D7PZpdRSc3Pj9sDHIDeOXal/zfzUVpEjuQWlD/ebup0MM50ChBkMPI9HkOQLCbZ2Z5qV7bX5SQ== +"@douyinfe/semi-animation-react@2.89.0": + version "2.89.0" + resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation-react/-/semi-animation-react-2.89.0.tgz#be95b42a928ffe60b54d688dcf1d0f65e81b5bcc" + integrity sha512-6GSQMF2bIoWN2Bua4wYGCe//ltfE1/iNQRMF7+TybVMz9kBJU0gelFsvxxVnqpka994RuTvhe73CSWWdpLwjng== dependencies: - "@douyinfe/semi-animation" "2.88.3" - "@douyinfe/semi-animation-styled" "2.88.3" + "@douyinfe/semi-animation" "2.89.0" + "@douyinfe/semi-animation-styled" "2.89.0" classnames "^2.2.6" -"@douyinfe/semi-animation-styled@2.88.3": - version "2.88.3" - resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation-styled/-/semi-animation-styled-2.88.3.tgz#e284da909af68e2f7d96a0bf1847ceea69c455e5" - integrity sha512-VNuMBD4mffSB4yCzhxHf7/AIRddIxUzz6U+jHQbd0ZAt75CXmj6h/YNyURpaYspHKr3bMqgRW98956CTa8qbjQ== +"@douyinfe/semi-animation-styled@2.89.0": + version "2.89.0" + resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation-styled/-/semi-animation-styled-2.89.0.tgz#72cd09f73abf5198bcfb47f6254c0f2799c146b2" + integrity sha512-y1wXswseGbJpPh3hJQ9aNjnMzecLh9eUERmSpQaWbDSdrzk65hBa91MMC2rk/wlIN0/Q6OAKU8FcMoSiBiuI0Q== -"@douyinfe/semi-animation@2.88.3": - version "2.88.3" - resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation/-/semi-animation-2.88.3.tgz#b7ee6f792844c1c8abb087b30e709cd9b4600b83" - integrity sha512-x7Ef2IJjW8M0cgg41P7hgePlxz3XvWRVcov4fvzAE3LYBPgYRz9FL+k/gQ/OhT8PpnlHh5XpPUL3N2ATBLeiEQ== +"@douyinfe/semi-animation@2.89.0": + version "2.89.0" + resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation/-/semi-animation-2.89.0.tgz#a30de59827f6b8452100a5dd2a828aebe8cb86ec" + integrity sha512-y6an913b841V0BAdR5qSLYvoK5C2OAbNKImzM+FzWmbRQjzbOEYcF3bqi5AZhY4mYk7v05k2W7U6fmaXYNOS1Q== dependencies: bezier-easing "^2.1.0" -"@douyinfe/semi-foundation@2.88.3": - version "2.88.3" - resolved "https://registry.yarnpkg.com/@douyinfe/semi-foundation/-/semi-foundation-2.88.3.tgz#761203e8d71359ec61084007a18d7779e627fe5a" - integrity sha512-/jlSfki5Bg4lAqbl0oAUtHqzWqFijvqcHvH/dmU1wgLw/kZYj/bQkA3G9/VrTyWggfXmq2JC6bx9EoQAvXEsSQ== +"@douyinfe/semi-foundation@2.89.0": + version "2.89.0" + resolved "https://registry.yarnpkg.com/@douyinfe/semi-foundation/-/semi-foundation-2.89.0.tgz#299b10ecb92289bd4158471d91a08dfc461b7ef2" + integrity sha512-Ryc2XywB3BVoUHETp5e7cY9x/ccweeKyCjqw/dcM16txeSpGxW7p1ykexGHRl3+dz1QcVrU4vp/ELD6GutC0Sg== dependencies: - "@douyinfe/semi-animation" "2.88.3" - "@douyinfe/semi-json-viewer-core" "2.88.3" + "@douyinfe/semi-animation" "2.89.0" + "@douyinfe/semi-json-viewer-core" "2.89.0" "@mdx-js/mdx" "^3.0.1" async-validator "^3.5.0" classnames "^2.2.6" @@ -1038,44 +1038,44 @@ remark-gfm "^4.0.0" scroll-into-view-if-needed "^2.2.24" -"@douyinfe/semi-icons@2.88.3", "@douyinfe/semi-icons@^2.88.3": - version "2.88.3" - resolved "https://registry.yarnpkg.com/@douyinfe/semi-icons/-/semi-icons-2.88.3.tgz#9aaa2e580147affa8587a495679b8d860a8af194" - integrity sha512-g3YFaM8Jr0GRY9rV5OuxvmZiqZUN9grj+TdRC930StxBjxdp901WGhuaPGpkaVahO0mkX3hSAJVlQYPEF/MOzQ== +"@douyinfe/semi-icons@2.89.0", "@douyinfe/semi-icons@^2.89.0": + version "2.89.0" + resolved "https://registry.yarnpkg.com/@douyinfe/semi-icons/-/semi-icons-2.89.0.tgz#c9252981fde29668e3a88862948d09f71360a4fa" + integrity sha512-LfUhh/S0+3bOdD7jy1xg5F1y6mXrYtDiIsA1Hmuhy3zhNSpSKSwfqPiV3IxwRRmGXFWjgiSefKd99h5OmKMPHg== dependencies: classnames "^2.2.6" -"@douyinfe/semi-illustrations@2.88.3": - version "2.88.3" - resolved "https://registry.yarnpkg.com/@douyinfe/semi-illustrations/-/semi-illustrations-2.88.3.tgz#72101f0eec8d3bb7d10f8108af6cc91c8de3300f" - integrity sha512-L8nqLz7YaRTDM+ZSXmWLrt+zjaGl7SFOBT4QQG7O6q1gmaK2XOiHWLiiQYztp863cMr11LSBIckMy56M9ScCbQ== +"@douyinfe/semi-illustrations@2.89.0": + version "2.89.0" + resolved "https://registry.yarnpkg.com/@douyinfe/semi-illustrations/-/semi-illustrations-2.89.0.tgz#93611cfa572d79eb4bd50a1e13ee416161e6f41f" + integrity sha512-yAU4sSHr236E7ygTlwxupQkeF/W7EtfrUfRx3NUdGWuswMPAICz7d6Upa0XAZoCJ4skBZ5ItcQq9FfM+pw4wKg== -"@douyinfe/semi-json-viewer-core@2.88.3": - version "2.88.3" - resolved "https://registry.yarnpkg.com/@douyinfe/semi-json-viewer-core/-/semi-json-viewer-core-2.88.3.tgz#f2451d0423f028758e44ea7035a2f668651959a3" - integrity sha512-2tqTXbUrDYxZVu/Stl14Rv/WeiqbYlfyKmra9AIG81ZaqG1fP28g/dkiBlHVzUZbYCMM9s3EGAuZugn1jWkWKQ== +"@douyinfe/semi-json-viewer-core@2.89.0": + version "2.89.0" + resolved "https://registry.yarnpkg.com/@douyinfe/semi-json-viewer-core/-/semi-json-viewer-core-2.89.0.tgz#4254ce7d36c24f70267980f8e8a42faf6757f502" + integrity sha512-BGMJgg+tBFcwg3/7aJmtIXaHW+tSA6Tae3UfyhLYjUxcl6cFtYjtN0DAGwoia9KzUdNHoSAhl3GJVtGCBsmApQ== dependencies: jsonc-parser "^3.3.1" -"@douyinfe/semi-theme-default@2.88.3": - version "2.88.3" - resolved "https://registry.yarnpkg.com/@douyinfe/semi-theme-default/-/semi-theme-default-2.88.3.tgz#513506c6eaa9d23510054ae852cb63f4147f37c3" - integrity sha512-mCuxedgCT1bJChMEQ+AAJ8g0oJQZaXsL+vVKxjqISjFUutbUvs++K+A2pWobgZafOXu1JS+cpppPsEcR4G4JvQ== +"@douyinfe/semi-theme-default@2.89.0": + version "2.89.0" + resolved "https://registry.yarnpkg.com/@douyinfe/semi-theme-default/-/semi-theme-default-2.89.0.tgz#eb1fed1939a16fb903f6845867007020d76a503b" + integrity sha512-mdL6Ui1XMGW9L5tYl9uG3MnmyHaIXnRVa7b4PB0Y8kfFGAVzls5XBjZT5ACVtwxlVZrU5BrJBFOXGER5p1FVDg== -"@douyinfe/semi-ui@2.88.3": - version "2.88.3" - resolved "https://registry.yarnpkg.com/@douyinfe/semi-ui/-/semi-ui-2.88.3.tgz#d2b1b4fe9147d18371ddc45d91601378eb885d45" - integrity sha512-lVW4euk+j+ev2c4c2LNwx1gwnEU6pGguaB5Z9E11DoyrvMtIg5irow5o1M4pG1r3xbU+4+oQqkRLPXAx01WPzg== +"@douyinfe/semi-ui@2.89.0": + version "2.89.0" + resolved "https://registry.yarnpkg.com/@douyinfe/semi-ui/-/semi-ui-2.89.0.tgz#563adb7f33b9d888a882573024df2296be3c8bf4" + integrity sha512-XZ2yo2TgGWk8ubukJq7zbpKePpswQRq3nxeBlmL39SEben8AUfEq92vus0Hcmua5Y2wgi6TY2qWPgo+WEZCrkQ== dependencies: "@dnd-kit/core" "^6.0.8" "@dnd-kit/sortable" "^7.0.2" "@dnd-kit/utilities" "^3.2.1" - "@douyinfe/semi-animation" "2.88.3" - "@douyinfe/semi-animation-react" "2.88.3" - "@douyinfe/semi-foundation" "2.88.3" - "@douyinfe/semi-icons" "2.88.3" - "@douyinfe/semi-illustrations" "2.88.3" - "@douyinfe/semi-theme-default" "2.88.3" + "@douyinfe/semi-animation" "2.89.0" + "@douyinfe/semi-animation-react" "2.89.0" + "@douyinfe/semi-foundation" "2.89.0" + "@douyinfe/semi-icons" "2.89.0" + "@douyinfe/semi-illustrations" "2.89.0" + "@douyinfe/semi-theme-default" "2.89.0" "@tiptap/core" "^3.10.7" "@tiptap/extension-document" "^3.10.7" "@tiptap/extension-hard-break" "^3.10.7" @@ -1530,10 +1530,10 @@ "@resvg/resvg-js-win32-ia32-msvc" "2.4.1" "@resvg/resvg-js-win32-x64-msvc" "2.4.1" -"@rolldown/pluginutils@1.0.0-beta.47": - version "1.0.0-beta.47" - resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.47.tgz#c282c4a8c39f3d6d2f1086aae09a34e6241f7a50" - integrity sha512-8QagwMH3kNCuzD8EWL8R2YPW5e4OrHNSAHRFDdmFqEwEaD/KcNKjVoumo+gP2vW5eKB2UPbM6vTYiGZX0ixLnw== +"@rolldown/pluginutils@1.0.0-beta.53": + version "1.0.0-beta.53" + resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.53.tgz#c57a5234ae122671aff6fe72e673a7ed90f03f87" + integrity sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ== "@rollup/rollup-android-arm-eabi@4.49.0": version "4.49.0" @@ -2087,15 +2087,15 @@ "@turf/invariant" "^6.5.0" eventemitter3 "^4.0.7" -"@vitejs/plugin-react@5.1.1": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-5.1.1.tgz#fa1957e053fe90d7cc2deea5593ae382a9761595" - integrity sha512-WQfkSw0QbQ5aJ2CHYw23ZGkqnRwqKHD/KYsMeTkZzPT4Jcf0DcBxBtwMJxnu6E7oxw5+JC6ZAiePgh28uJ1HBA== +"@vitejs/plugin-react@5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-5.1.2.tgz#46f47be184c05a18839cb8705d79578b469ac6eb" + integrity sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ== dependencies: "@babel/core" "^7.28.5" "@babel/plugin-transform-react-jsx-self" "^7.27.1" "@babel/plugin-transform-react-jsx-source" "^7.27.1" - "@rolldown/pluginutils" "1.0.0-beta.47" + "@rolldown/pluginutils" "1.0.0-beta.53" "@types/babel__core" "^7.20.5" react-refresh "^0.18.0" @@ -6365,10 +6365,10 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -puppeteer-core@24.32.0: - version "24.32.0" - resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-24.32.0.tgz#6dfe044bff236e4047b7834d93a72940b3891c32" - integrity sha512-MqzLLeJjqjtHK9J44+KE3kjtXXhFpPvg+AvXl/oy/jB8MeeNH66/4MNotOTqGZ6MPaxWi51YJ1ASga6OIff6xw== +puppeteer-core@24.32.1: + version "24.32.1" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-24.32.1.tgz#def7d96620d3460cb36a6e0dcd79cb897c19af30" + integrity sha512-GdWTOgy3RqaW6Etgx93ydlVJ4FBJ6TmhMksG5W7v4uawKAzLHNj33k4kBQ1SFZ9NvoXNjhdQuIQ+uik2kWnarA== dependencies: "@puppeteer/browsers" "2.11.0" chromium-bidi "11.0.0" @@ -6425,16 +6425,16 @@ puppeteer-extra@^3.3.6: debug "^4.1.1" deepmerge "^4.2.2" -puppeteer@^24.32.0: - version "24.32.0" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-24.32.0.tgz#0f0e20b8024b3fdc46c9f06afee69f0e450473d4" - integrity sha512-exyxHPV5DSsigIhM/pzLcyzl5XU4Dp5lNP+APwIeStDxAdYqpMnJ1qN0QHXghjJx+cQJczby+ySH5rgv/5GQLw== +puppeteer@^24.32.1: + version "24.32.1" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-24.32.1.tgz#d11e204138750eeada834fdd6746ffba30733655" + integrity sha512-wa8vGswFjH1iCyG6bGGydIYssEBluXixbMibK4x2x6/lIAuR87gF+c+Jjzom2Wiw/dDOtuki89VBurRWrgYaUA== dependencies: "@puppeteer/browsers" "2.11.0" chromium-bidi "11.0.0" cosmiconfig "^9.0.0" devtools-protocol "0.0.1534754" - puppeteer-core "24.32.0" + puppeteer-core "24.32.1" typed-query-selector "^2.12.0" qs@^6.14.0: @@ -6524,17 +6524,17 @@ react-resizable@^3.0.5: prop-types "15.x" react-draggable "^4.0.3" -react-router-dom@7.10.0: - version "7.10.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-7.10.0.tgz#88e706f9f09cc5039c3694b643993bd8ef93fc12" - integrity sha512-Q4haR150pN/5N75O30iIsRJcr3ef7p7opFaKpcaREy0GQit6uCRu1NEiIFIwnHJQy0bsziRFBweR/5EkmHgVUQ== +react-router-dom@7.10.1: + version "7.10.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-7.10.1.tgz#fddea814d30a3630c11d9ea539932482ff6f744c" + integrity sha512-JNBANI6ChGVjA5bwsUIwJk7LHKmqB4JYnYfzFwyp2t12Izva11elds2jx7Yfoup2zssedntwU0oZ5DEmk5Sdaw== dependencies: - react-router "7.10.0" + react-router "7.10.1" -react-router@7.10.0: - version "7.10.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.10.0.tgz#45b666036800a023997137ee6caef6d4b8c79f78" - integrity sha512-FVyCOH4IZ0eDDRycODfUqoN8ZSR2LbTvtx6RPsBgzvJ8xAXlMZNCrOFpu+jb8QbtZnpAd/cEki2pwE848pNGxw== +react-router@7.10.1: + version "7.10.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.10.1.tgz#e973146ed5f10a80783fdb3f27dbe37679557a7c" + integrity sha512-gHL89dRa3kwlUYtRQ+m8NmxGI6CgqN+k4XyGjwcFoQwwCWF6xXpOCUlDovkXClS0d0XJN/5q7kc5W3kiFEd0Yw== dependencies: cookie "^1.0.1" set-cookie-parser "^2.6.0" @@ -7832,10 +7832,10 @@ vfile@^6.0.0: "@types/unist" "^3.0.0" vfile-message "^4.0.0" -vite@7.2.6: - version "7.2.6" - resolved "https://registry.yarnpkg.com/vite/-/vite-7.2.6.tgz#91e05ba05bc7c667a7645595e21f2a0eb1057631" - integrity sha512-tI2l/nFHC5rLh7+5+o7QjKjSR04ivXDF4jcgV0f/bTQ+OJiITy5S6gaynVsEM+7RqzufMnVbIon6Sr5x1SDYaQ== +vite@7.2.7: + version "7.2.7" + resolved "https://registry.yarnpkg.com/vite/-/vite-7.2.7.tgz#0789a4c3206081699f34a9ecca2dda594a07478e" + integrity sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ== dependencies: esbuild "^0.25.0" fdir "^6.5.0"