@storybook/addon-vitest 0.0.0-pr-32047-sha-f7ca9cf4 → 0.0.0-pr-32047-sha-849844bb

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -42640,8 +42640,9 @@ declare global {
42640
42640
  declare global {
42641
42641
  const logToPage: (message: string) => Promise<void>;
42642
42642
  }
42643
+ declare const convertToFilePath: (url: string) => string;
42643
42644
  declare function prepareScript(page: Page): Promise<void>;
42644
42645
  declare function setupPageScript(page: Page): Promise<void>;
42645
42646
  declare function testStory(storyId: string, page: Page): Promise<void>;
42646
42647
 
42647
- export { prepareScript, setupPageScript, testStory };
42648
+ export { convertToFilePath, prepareScript, setupPageScript, testStory };
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- async function prepareScript(page){await page.goto("http://localhost:6006/iframe.html",{waitUntil:"load"}).catch(err=>{if(err.message?.includes("ERR_CONNECTION_REFUSED")){let errorMessage=`Could not access the Storybook instance at http://localhost:6006. Are you sure it's running?
3
+ var convertToFilePath=url=>url.replace(/^file:\/\//,"").replace(/^\/+([a-zA-Z]:)/,"$1").replace(/%20/g," ");async function prepareScript(page){await page.goto("http://localhost:6006/iframe.html",{waitUntil:"load"}).catch(err=>{if(err.message?.includes("ERR_CONNECTION_REFUSED")){let errorMessage=`Could not access the Storybook instance at http://localhost:6006. Are you sure it's running?
4
4
 
5
5
  ${err.message}`;throw new Error(errorMessage)}throw err}),await page.exposeBinding("logToPage",(_,message)=>console.log(message));}async function setupPageScript(page){await page.evaluate(async()=>{let TEST_RUNNER_STORYBOOK_URL="http://localhost:6006",TEST_RUNNER_VERSION="1.0.0",TEST_RUNNER_RENDERED_EVENT="storyFinished",TEST_RUNNER_VIEW_MODE="story",TEST_RUNNER_LOG_LEVEL="verbose",bold=message=>`\x1B[1m${message}\x1B[22m`,magenta=message=>`\x1B[35m${message}\x1B[39m`,blue=message=>`\x1B[34m${message}\x1B[39m`,red=message=>`\x1B[31m${message}\x1B[39m`,yellow=message=>`\x1B[33m${message}\x1B[39m`,grey=message=>`\x1B[90m${message}\x1B[39m`,LIMIT_REPLACE_NODE="[...]",CIRCULAR_REPLACE_NODE="[Circular]",arr=[],replacerStack=[];function defaultOptions(){return {depthLimit:Number.MAX_SAFE_INTEGER,edgesLimit:Number.MAX_SAFE_INTEGER}}function stringify(obj,replacer,spacer,options){typeof options>"u"&&(options=defaultOptions()),decirc(obj,"",0,[],void 0,0,options);let res;try{replacerStack.length===0?res=JSON.stringify(obj,replacer,spacer):res=JSON.stringify(obj,replaceGetterValues(replacer),spacer);}catch{return JSON.stringify("[unable to serialize, circular reference is too complex to analyze]")}finally{for(;arr.length!==0;){let part=arr.pop();part&&part.length===4?Object.defineProperty(part[0],part[1],part[3]):part&&(part[0][part[1]]=part[2]);}}return res}function decirc(val,k,edgeIndex,stack,parent,depth,options){depth+=1;let i;if(typeof val=="object"&&val!==null){for(i=0;i<stack.length;i++)if(stack[i]===val){setReplace(CIRCULAR_REPLACE_NODE,val,k,parent);return}if(depth>options.depthLimit||edgeIndex+1>options.edgesLimit){setReplace(LIMIT_REPLACE_NODE,val,k,parent);return}if(stack.push(val),Array.isArray(val))for(i=0;i<val.length;i++)decirc(val[i],i.toString(),i,stack,val,depth,options);else {let keys=Object.keys(val);for(i=0;i<keys.length;i++){let key=keys[i];decirc(val[key],key,i,stack,val,depth,options);}}stack.pop();}}function setReplace(replace,val,k,parent){if(!parent)return;let propertyDescriptor=Object.getOwnPropertyDescriptor(parent,k);propertyDescriptor&&propertyDescriptor.get!==void 0?propertyDescriptor.configurable?(Object.defineProperty(parent,k,{value:replace}),arr.push([parent,k,val,propertyDescriptor])):replacerStack.push([val,k,replace]):(parent[k]=replace,arr.push([parent,k,val]));}function replaceGetterValues(replacer){let effectiveReplacer=replacer??((_k,v)=>v);return function(key,val){if(replacerStack.length>0)for(let i=0;i<replacerStack.length;i++){let part=replacerStack[i];if(part[1]===key&&part[0]===val){val=part[2],replacerStack.splice(i,1);break}}return effectiveReplacer.call(this,key,val)}}function composeMessage(args){return args instanceof Error?`${args.name}: ${args.message}
6
6
  ${args.stack}`:typeof args>"u"?"undefined":typeof args=="string"?args:stringify(args,null,null,{depthLimit:5,edgesLimit:100})}function truncate(input,limit){return input.length>limit?input.substring(0,limit)+"\u2026":input}function addToUserAgent(extra){let originalUserAgent=globalThis.navigator.userAgent;originalUserAgent.includes(extra)||Object.defineProperty(globalThis.navigator,"userAgent",{get:function(){return [originalUserAgent,extra].join(" ")},configurable:!0});}function getStory(){let currentRender=globalThis.__STORYBOOK_PREVIEW__.currentRender;return currentRender&&"story"in currentRender?currentRender.story:{}}class StorybookTestRunnerError extends Error{constructor(params){let{storyId,errorMessage,logs=[],isMessageFormatted=!1}=params,message=isMessageFormatted?errorMessage:StorybookTestRunnerError.buildErrorMessage({storyId,errorMessage,logs});super(message),this.name="StorybookTestRunnerError";}static buildErrorMessage(params){let{storyId,errorMessage,logs=[],panel,errorMessagePrefix=""}=params,storyUrl=`${TEST_RUNNER_STORYBOOK_URL}?path=/story/${storyId}`,finalStoryUrl=panel?`${storyUrl}&addonPanel=${panel}`:storyUrl,separator=`
@@ -26,8 +26,9 @@ ${blue(violation.helpUrl)}`:"")}).join(lineBreak)).join(lineBreak+"\u2500\u2500\
26
26
  HTML: ${document.body.innerHTML}`;throw new StorybookTestRunnerError({storyId,errorMessage:message})}let channel=globalThis.__STORYBOOK_ADDONS_CHANNEL__;if(!channel)throw new StorybookTestRunnerError({storyId,errorMessage:"The test runner could not access the Storybook channel. Are you sure the Storybook is running correctly in that URL?"});addToUserAgent(`(StorybookTestRunner@${TEST_RUNNER_VERSION})`);let logs=[],hasErrors=!1,logLevelMapping={log:["info","verbose"],warn:["info","warn","verbose"],error:["info","warn","error","verbose"],info:["verbose"],trace:["verbose"],debug:["verbose"],group:["verbose"],groupCollapsed:["verbose"],table:["verbose"],dir:["verbose"]},spyOnConsole=(method,name)=>{let originalFn=console[method].bind(console);console[method]=function(...args){if(method==="error"&&isServerComponentError(args[0]))return;let shouldCollectError=method==="error";shouldCollectError&&(hasErrors=!0);let message=args.map(composeMessage).join(", ");if(method==="trace"){let stackTrace=new Error().stack;message+=`
27
27
  ${stackTrace}
28
28
  `;}if(logLevelMapping[method].includes(TEST_RUNNER_LOG_LEVEL)||shouldCollectError){let prefix=`${bold(name)}: `;logs.push(prefix+message);}originalFn(...args);};};Object.entries({log:blue,info:blue,warn:yellow,error:red,dir:magenta,trace:magenta,group:magenta,groupCollapsed:magenta,table:magenta,debug:magenta}).forEach(([method,color])=>{spyOnConsole(method,color(method));});let cleanup=_listeners=>{Object.entries(_listeners).forEach(([eventName,listener])=>{channel.off(eventName,listener);});};return new Promise((resolve,reject)=>{let rejectWithFormattedError=(storyId2,message,panel)=>{let errorMessage=StorybookTestRunnerError.buildErrorMessage({storyId:storyId2,errorMessage:message,logs,panel});reject(new StorybookTestRunnerError({storyId:storyId2,errorMessage,logs,isMessageFormatted:!0}));},INTERACTIONS_PANEL="storybook/interactions/panel",A11Y_PANEL="storybook/a11y/panel",listeners={[TEST_RUNNER_RENDERED_EVENT]:data=>{if(cleanup(listeners),hasErrors){rejectWithFormattedError(storyId,"Browser console errors");return}else if(data?.reporters){let story=getStory(),a11yGlobals=story.globals?.a11y,a11yParameter=story.parameters?.a11y,a11yTestParameter=a11yParameter?.test,a11yReport=data.reporters.find(reporter=>reporter.type==="a11y");if(a11yParameter?.disable!==!0&&a11yParameter?.test!=="off"&&a11yGlobals?.manual!==!0&&a11yReport?.result?.violations?.length>0){let violations=expectToHaveNoViolations(a11yReport.result);if(violations&&a11yTestParameter==="error"){rejectWithFormattedError(storyId,violations.long,A11Y_PANEL);return}else if(violations&&a11yTestParameter==="todo"){let warningMessage=StorybookTestRunnerError.buildErrorMessage({storyId,errorMessagePrefix:`--------------------------
29
- ${story.title} > ${story.name}`,errorMessage:yellow(violations.short),logs,panel:A11Y_PANEL});logToPage(warningMessage);}}}resolve(document.getElementById("root"));},storyUnchanged:()=>{cleanup(listeners),resolve(document.getElementById("root"));},storyErrored:({description})=>{cleanup(listeners),rejectWithFormattedError(storyId,description,INTERACTIONS_PANEL);},storyThrewException:error=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},playFunctionThrewException:error=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},unhandledErrorsWhilePlaying:([error])=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},storyMissing:id=>{cleanup(listeners),id===storyId&&rejectWithFormattedError(storyId,"The story was missing when trying to access it.");}};Object.entries(listeners).forEach(([eventName,listener])=>{channel.on(eventName,listener);}),channel.emit("setCurrentStory",{storyId,viewMode:TEST_RUNNER_VIEW_MODE});})}globalThis.__test=__test;});}async function testStory(storyId,page){await page.evaluate(async()=>await globalThis.__test(storyId));}
29
+ ${story.title} > ${story.name}`,errorMessage:yellow(violations.short),logs,panel:A11Y_PANEL});logToPage(warningMessage);}}}resolve(document.getElementById("root"));},storyUnchanged:()=>{cleanup(listeners),resolve(document.getElementById("root"));},storyErrored:({description})=>{cleanup(listeners),rejectWithFormattedError(storyId,description,INTERACTIONS_PANEL);},storyThrewException:error=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},playFunctionThrewException:error=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},unhandledErrorsWhilePlaying:([error])=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},storyMissing:id=>{cleanup(listeners),id===storyId&&rejectWithFormattedError(storyId,"The story was missing when trying to access it.");}};Object.entries(listeners).forEach(([eventName,listener])=>{channel.on(eventName,listener);}),channel.emit("setCurrentStory",{storyId,viewMode:TEST_RUNNER_VIEW_MODE});})}globalThis.__test=__test;});}async function testStory(storyId,page){await page.evaluate(async storyId2=>await globalThis.__test(storyId2),storyId);}
30
30
 
31
+ exports.convertToFilePath = convertToFilePath;
31
32
  exports.prepareScript = prepareScript;
32
33
  exports.setupPageScript = setupPageScript;
33
34
  exports.testStory = testStory;
@@ -1,4 +1,4 @@
1
- async function prepareScript(page){await page.goto("http://localhost:6006/iframe.html",{waitUntil:"load"}).catch(err=>{if(err.message?.includes("ERR_CONNECTION_REFUSED")){let errorMessage=`Could not access the Storybook instance at http://localhost:6006. Are you sure it's running?
1
+ var convertToFilePath=url=>url.replace(/^file:\/\//,"").replace(/^\/+([a-zA-Z]:)/,"$1").replace(/%20/g," ");async function prepareScript(page){await page.goto("http://localhost:6006/iframe.html",{waitUntil:"load"}).catch(err=>{if(err.message?.includes("ERR_CONNECTION_REFUSED")){let errorMessage=`Could not access the Storybook instance at http://localhost:6006. Are you sure it's running?
2
2
 
3
3
  ${err.message}`;throw new Error(errorMessage)}throw err}),await page.exposeBinding("logToPage",(_,message)=>console.log(message));}async function setupPageScript(page){await page.evaluate(async()=>{let TEST_RUNNER_STORYBOOK_URL="http://localhost:6006",TEST_RUNNER_VERSION="1.0.0",TEST_RUNNER_RENDERED_EVENT="storyFinished",TEST_RUNNER_VIEW_MODE="story",TEST_RUNNER_LOG_LEVEL="verbose",bold=message=>`\x1B[1m${message}\x1B[22m`,magenta=message=>`\x1B[35m${message}\x1B[39m`,blue=message=>`\x1B[34m${message}\x1B[39m`,red=message=>`\x1B[31m${message}\x1B[39m`,yellow=message=>`\x1B[33m${message}\x1B[39m`,grey=message=>`\x1B[90m${message}\x1B[39m`,LIMIT_REPLACE_NODE="[...]",CIRCULAR_REPLACE_NODE="[Circular]",arr=[],replacerStack=[];function defaultOptions(){return {depthLimit:Number.MAX_SAFE_INTEGER,edgesLimit:Number.MAX_SAFE_INTEGER}}function stringify(obj,replacer,spacer,options){typeof options>"u"&&(options=defaultOptions()),decirc(obj,"",0,[],void 0,0,options);let res;try{replacerStack.length===0?res=JSON.stringify(obj,replacer,spacer):res=JSON.stringify(obj,replaceGetterValues(replacer),spacer);}catch{return JSON.stringify("[unable to serialize, circular reference is too complex to analyze]")}finally{for(;arr.length!==0;){let part=arr.pop();part&&part.length===4?Object.defineProperty(part[0],part[1],part[3]):part&&(part[0][part[1]]=part[2]);}}return res}function decirc(val,k,edgeIndex,stack,parent,depth,options){depth+=1;let i;if(typeof val=="object"&&val!==null){for(i=0;i<stack.length;i++)if(stack[i]===val){setReplace(CIRCULAR_REPLACE_NODE,val,k,parent);return}if(depth>options.depthLimit||edgeIndex+1>options.edgesLimit){setReplace(LIMIT_REPLACE_NODE,val,k,parent);return}if(stack.push(val),Array.isArray(val))for(i=0;i<val.length;i++)decirc(val[i],i.toString(),i,stack,val,depth,options);else {let keys=Object.keys(val);for(i=0;i<keys.length;i++){let key=keys[i];decirc(val[key],key,i,stack,val,depth,options);}}stack.pop();}}function setReplace(replace,val,k,parent){if(!parent)return;let propertyDescriptor=Object.getOwnPropertyDescriptor(parent,k);propertyDescriptor&&propertyDescriptor.get!==void 0?propertyDescriptor.configurable?(Object.defineProperty(parent,k,{value:replace}),arr.push([parent,k,val,propertyDescriptor])):replacerStack.push([val,k,replace]):(parent[k]=replace,arr.push([parent,k,val]));}function replaceGetterValues(replacer){let effectiveReplacer=replacer??((_k,v)=>v);return function(key,val){if(replacerStack.length>0)for(let i=0;i<replacerStack.length;i++){let part=replacerStack[i];if(part[1]===key&&part[0]===val){val=part[2],replacerStack.splice(i,1);break}}return effectiveReplacer.call(this,key,val)}}function composeMessage(args){return args instanceof Error?`${args.name}: ${args.message}
4
4
  ${args.stack}`:typeof args>"u"?"undefined":typeof args=="string"?args:stringify(args,null,null,{depthLimit:5,edgesLimit:100})}function truncate(input,limit){return input.length>limit?input.substring(0,limit)+"\u2026":input}function addToUserAgent(extra){let originalUserAgent=globalThis.navigator.userAgent;originalUserAgent.includes(extra)||Object.defineProperty(globalThis.navigator,"userAgent",{get:function(){return [originalUserAgent,extra].join(" ")},configurable:!0});}function getStory(){let currentRender=globalThis.__STORYBOOK_PREVIEW__.currentRender;return currentRender&&"story"in currentRender?currentRender.story:{}}class StorybookTestRunnerError extends Error{constructor(params){let{storyId,errorMessage,logs=[],isMessageFormatted=!1}=params,message=isMessageFormatted?errorMessage:StorybookTestRunnerError.buildErrorMessage({storyId,errorMessage,logs});super(message),this.name="StorybookTestRunnerError";}static buildErrorMessage(params){let{storyId,errorMessage,logs=[],panel,errorMessagePrefix=""}=params,storyUrl=`${TEST_RUNNER_STORYBOOK_URL}?path=/story/${storyId}`,finalStoryUrl=panel?`${storyUrl}&addonPanel=${panel}`:storyUrl,separator=`
@@ -24,6 +24,6 @@ ${blue(violation.helpUrl)}`:"")}).join(lineBreak)).join(lineBreak+"\u2500\u2500\
24
24
  HTML: ${document.body.innerHTML}`;throw new StorybookTestRunnerError({storyId,errorMessage:message})}let channel=globalThis.__STORYBOOK_ADDONS_CHANNEL__;if(!channel)throw new StorybookTestRunnerError({storyId,errorMessage:"The test runner could not access the Storybook channel. Are you sure the Storybook is running correctly in that URL?"});addToUserAgent(`(StorybookTestRunner@${TEST_RUNNER_VERSION})`);let logs=[],hasErrors=!1,logLevelMapping={log:["info","verbose"],warn:["info","warn","verbose"],error:["info","warn","error","verbose"],info:["verbose"],trace:["verbose"],debug:["verbose"],group:["verbose"],groupCollapsed:["verbose"],table:["verbose"],dir:["verbose"]},spyOnConsole=(method,name)=>{let originalFn=console[method].bind(console);console[method]=function(...args){if(method==="error"&&isServerComponentError(args[0]))return;let shouldCollectError=method==="error";shouldCollectError&&(hasErrors=!0);let message=args.map(composeMessage).join(", ");if(method==="trace"){let stackTrace=new Error().stack;message+=`
25
25
  ${stackTrace}
26
26
  `;}if(logLevelMapping[method].includes(TEST_RUNNER_LOG_LEVEL)||shouldCollectError){let prefix=`${bold(name)}: `;logs.push(prefix+message);}originalFn(...args);};};Object.entries({log:blue,info:blue,warn:yellow,error:red,dir:magenta,trace:magenta,group:magenta,groupCollapsed:magenta,table:magenta,debug:magenta}).forEach(([method,color])=>{spyOnConsole(method,color(method));});let cleanup=_listeners=>{Object.entries(_listeners).forEach(([eventName,listener])=>{channel.off(eventName,listener);});};return new Promise((resolve,reject)=>{let rejectWithFormattedError=(storyId2,message,panel)=>{let errorMessage=StorybookTestRunnerError.buildErrorMessage({storyId:storyId2,errorMessage:message,logs,panel});reject(new StorybookTestRunnerError({storyId:storyId2,errorMessage,logs,isMessageFormatted:!0}));},INTERACTIONS_PANEL="storybook/interactions/panel",A11Y_PANEL="storybook/a11y/panel",listeners={[TEST_RUNNER_RENDERED_EVENT]:data=>{if(cleanup(listeners),hasErrors){rejectWithFormattedError(storyId,"Browser console errors");return}else if(data?.reporters){let story=getStory(),a11yGlobals=story.globals?.a11y,a11yParameter=story.parameters?.a11y,a11yTestParameter=a11yParameter?.test,a11yReport=data.reporters.find(reporter=>reporter.type==="a11y");if(a11yParameter?.disable!==!0&&a11yParameter?.test!=="off"&&a11yGlobals?.manual!==!0&&a11yReport?.result?.violations?.length>0){let violations=expectToHaveNoViolations(a11yReport.result);if(violations&&a11yTestParameter==="error"){rejectWithFormattedError(storyId,violations.long,A11Y_PANEL);return}else if(violations&&a11yTestParameter==="todo"){let warningMessage=StorybookTestRunnerError.buildErrorMessage({storyId,errorMessagePrefix:`--------------------------
27
- ${story.title} > ${story.name}`,errorMessage:yellow(violations.short),logs,panel:A11Y_PANEL});logToPage(warningMessage);}}}resolve(document.getElementById("root"));},storyUnchanged:()=>{cleanup(listeners),resolve(document.getElementById("root"));},storyErrored:({description})=>{cleanup(listeners),rejectWithFormattedError(storyId,description,INTERACTIONS_PANEL);},storyThrewException:error=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},playFunctionThrewException:error=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},unhandledErrorsWhilePlaying:([error])=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},storyMissing:id=>{cleanup(listeners),id===storyId&&rejectWithFormattedError(storyId,"The story was missing when trying to access it.");}};Object.entries(listeners).forEach(([eventName,listener])=>{channel.on(eventName,listener);}),channel.emit("setCurrentStory",{storyId,viewMode:TEST_RUNNER_VIEW_MODE});})}globalThis.__test=__test;});}async function testStory(storyId,page){await page.evaluate(async()=>await globalThis.__test(storyId));}
27
+ ${story.title} > ${story.name}`,errorMessage:yellow(violations.short),logs,panel:A11Y_PANEL});logToPage(warningMessage);}}}resolve(document.getElementById("root"));},storyUnchanged:()=>{cleanup(listeners),resolve(document.getElementById("root"));},storyErrored:({description})=>{cleanup(listeners),rejectWithFormattedError(storyId,description,INTERACTIONS_PANEL);},storyThrewException:error=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},playFunctionThrewException:error=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},unhandledErrorsWhilePlaying:([error])=>{cleanup(listeners),rejectWithFormattedError(storyId,error.message,INTERACTIONS_PANEL);},storyMissing:id=>{cleanup(listeners),id===storyId&&rejectWithFormattedError(storyId,"The story was missing when trying to access it.");}};Object.entries(listeners).forEach(([eventName,listener])=>{channel.on(eventName,listener);}),channel.emit("setCurrentStory",{storyId,viewMode:TEST_RUNNER_VIEW_MODE});})}globalThis.__test=__test;});}async function testStory(storyId,page){await page.evaluate(async storyId2=>await globalThis.__test(storyId2),storyId);}
28
28
 
29
- export { prepareScript, setupPageScript, testStory };
29
+ export { convertToFilePath, prepareScript, setupPageScript, testStory };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/addon-vitest",
3
- "version": "0.0.0-pr-32047-sha-f7ca9cf4",
3
+ "version": "0.0.0-pr-32047-sha-849844bb",
4
4
  "description": "Storybook addon for testing components",
5
5
  "keywords": [
6
6
  "storybook-addons",
@@ -129,7 +129,7 @@
129
129
  "peerDependencies": {
130
130
  "@vitest/browser": "^3.0.0",
131
131
  "@vitest/runner": "^3.0.0",
132
- "storybook": "^0.0.0-pr-32047-sha-f7ca9cf4",
132
+ "storybook": "^0.0.0-pr-32047-sha-849844bb",
133
133
  "vitest": "^3.0.0"
134
134
  },
135
135
  "peerDependenciesMeta": {