@storybook/telemetry 8.2.0-alpha.2 → 8.2.0-alpha.3
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
@@ -9,7 +9,7 @@ Content-Type: ${v.type||"application/octet-stream"}\r
|
|
9
9
|
`,v,`\r
|
10
10
|
`)),c.push(`--${b}--`),new B(c,{type:"multipart/form-data; boundary="+b})}var t,i,h,r,m,f,e,x,FormData,init_esm_min=__esm({"../../node_modules/formdata-polyfill/esm.min.js"(){"use strict";init_fetch_blob();init_file();({toStringTag:t,iterator:i,hasInstance:h}=Symbol),r=Math.random,m="append,set,get,getAll,delete,keys,values,entries,forEach,constructor".split(","),f=(a,b,c)=>(a+="",/^(Blob|File)$/.test(b&&b[t])?[(c=c!==void 0?c+"":b[t]=="File"?b.name:"blob",a),b.name!==c||b[t]=="blob"?new file_default([b],c,b):b]:[a,b+""]),e=(c,f3)=>(f3?c:c.replace(/\r?\n|\r/g,`\r
|
11
11
|
`)).replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),x=(n,a,e2)=>{if(a.length<e2)throw new TypeError(`Failed to execute '${n}' on 'FormData': ${e2} arguments required, but only ${a.length} present.`)},FormData=class{#d=[];constructor(...a){if(a.length)throw new TypeError("Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'.")}get[t](){return"FormData"}[i](){return this.entries()}static[h](o){return o&&typeof o=="object"&&o[t]==="FormData"&&!m.some(m2=>typeof o[m2]!="function")}append(...a){x("append",arguments,2),this.#d.push(f(...a))}delete(a){x("delete",arguments,1),a+="",this.#d=this.#d.filter(([b])=>b!==a)}get(a){x("get",arguments,1),a+="";for(var b=this.#d,l=b.length,c=0;c<l;c++)if(b[c][0]===a)return b[c][1];return null}getAll(a,b){return x("getAll",arguments,1),b=[],a+="",this.#d.forEach(c=>c[0]===a&&b.push(c[1])),b}has(a){return x("has",arguments,1),a+="",this.#d.some(b=>b[0]===a)}forEach(a,b){x("forEach",arguments,1);for(var[c,d]of this)a.call(b,d,c,this)}set(...a){x("set",arguments,2);var b=[],c=!0;a=f(...a),this.#d.forEach(d=>{d[0]===a[0]?c&&(c=!b.push(a)):b.push(d)}),c&&b.push(a),this.#d=b}*entries(){yield*this.#d}*keys(){for(var[a]of this)yield a}*values(){for(var[,a]of this)yield a}}}});var require_node_domexception=__commonJS({"../../node_modules/node-domexception/index.js"(exports2,module2){"use strict";if(!globalThis.DOMException)try{let{MessageChannel}=require("worker_threads"),port=new MessageChannel().port1,ab=new ArrayBuffer;port.postMessage(ab,[ab,ab])}catch(err){err.constructor.name==="DOMException"&&(globalThis.DOMException=err.constructor)}module2.exports=globalThis.DOMException}});var import_node_fs,import_node_path,import_node_domexception,stat,init_from=__esm({"../../node_modules/fetch-blob/from.js"(){"use strict";import_node_fs=require("fs"),import_node_path=require("path"),import_node_domexception=__toESM(require_node_domexception(),1);init_file();init_fetch_blob();({stat}=import_node_fs.promises)}});var multipart_parser_exports={};__export(multipart_parser_exports,{toFormData:()=>toFormData});function _fileName(headerValue){let m2=headerValue.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);if(!m2)return;let match=m2[2]||m2[3]||"",filename=match.slice(match.lastIndexOf("\\")+1);return filename=filename.replace(/%22/g,'"'),filename=filename.replace(/&#(\d{4});/g,(m3,code)=>String.fromCharCode(code)),filename}async function toFormData(Body2,ct){if(!/multipart/i.test(ct))throw new TypeError("Failed to fetch");let m2=ct.match(/boundary=(?:"([^"]+)"|([^;]+))/i);if(!m2)throw new TypeError("no or bad content-type header, no multipart boundary");let parser=new MultipartParser(m2[1]||m2[2]),headerField,headerValue,entryValue,entryName,contentType,filename,entryChunks=[],formData=new FormData,onPartData=ui8a=>{entryValue+=decoder.decode(ui8a,{stream:!0})},appendToFile=ui8a=>{entryChunks.push(ui8a)},appendFileToFormData=()=>{let file=new file_default(entryChunks,filename,{type:contentType});formData.append(entryName,file)},appendEntryToFormData=()=>{formData.append(entryName,entryValue)},decoder=new TextDecoder("utf-8");decoder.decode(),parser.onPartBegin=function(){parser.onPartData=onPartData,parser.onPartEnd=appendEntryToFormData,headerField="",headerValue="",entryValue="",entryName="",contentType="",filename=null,entryChunks.length=0},parser.onHeaderField=function(ui8a){headerField+=decoder.decode(ui8a,{stream:!0})},parser.onHeaderValue=function(ui8a){headerValue+=decoder.decode(ui8a,{stream:!0})},parser.onHeaderEnd=function(){if(headerValue+=decoder.decode(),headerField=headerField.toLowerCase(),headerField==="content-disposition"){let m3=headerValue.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i);m3&&(entryName=m3[2]||m3[3]||""),filename=_fileName(headerValue),filename&&(parser.onPartData=appendToFile,parser.onPartEnd=appendFileToFormData)}else headerField==="content-type"&&(contentType=headerValue);headerValue="",headerField=""};for await(let chunk of Body2)parser.write(chunk);return parser.end(),formData}var s,S,f2,F,LF,CR,SPACE,HYPHEN,COLON,A,Z,lower,noop,MultipartParser,init_multipart_parser=__esm({"node_modules/node-fetch/src/utils/multipart-parser.js"(){"use strict";init_from();init_esm_min();s=0,S={START_BOUNDARY:s++,HEADER_FIELD_START:s++,HEADER_FIELD:s++,HEADER_VALUE_START:s++,HEADER_VALUE:s++,HEADER_VALUE_ALMOST_DONE:s++,HEADERS_ALMOST_DONE:s++,PART_DATA_START:s++,PART_DATA:s++,END:s++},f2=1,F={PART_BOUNDARY:f2,LAST_BOUNDARY:f2*=2},LF=10,CR=13,SPACE=32,HYPHEN=45,COLON=58,A=97,Z=122,lower=c=>c|32,noop=()=>{},MultipartParser=class{constructor(boundary){this.index=0,this.flags=0,this.onHeaderEnd=noop,this.onHeaderField=noop,this.onHeadersEnd=noop,this.onHeaderValue=noop,this.onPartBegin=noop,this.onPartData=noop,this.onPartEnd=noop,this.boundaryChars={},boundary=`\r
|
12
|
-
--`+boundary;let ui8a=new Uint8Array(boundary.length);for(let i2=0;i2<boundary.length;i2++)ui8a[i2]=boundary.charCodeAt(i2),this.boundaryChars[ui8a[i2]]=!0;this.boundary=ui8a,this.lookbehind=new Uint8Array(this.boundary.length+8),this.state=S.START_BOUNDARY}write(data){let i2=0,length_=data.length,previousIndex=this.index,{lookbehind,boundary,boundaryChars,index,state,flags}=this,boundaryLength=this.boundary.length,boundaryEnd=boundaryLength-1,bufferLength=data.length,c,cl,mark=name=>{this[name+"Mark"]=i2},clear=name=>{delete this[name+"Mark"]},callback=(callbackSymbol,start,end,ui8a)=>{(start===void 0||start!==end)&&this[callbackSymbol](ui8a&&ui8a.subarray(start,end))},dataCallback=(name,clear2)=>{let markSymbol=name+"Mark";markSymbol in this&&(clear2?(callback(name,this[markSymbol],i2,data),delete this[markSymbol]):(callback(name,this[markSymbol],data.length,data),this[markSymbol]=0))};for(i2=0;i2<length_;i2++)switch(c=data[i2],state){case S.START_BOUNDARY:if(index===boundary.length-2){if(c===HYPHEN)flags|=F.LAST_BOUNDARY;else if(c!==CR)return;index++;break}else if(index-1===boundary.length-2){if(flags&F.LAST_BOUNDARY&&c===HYPHEN)state=S.END,flags=0;else if(!(flags&F.LAST_BOUNDARY)&&c===LF)index=0,callback("onPartBegin"),state=S.HEADER_FIELD_START;else return;break}c!==boundary[index+2]&&(index=-2),c===boundary[index+2]&&index++;break;case S.HEADER_FIELD_START:state=S.HEADER_FIELD,mark("onHeaderField"),index=0;case S.HEADER_FIELD:if(c===CR){clear("onHeaderField"),state=S.HEADERS_ALMOST_DONE;break}if(index++,c===HYPHEN)break;if(c===COLON){if(index===1)return;dataCallback("onHeaderField",!0),state=S.HEADER_VALUE_START;break}if(cl=lower(c),cl<A||cl>Z)return;break;case S.HEADER_VALUE_START:if(c===SPACE)break;mark("onHeaderValue"),state=S.HEADER_VALUE;case S.HEADER_VALUE:c===CR&&(dataCallback("onHeaderValue",!0),callback("onHeaderEnd"),state=S.HEADER_VALUE_ALMOST_DONE);break;case S.HEADER_VALUE_ALMOST_DONE:if(c!==LF)return;state=S.HEADER_FIELD_START;break;case S.HEADERS_ALMOST_DONE:if(c!==LF)return;callback("onHeadersEnd"),state=S.PART_DATA_START;break;case S.PART_DATA_START:state=S.PART_DATA,mark("onPartData");case S.PART_DATA:if(previousIndex=index,index===0){for(i2+=boundaryEnd;i2<bufferLength&&!(data[i2]in boundaryChars);)i2+=boundaryLength;i2-=boundaryEnd,c=data[i2]}if(index<boundary.length)boundary[index]===c?(index===0&&dataCallback("onPartData",!0),index++):index=0;else if(index===boundary.length)index++,c===CR?flags|=F.PART_BOUNDARY:c===HYPHEN?flags|=F.LAST_BOUNDARY:index=0;else if(index-1===boundary.length)if(flags&F.PART_BOUNDARY){if(index=0,c===LF){flags&=~F.PART_BOUNDARY,callback("onPartEnd"),callback("onPartBegin"),state=S.HEADER_FIELD_START;break}}else flags&F.LAST_BOUNDARY&&c===HYPHEN?(callback("onPartEnd"),state=S.END,flags=0):index=0;if(index>0)lookbehind[index-1]=c;else if(previousIndex>0){let _lookbehind=new Uint8Array(lookbehind.buffer,lookbehind.byteOffset,lookbehind.byteLength);callback("onPartData",0,previousIndex,_lookbehind),previousIndex=0,mark("onPartData"),i2--}break;case S.END:break;default:throw new Error(`Unexpected state entered: ${state}`)}dataCallback("onHeaderField"),dataCallback("onHeaderValue"),dataCallback("onPartData"),this.index=index,this.state=state,this.flags=flags}end(){if(this.state===S.HEADER_FIELD_START&&this.index===0||this.state===S.PART_DATA&&this.index===this.boundary.length)this.onPartEnd();else if(this.state!==S.END)throw new Error("MultipartParser.end(): stream ended unexpectedly")}}}});var src_exports={};__export(src_exports,{addToGlobalContext:()=>addToGlobalContext,computeStorybookMetadata:()=>computeStorybookMetadata,getPrecedingUpgrade:()=>getPrecedingUpgrade,getStorybookMetadata:()=>getStorybookMetadata,metaFrameworks:()=>metaFrameworks,oneWayHash:()=>oneWayHash,sanitizeAddonName:()=>sanitizeAddonName,telemetry:()=>telemetry});module.exports=__toCommonJS(src_exports);var import_client_logger=require("@storybook/client-logger");var import_read_pkg_up=__toESM(require("read-pkg-up")),import_detect_package_manager=require("detect-package-manager"),import_core_common3=require("@storybook/core-common"),import_csf_tools=require("@storybook/csf-tools");var fs=__toESM(require("fs-extra")),import_path=__toESM(require("path")),getActualPackageVersions=async packages=>{let packageNames=Object.keys(packages);return Promise.all(packageNames.map(getActualPackageVersion))},getActualPackageVersion=async packageName=>{try{let packageJson=await getActualPackageJson(packageName);return{name:packageName,version:packageJson.version}}catch{return{name:packageName,version:null}}},getActualPackageJson=async packageName=>{let resolvedPackageJson=require.resolve(import_path.default.join(packageName,"package.json"),{paths:[process.cwd()]});return await fs.readJson(resolvedPackageJson)};var import_fs_extra=__toESM(require("fs-extra")),import_path2=__toESM(require("path")),import_core_common=require("@storybook/core-common"),monorepoConfigs={Nx:"nx.json",Turborepo:"turbo.json",Lerna:"lerna.json",Rush:"rush.json",Lage:"lage.config.json"},getMonorepoType=()=>{let projectRootPath=(0,import_core_common.getProjectRoot)();if(!projectRootPath)return;let monorepoType=Object.keys(monorepoConfigs).find(monorepo=>{let configFile=import_path2.default.join(projectRootPath,monorepoConfigs[monorepo]);return import_fs_extra.default.existsSync(configFile)});if(monorepoType)return monorepoType;if(!import_fs_extra.default.existsSync(import_path2.default.join(projectRootPath,"package.json")))return;if(import_fs_extra.default.readJsonSync(import_path2.default.join(projectRootPath,"package.json"))?.workspaces)return"Workspaces"};var import_path3=__toESM(require("path"));function regexpEscape(str){return str.replace(/[-[/{}()*+?.\\^$|]/g,"\\$&")}function removeAnsiEscapeCodes(input=""){return input.replace(/\u001B\[[0-9;]*m/g,"")}function cleanPaths(str,separator=import_path3.default.sep){if(!str)return str;let stack=process.cwd().split(separator);for(;stack.length>1;){let currentPath=stack.join(separator),currentRegex=new RegExp(regexpEscape(currentPath),"gi");str=str.replace(currentRegex,"$SNIP");let currentPath2=stack.join(separator+separator),currentRegex2=new RegExp(regexpEscape(currentPath2),"gi");str=str.replace(currentRegex2,"$SNIP"),stack.pop()}return str}function sanitizeError(error,pathSeparator=import_path3.default.sep){try{error={...JSON.parse(JSON.stringify(error)),message:removeAnsiEscapeCodes(error.message),stack:removeAnsiEscapeCodes(error.stack),cause:error.cause,name:error.name};let errorString=cleanPaths(JSON.stringify(error),pathSeparator);return JSON.parse(errorString)}catch(err){return`Sanitization error: ${err?.message}`}}var import_path4=__toESM(require("path")),import_core_common2=require("@storybook/core-common");var knownRenderers=["html","react","svelte","vue3","preact","server","vue","web-components","angular","ember"],knownBuilders=["builder-webpack5","builder-vite"];function findMatchingPackage(packageJson,suffixes){let{name="",version,dependencies,devDependencies,peerDependencies}=packageJson,allDependencies={[name]:version,...dependencies,...devDependencies,...peerDependencies};return suffixes.map(suffix=>`@storybook/${suffix}`).find(pkg=>allDependencies[pkg])}var getFrameworkPackageName=packageNameOrPath=>{let normalizedPath=import_path4.default.normalize(packageNameOrPath).replace(new RegExp(/\\/,"g"),"/");return Object.keys(import_core_common2.frameworkPackages).find(pkg=>normalizedPath.endsWith(pkg))||cleanPaths(packageNameOrPath).replace(/.*node_modules[\\/]/,"")};async function getFrameworkInfo(mainConfig){if(!mainConfig?.framework)return{};let rawName=typeof mainConfig.framework=="string"?mainConfig.framework:mainConfig.framework?.name;if(!rawName)return{};let frameworkPackageJson=await getActualPackageJson(rawName);if(!frameworkPackageJson)return{};let builder=findMatchingPackage(frameworkPackageJson,knownBuilders),renderer=findMatchingPackage(frameworkPackageJson,knownRenderers),sanitizedFrameworkName=getFrameworkPackageName(rawName),frameworkOptions=typeof mainConfig.framework=="object"?mainConfig.framework.options:{};return{framework:{name:sanitizedFrameworkName,options:frameworkOptions},builder,renderer}}function getChromaticVersionSpecifier(packageJson){let dependency=packageJson.dependencies?.chromatic||packageJson.devDependencies?.chromatic||packageJson.peerDependencies?.chromatic;return dependency||(packageJson.scripts&&Object.values(packageJson.scripts).find(s2=>s2?.match(/chromatic/))?"latest":void 0)}var metaFrameworks={next:"Next","react-scripts":"CRA",gatsby:"Gatsby","@nuxtjs/storybook":"nuxt","@nrwl/storybook":"nx","@vue/cli-service":"vue-cli","@sveltejs/kit":"sveltekit"},sanitizeAddonName=name=>cleanPaths(name).replace(/\/dist\/.*/,"").replace(/\.[mc]?[tj]?s[x]?$/,"").replace(/\/register$/,"").replace(/\/manager$/,"").replace(/\/preset$/,""),computeStorybookMetadata=async({packageJson,mainConfig})=>{let metadata={generatedAt:new Date().getTime(),hasCustomBabel:!1,hasCustomWebpack:!1,hasStaticDirs:!1,hasStorybookEslint:!1,refCount:0},allDependencies={...packageJson?.dependencies,...packageJson?.devDependencies,...packageJson?.peerDependencies},metaFramework=Object.keys(allDependencies).find(dep=>!!metaFrameworks[dep]);if(metaFramework){let{version}=await getActualPackageVersion(metaFramework);metadata.metaFramework={name:metaFrameworks[metaFramework],packageName:metaFramework,version}}let monorepoType=getMonorepoType();monorepoType&&(metadata.monorepo=monorepoType);try{let packageManagerType=await(0,import_detect_package_manager.detect)({cwd:(0,import_core_common3.getProjectRoot)()}),packageManagerVerson=await(0,import_detect_package_manager.getNpmVersion)(packageManagerType);metadata.packageManager={type:packageManagerType,version:packageManagerVerson}}catch{}metadata.hasCustomBabel=!!mainConfig.babel,metadata.hasCustomWebpack=!!mainConfig.webpackFinal,metadata.hasStaticDirs=!!mainConfig.staticDirs,typeof mainConfig.typescript=="object"&&(metadata.typescriptOptions=mainConfig.typescript);let frameworkInfo=await getFrameworkInfo(mainConfig);typeof mainConfig.refs=="object"&&(metadata.refCount=Object.keys(mainConfig.refs).length),typeof mainConfig.features=="object"&&(metadata.features=mainConfig.features);let addons={};mainConfig.addons&&mainConfig.addons.forEach(addon=>{let addonName,options;typeof addon=="string"?addonName=sanitizeAddonName(addon):(addon.name.includes("addon-essentials")&&(options=addon.options),addonName=sanitizeAddonName(addon.name)),addons[addonName]={options,version:void 0}});let chromaticVersionSpecifier=getChromaticVersionSpecifier(packageJson);chromaticVersionSpecifier&&(addons.chromatic={version:void 0,versionSpecifier:chromaticVersionSpecifier,options:void 0}),(await getActualPackageVersions(addons)).forEach(({name,version})=>{addons[name].version=version});let addonNames=Object.keys(addons),storybookPackages=Object.keys(allDependencies).filter(dep=>dep.includes("storybook")&&!addonNames.includes(dep)).reduce((acc,dep)=>({...acc,[dep]:{version:void 0}}),{});(await getActualPackageVersions(storybookPackages)).forEach(({name,version})=>{storybookPackages[name].version=version});let language=allDependencies.typescript?"typescript":"javascript",hasStorybookEslint=!!allDependencies["eslint-plugin-storybook"],storybookInfo=(0,import_core_common3.getStorybookInfo)(packageJson);try{let{previewConfig}=storybookInfo;if(previewConfig){let config=await(0,import_csf_tools.readConfig)(previewConfig),usesGlobals=!!(config.getFieldNode(["globals"])||config.getFieldNode(["globalTypes"]));metadata.preview={...metadata.preview,usesGlobals}}}catch{}let storybookVersion=storybookPackages[storybookInfo.frameworkPackage]?.version;return{...metadata,...frameworkInfo,storybookVersion,storybookVersionSpecifier:storybookInfo.version,language,storybookPackages,addons,hasStorybookEslint}},cachedMetadata,getStorybookMetadata=async _configDir=>{if(cachedMetadata)return cachedMetadata;let{packageJson={}}=import_read_pkg_up.default.sync({cwd:process.cwd(),normalize:!1})||{},configDir=(_configDir||(0,import_core_common3.getStorybookConfiguration)(packageJson?.scripts?.storybook||"","-c","--config-dir"))??".storybook",mainConfig=await(0,import_core_common3.loadMainConfig)({configDir});return cachedMetadata=await computeStorybookMetadata({mainConfig,packageJson}),cachedMetadata};var os=__toESM(require("os"));var import_node_http2=__toESM(require("http"),1),import_node_https=__toESM(require("https"),1),import_node_zlib=__toESM(require("zlib"),1),import_node_stream2=__toESM(require("stream"),1),import_node_buffer2=require("buffer");function dataUriToBuffer(uri){if(!/^data:/i.test(uri))throw new TypeError('`uri` does not appear to be a Data URI (must begin with "data:")');uri=uri.replace(/\r?\n/g,"");let firstComma=uri.indexOf(",");if(firstComma===-1||firstComma<=4)throw new TypeError("malformed data: URI");let meta=uri.substring(5,firstComma).split(";"),charset="",base64=!1,type=meta[0]||"text/plain",typeFull=type;for(let i2=1;i2<meta.length;i2++)meta[i2]==="base64"?base64=!0:meta[i2]&&(typeFull+=`;${meta[i2]}`,meta[i2].indexOf("charset=")===0&&(charset=meta[i2].substring(8)));!meta[0]&&!charset.length&&(typeFull+=";charset=US-ASCII",charset="US-ASCII");let encoding=base64?"base64":"ascii",data=unescape(uri.substring(firstComma+1)),buffer=Buffer.from(data,encoding);return buffer.type=type,buffer.typeFull=typeFull,buffer.charset=charset,buffer}var dist_default=dataUriToBuffer;var import_node_stream=__toESM(require("stream"),1),import_node_util=require("util"),import_node_buffer=require("buffer");init_fetch_blob();init_esm_min();var FetchBaseError=class extends Error{constructor(message,type){super(message),Error.captureStackTrace(this,this.constructor),this.type=type}get name(){return this.constructor.name}get[Symbol.toStringTag](){return this.constructor.name}};var FetchError=class extends FetchBaseError{constructor(message,type,systemError){super(message,type),systemError&&(this.code=this.errno=systemError.code,this.erroredSysCall=systemError.syscall)}};var NAME=Symbol.toStringTag,isURLSearchParameters=object=>typeof object=="object"&&typeof object.append=="function"&&typeof object.delete=="function"&&typeof object.get=="function"&&typeof object.getAll=="function"&&typeof object.has=="function"&&typeof object.set=="function"&&typeof object.sort=="function"&&object[NAME]==="URLSearchParams",isBlob=object=>object&&typeof object=="object"&&typeof object.arrayBuffer=="function"&&typeof object.type=="string"&&typeof object.stream=="function"&&typeof object.constructor=="function"&&/^(Blob|File)$/.test(object[NAME]),isAbortSignal=object=>typeof object=="object"&&(object[NAME]==="AbortSignal"||object[NAME]==="EventTarget"),isDomainOrSubdomain=(destination,original)=>{let orig=new URL(original).hostname,dest=new URL(destination).hostname;return orig===dest||orig.endsWith(`.${dest}`)},isSameProtocol=(destination,original)=>{let orig=new URL(original).protocol,dest=new URL(destination).protocol;return orig===dest};var pipeline=(0,import_node_util.promisify)(import_node_stream.default.pipeline),INTERNALS=Symbol("Body internals"),Body=class{constructor(body,{size=0}={}){let boundary=null;body===null?body=null:isURLSearchParameters(body)?body=import_node_buffer.Buffer.from(body.toString()):isBlob(body)||import_node_buffer.Buffer.isBuffer(body)||(import_node_util.types.isAnyArrayBuffer(body)?body=import_node_buffer.Buffer.from(body):ArrayBuffer.isView(body)?body=import_node_buffer.Buffer.from(body.buffer,body.byteOffset,body.byteLength):body instanceof import_node_stream.default||(body instanceof FormData?(body=formDataToBlob(body),boundary=body.type.split("=")[1]):body=import_node_buffer.Buffer.from(String(body))));let stream=body;import_node_buffer.Buffer.isBuffer(body)?stream=import_node_stream.default.Readable.from(body):isBlob(body)&&(stream=import_node_stream.default.Readable.from(body.stream())),this[INTERNALS]={body,stream,boundary,disturbed:!1,error:null},this.size=size,body instanceof import_node_stream.default&&body.on("error",error_=>{let error=error_ instanceof FetchBaseError?error_:new FetchError(`Invalid response body while trying to fetch ${this.url}: ${error_.message}`,"system",error_);this[INTERNALS].error=error})}get body(){return this[INTERNALS].stream}get bodyUsed(){return this[INTERNALS].disturbed}async arrayBuffer(){let{buffer,byteOffset,byteLength}=await consumeBody(this);return buffer.slice(byteOffset,byteOffset+byteLength)}async formData(){let ct=this.headers.get("content-type");if(ct.startsWith("application/x-www-form-urlencoded")){let formData=new FormData,parameters=new URLSearchParams(await this.text());for(let[name,value]of parameters)formData.append(name,value);return formData}let{toFormData:toFormData2}=await Promise.resolve().then(()=>(init_multipart_parser(),multipart_parser_exports));return toFormData2(this.body,ct)}async blob(){let ct=this.headers&&this.headers.get("content-type")||this[INTERNALS].body&&this[INTERNALS].body.type||"",buf=await this.arrayBuffer();return new fetch_blob_default([buf],{type:ct})}async json(){let text=await this.text();return JSON.parse(text)}async text(){let buffer=await consumeBody(this);return new TextDecoder().decode(buffer)}buffer(){return consumeBody(this)}};Body.prototype.buffer=(0,import_node_util.deprecate)(Body.prototype.buffer,"Please use 'response.arrayBuffer()' instead of 'response.buffer()'","node-fetch#buffer");Object.defineProperties(Body.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0},data:{get:(0,import_node_util.deprecate)(()=>{},"data doesn't exist, use json(), text(), arrayBuffer(), or body instead","https://github.com/node-fetch/node-fetch/issues/1000 (response)")}});async function consumeBody(data){if(data[INTERNALS].disturbed)throw new TypeError(`body used already for: ${data.url}`);if(data[INTERNALS].disturbed=!0,data[INTERNALS].error)throw data[INTERNALS].error;let{body}=data;if(body===null)return import_node_buffer.Buffer.alloc(0);if(!(body instanceof import_node_stream.default))return import_node_buffer.Buffer.alloc(0);let accum=[],accumBytes=0;try{for await(let chunk of body){if(data.size>0&&accumBytes+chunk.length>data.size){let error=new FetchError(`content size at ${data.url} over limit: ${data.size}`,"max-size");throw body.destroy(error),error}accumBytes+=chunk.length,accum.push(chunk)}}catch(error){throw error instanceof FetchBaseError?error:new FetchError(`Invalid response body while trying to fetch ${data.url}: ${error.message}`,"system",error)}if(body.readableEnded===!0||body._readableState.ended===!0)try{return accum.every(c=>typeof c=="string")?import_node_buffer.Buffer.from(accum.join("")):import_node_buffer.Buffer.concat(accum,accumBytes)}catch(error){throw new FetchError(`Could not create Buffer from response body for ${data.url}: ${error.message}`,"system",error)}else throw new FetchError(`Premature close of server response while trying to fetch ${data.url}`)}var clone=(instance,highWaterMark)=>{let p1,p2,{body}=instance[INTERNALS];if(instance.bodyUsed)throw new Error("cannot clone body after it is used");return body instanceof import_node_stream.default&&typeof body.getBoundary!="function"&&(p1=new import_node_stream.PassThrough({highWaterMark}),p2=new import_node_stream.PassThrough({highWaterMark}),body.pipe(p1),body.pipe(p2),instance[INTERNALS].stream=p1,body=p2),body},getNonSpecFormDataBoundary=(0,import_node_util.deprecate)(body=>body.getBoundary(),"form-data doesn't follow the spec and requires special treatment. Use alternative package","https://github.com/node-fetch/node-fetch/issues/1167"),extractContentType=(body,request)=>body===null?null:typeof body=="string"?"text/plain;charset=UTF-8":isURLSearchParameters(body)?"application/x-www-form-urlencoded;charset=UTF-8":isBlob(body)?body.type||null:import_node_buffer.Buffer.isBuffer(body)||import_node_util.types.isAnyArrayBuffer(body)||ArrayBuffer.isView(body)?null:body instanceof FormData?`multipart/form-data; boundary=${request[INTERNALS].boundary}`:body&&typeof body.getBoundary=="function"?`multipart/form-data;boundary=${getNonSpecFormDataBoundary(body)}`:body instanceof import_node_stream.default?null:"text/plain;charset=UTF-8",getTotalBytes=request=>{let{body}=request[INTERNALS];return body===null?0:isBlob(body)?body.size:import_node_buffer.Buffer.isBuffer(body)?body.length:body&&typeof body.getLengthSync=="function"&&body.hasKnownLength&&body.hasKnownLength()?body.getLengthSync():null},writeToStream=async(dest,{body})=>{body===null?dest.end():await pipeline(body,dest)};var import_node_util2=require("util"),import_node_http=__toESM(require("http"),1),validateHeaderName=typeof import_node_http.default.validateHeaderName=="function"?import_node_http.default.validateHeaderName:name=>{if(!/^[\^`\-\w!#$%&'*+.|~]+$/.test(name)){let error=new TypeError(`Header name must be a valid HTTP token [${name}]`);throw Object.defineProperty(error,"code",{value:"ERR_INVALID_HTTP_TOKEN"}),error}},validateHeaderValue=typeof import_node_http.default.validateHeaderValue=="function"?import_node_http.default.validateHeaderValue:(name,value)=>{if(/[^\t\u0020-\u007E\u0080-\u00FF]/.test(value)){let error=new TypeError(`Invalid character in header content ["${name}"]`);throw Object.defineProperty(error,"code",{value:"ERR_INVALID_CHAR"}),error}},Headers=class _Headers extends URLSearchParams{constructor(init){let result=[];if(init instanceof _Headers){let raw=init.raw();for(let[name,values]of Object.entries(raw))result.push(...values.map(value=>[name,value]))}else if(init!=null)if(typeof init=="object"&&!import_node_util2.types.isBoxedPrimitive(init)){let method=init[Symbol.iterator];if(method==null)result.push(...Object.entries(init));else{if(typeof method!="function")throw new TypeError("Header pairs must be iterable");result=[...init].map(pair=>{if(typeof pair!="object"||import_node_util2.types.isBoxedPrimitive(pair))throw new TypeError("Each header pair must be an iterable object");return[...pair]}).map(pair=>{if(pair.length!==2)throw new TypeError("Each header pair must be a name/value tuple");return[...pair]})}}else throw new TypeError("Failed to construct 'Headers': The provided value is not of type '(sequence<sequence<ByteString>> or record<ByteString, ByteString>)");return result=result.length>0?result.map(([name,value])=>(validateHeaderName(name),validateHeaderValue(name,String(value)),[String(name).toLowerCase(),String(value)])):void 0,super(result),new Proxy(this,{get(target,p,receiver){switch(p){case"append":case"set":return(name,value)=>(validateHeaderName(name),validateHeaderValue(name,String(value)),URLSearchParams.prototype[p].call(target,String(name).toLowerCase(),String(value)));case"delete":case"has":case"getAll":return name=>(validateHeaderName(name),URLSearchParams.prototype[p].call(target,String(name).toLowerCase()));case"keys":return()=>(target.sort(),new Set(URLSearchParams.prototype.keys.call(target)).keys());default:return Reflect.get(target,p,receiver)}}})}get[Symbol.toStringTag](){return this.constructor.name}toString(){return Object.prototype.toString.call(this)}get(name){let values=this.getAll(name);if(values.length===0)return null;let value=values.join(", ");return/^content-encoding$/i.test(name)&&(value=value.toLowerCase()),value}forEach(callback,thisArg=void 0){for(let name of this.keys())Reflect.apply(callback,thisArg,[this.get(name),name,this])}*values(){for(let name of this.keys())yield this.get(name)}*entries(){for(let name of this.keys())yield[name,this.get(name)]}[Symbol.iterator](){return this.entries()}raw(){return[...this.keys()].reduce((result,key)=>(result[key]=this.getAll(key),result),{})}[Symbol.for("nodejs.util.inspect.custom")](){return[...this.keys()].reduce((result,key)=>{let values=this.getAll(key);return key==="host"?result[key]=values[0]:result[key]=values.length>1?values:values[0],result},{})}};Object.defineProperties(Headers.prototype,["get","entries","forEach","values"].reduce((result,property)=>(result[property]={enumerable:!0},result),{}));function fromRawHeaders(headers=[]){return new Headers(headers.reduce((result,value,index,array)=>(index%2===0&&result.push(array.slice(index,index+2)),result),[]).filter(([name,value])=>{try{return validateHeaderName(name),validateHeaderValue(name,String(value)),!0}catch{return!1}}))}var redirectStatus=new Set([301,302,303,307,308]),isRedirect=code=>redirectStatus.has(code);var INTERNALS2=Symbol("Response internals"),Response=class _Response extends Body{constructor(body=null,options={}){super(body,options);let status=options.status!=null?options.status:200,headers=new Headers(options.headers);if(body!==null&&!headers.has("Content-Type")){let contentType=extractContentType(body,this);contentType&&headers.append("Content-Type",contentType)}this[INTERNALS2]={type:"default",url:options.url,status,statusText:options.statusText||"",headers,counter:options.counter,highWaterMark:options.highWaterMark}}get type(){return this[INTERNALS2].type}get url(){return this[INTERNALS2].url||""}get status(){return this[INTERNALS2].status}get ok(){return this[INTERNALS2].status>=200&&this[INTERNALS2].status<300}get redirected(){return this[INTERNALS2].counter>0}get statusText(){return this[INTERNALS2].statusText}get headers(){return this[INTERNALS2].headers}get highWaterMark(){return this[INTERNALS2].highWaterMark}clone(){return new _Response(clone(this,this.highWaterMark),{type:this.type,url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected,size:this.size,highWaterMark:this.highWaterMark})}static redirect(url,status=302){if(!isRedirect(status))throw new RangeError('Failed to execute "redirect" on "response": Invalid status code');return new _Response(null,{headers:{location:new URL(url).toString()},status})}static error(){let response=new _Response(null,{status:0,statusText:""});return response[INTERNALS2].type="error",response}static json(data=void 0,init={}){let body=JSON.stringify(data);if(body===void 0)throw new TypeError("data is not JSON serializable");let headers=new Headers(init&&init.headers);return headers.has("content-type")||headers.set("content-type","application/json"),new _Response(body,{...init,headers})}get[Symbol.toStringTag](){return"Response"}};Object.defineProperties(Response.prototype,{type:{enumerable:!0},url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});var import_node_url=require("url"),import_node_util3=require("util");var getSearch=parsedURL=>{if(parsedURL.search)return parsedURL.search;let lastOffset=parsedURL.href.length-1,hash=parsedURL.hash||(parsedURL.href[lastOffset]==="#"?"#":"");return parsedURL.href[lastOffset-hash.length]==="?"?"?":""};var import_node_net=require("net");function stripURLForUseAsAReferrer(url,originOnly=!1){return url==null||(url=new URL(url),/^(about|blob|data):$/.test(url.protocol))?"no-referrer":(url.username="",url.password="",url.hash="",originOnly&&(url.pathname="",url.search=""),url)}var ReferrerPolicy=new Set(["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"]),DEFAULT_REFERRER_POLICY="strict-origin-when-cross-origin";function validateReferrerPolicy(referrerPolicy){if(!ReferrerPolicy.has(referrerPolicy))throw new TypeError(`Invalid referrerPolicy: ${referrerPolicy}`);return referrerPolicy}function isOriginPotentiallyTrustworthy(url){if(/^(http|ws)s:$/.test(url.protocol))return!0;let hostIp=url.host.replace(/(^\[)|(]$)/g,""),hostIPVersion=(0,import_node_net.isIP)(hostIp);return hostIPVersion===4&&/^127\./.test(hostIp)||hostIPVersion===6&&/^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(hostIp)?!0:url.host==="localhost"||url.host.endsWith(".localhost")?!1:url.protocol==="file:"}function isUrlPotentiallyTrustworthy(url){return/^about:(blank|srcdoc)$/.test(url)||url.protocol==="data:"||/^(blob|filesystem):$/.test(url.protocol)?!0:isOriginPotentiallyTrustworthy(url)}function determineRequestsReferrer(request,{referrerURLCallback,referrerOriginCallback}={}){if(request.referrer==="no-referrer"||request.referrerPolicy==="")return null;let policy=request.referrerPolicy;if(request.referrer==="about:client")return"no-referrer";let referrerSource=request.referrer,referrerURL=stripURLForUseAsAReferrer(referrerSource),referrerOrigin=stripURLForUseAsAReferrer(referrerSource,!0);referrerURL.toString().length>4096&&(referrerURL=referrerOrigin),referrerURLCallback&&(referrerURL=referrerURLCallback(referrerURL)),referrerOriginCallback&&(referrerOrigin=referrerOriginCallback(referrerOrigin));let currentURL=new URL(request.url);switch(policy){case"no-referrer":return"no-referrer";case"origin":return referrerOrigin;case"unsafe-url":return referrerURL;case"strict-origin":return isUrlPotentiallyTrustworthy(referrerURL)&&!isUrlPotentiallyTrustworthy(currentURL)?"no-referrer":referrerOrigin.toString();case"strict-origin-when-cross-origin":return referrerURL.origin===currentURL.origin?referrerURL:isUrlPotentiallyTrustworthy(referrerURL)&&!isUrlPotentiallyTrustworthy(currentURL)?"no-referrer":referrerOrigin;case"same-origin":return referrerURL.origin===currentURL.origin?referrerURL:"no-referrer";case"origin-when-cross-origin":return referrerURL.origin===currentURL.origin?referrerURL:referrerOrigin;case"no-referrer-when-downgrade":return isUrlPotentiallyTrustworthy(referrerURL)&&!isUrlPotentiallyTrustworthy(currentURL)?"no-referrer":referrerURL;default:throw new TypeError(`Invalid referrerPolicy: ${policy}`)}}function parseReferrerPolicyFromHeader(headers){let policyTokens=(headers.get("referrer-policy")||"").split(/[,\s]+/),policy="";for(let token of policyTokens)token&&ReferrerPolicy.has(token)&&(policy=token);return policy}var INTERNALS3=Symbol("Request internals"),isRequest=object=>typeof object=="object"&&typeof object[INTERNALS3]=="object",doBadDataWarn=(0,import_node_util3.deprecate)(()=>{},".data is not a valid RequestInit property, use .body instead","https://github.com/node-fetch/node-fetch/issues/1000 (request)"),Request=class _Request extends Body{constructor(input,init={}){let parsedURL;if(isRequest(input)?parsedURL=new URL(input.url):(parsedURL=new URL(input),input={}),parsedURL.username!==""||parsedURL.password!=="")throw new TypeError(`${parsedURL} is an url with embedded credentials.`);let method=init.method||input.method||"GET";if(/^(delete|get|head|options|post|put)$/i.test(method)&&(method=method.toUpperCase()),!isRequest(init)&&"data"in init&&doBadDataWarn(),(init.body!=null||isRequest(input)&&input.body!==null)&&(method==="GET"||method==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let inputBody=init.body?init.body:isRequest(input)&&input.body!==null?clone(input):null;super(inputBody,{size:init.size||input.size||0});let headers=new Headers(init.headers||input.headers||{});if(inputBody!==null&&!headers.has("Content-Type")){let contentType=extractContentType(inputBody,this);contentType&&headers.set("Content-Type",contentType)}let signal=isRequest(input)?input.signal:null;if("signal"in init&&(signal=init.signal),signal!=null&&!isAbortSignal(signal))throw new TypeError("Expected signal to be an instanceof AbortSignal or EventTarget");let referrer=init.referrer==null?input.referrer:init.referrer;if(referrer==="")referrer="no-referrer";else if(referrer){let parsedReferrer=new URL(referrer);referrer=/^about:(\/\/)?client$/.test(parsedReferrer)?"client":parsedReferrer}else referrer=void 0;this[INTERNALS3]={method,redirect:init.redirect||input.redirect||"follow",headers,parsedURL,signal,referrer},this.follow=init.follow===void 0?input.follow===void 0?20:input.follow:init.follow,this.compress=init.compress===void 0?input.compress===void 0?!0:input.compress:init.compress,this.counter=init.counter||input.counter||0,this.agent=init.agent||input.agent,this.highWaterMark=init.highWaterMark||input.highWaterMark||16384,this.insecureHTTPParser=init.insecureHTTPParser||input.insecureHTTPParser||!1,this.referrerPolicy=init.referrerPolicy||input.referrerPolicy||""}get method(){return this[INTERNALS3].method}get url(){return(0,import_node_url.format)(this[INTERNALS3].parsedURL)}get headers(){return this[INTERNALS3].headers}get redirect(){return this[INTERNALS3].redirect}get signal(){return this[INTERNALS3].signal}get referrer(){if(this[INTERNALS3].referrer==="no-referrer")return"";if(this[INTERNALS3].referrer==="client")return"about:client";if(this[INTERNALS3].referrer)return this[INTERNALS3].referrer.toString()}get referrerPolicy(){return this[INTERNALS3].referrerPolicy}set referrerPolicy(referrerPolicy){this[INTERNALS3].referrerPolicy=validateReferrerPolicy(referrerPolicy)}clone(){return new _Request(this)}get[Symbol.toStringTag](){return"Request"}};Object.defineProperties(Request.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0},referrer:{enumerable:!0},referrerPolicy:{enumerable:!0}});var getNodeRequestOptions=request=>{let{parsedURL}=request[INTERNALS3],headers=new Headers(request[INTERNALS3].headers);headers.has("Accept")||headers.set("Accept","*/*");let contentLengthValue=null;if(request.body===null&&/^(post|put)$/i.test(request.method)&&(contentLengthValue="0"),request.body!==null){let totalBytes=getTotalBytes(request);typeof totalBytes=="number"&&!Number.isNaN(totalBytes)&&(contentLengthValue=String(totalBytes))}contentLengthValue&&headers.set("Content-Length",contentLengthValue),request.referrerPolicy===""&&(request.referrerPolicy=DEFAULT_REFERRER_POLICY),request.referrer&&request.referrer!=="no-referrer"?request[INTERNALS3].referrer=determineRequestsReferrer(request):request[INTERNALS3].referrer="no-referrer",request[INTERNALS3].referrer instanceof URL&&headers.set("Referer",request.referrer),headers.has("User-Agent")||headers.set("User-Agent","node-fetch"),request.compress&&!headers.has("Accept-Encoding")&&headers.set("Accept-Encoding","gzip, deflate, br");let{agent}=request;typeof agent=="function"&&(agent=agent(parsedURL));let search=getSearch(parsedURL),options={path:parsedURL.pathname+search,method:request.method,headers:headers[Symbol.for("nodejs.util.inspect.custom")](),insecureHTTPParser:request.insecureHTTPParser,agent};return{parsedURL,options}};var AbortError=class extends FetchBaseError{constructor(message,type="aborted"){super(message,type)}};init_esm_min();init_from();var supportedSchemas=new Set(["data:","http:","https:"]);async function fetch(url,options_){return new Promise((resolve,reject)=>{let request=new Request(url,options_),{parsedURL,options}=getNodeRequestOptions(request);if(!supportedSchemas.has(parsedURL.protocol))throw new TypeError(`node-fetch cannot load ${url}. URL scheme "${parsedURL.protocol.replace(/:$/,"")}" is not supported.`);if(parsedURL.protocol==="data:"){let data=dist_default(request.url),response2=new Response(data,{headers:{"Content-Type":data.typeFull}});resolve(response2);return}let send=(parsedURL.protocol==="https:"?import_node_https.default:import_node_http2.default).request,{signal}=request,response=null,abort=()=>{let error=new AbortError("The operation was aborted.");reject(error),request.body&&request.body instanceof import_node_stream2.default.Readable&&request.body.destroy(error),!(!response||!response.body)&&response.body.emit("error",error)};if(signal&&signal.aborted){abort();return}let abortAndFinalize=()=>{abort(),finalize()},request_=send(parsedURL.toString(),options);signal&&signal.addEventListener("abort",abortAndFinalize);let finalize=()=>{request_.abort(),signal&&signal.removeEventListener("abort",abortAndFinalize)};request_.on("error",error=>{reject(new FetchError(`request to ${request.url} failed, reason: ${error.message}`,"system",error)),finalize()}),fixResponseChunkedTransferBadEnding(request_,error=>{response&&response.body&&response.body.destroy(error)}),process.version<"v14"&&request_.on("socket",s2=>{let endedWithEventsCount;s2.prependListener("end",()=>{endedWithEventsCount=s2._eventsCount}),s2.prependListener("close",hadError=>{if(response&&endedWithEventsCount<s2._eventsCount&&!hadError){let error=new Error("Premature close");error.code="ERR_STREAM_PREMATURE_CLOSE",response.body.emit("error",error)}})}),request_.on("response",response_=>{request_.setTimeout(0);let headers=fromRawHeaders(response_.rawHeaders);if(isRedirect(response_.statusCode)){let location=headers.get("Location"),locationURL=null;try{locationURL=location===null?null:new URL(location,request.url)}catch{if(request.redirect!=="manual"){reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`,"invalid-redirect")),finalize();return}}switch(request.redirect){case"error":reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`,"no-redirect")),finalize();return;case"manual":break;case"follow":{if(locationURL===null)break;if(request.counter>=request.follow){reject(new FetchError(`maximum redirect reached at: ${request.url}`,"max-redirect")),finalize();return}let requestOptions={headers:new Headers(request.headers),follow:request.follow,counter:request.counter+1,agent:request.agent,compress:request.compress,method:request.method,body:clone(request),signal:request.signal,size:request.size,referrer:request.referrer,referrerPolicy:request.referrerPolicy};if(!isDomainOrSubdomain(request.url,locationURL)||!isSameProtocol(request.url,locationURL))for(let name of["authorization","www-authenticate","cookie","cookie2"])requestOptions.headers.delete(name);if(response_.statusCode!==303&&request.body&&options_.body instanceof import_node_stream2.default.Readable){reject(new FetchError("Cannot follow redirect with body being a readable stream","unsupported-redirect")),finalize();return}(response_.statusCode===303||(response_.statusCode===301||response_.statusCode===302)&&request.method==="POST")&&(requestOptions.method="GET",requestOptions.body=void 0,requestOptions.headers.delete("content-length"));let responseReferrerPolicy=parseReferrerPolicyFromHeader(headers);responseReferrerPolicy&&(requestOptions.referrerPolicy=responseReferrerPolicy),resolve(fetch(new Request(locationURL,requestOptions))),finalize();return}default:return reject(new TypeError(`Redirect option '${request.redirect}' is not a valid value of RequestRedirect`))}}signal&&response_.once("end",()=>{signal.removeEventListener("abort",abortAndFinalize)});let body=(0,import_node_stream2.pipeline)(response_,new import_node_stream2.PassThrough,error=>{error&&reject(error)});process.version<"v12.10"&&response_.on("aborted",abortAndFinalize);let responseOptions={url:request.url,status:response_.statusCode,statusText:response_.statusMessage,headers,size:request.size,counter:request.counter,highWaterMark:request.highWaterMark},codings=headers.get("Content-Encoding");if(!request.compress||request.method==="HEAD"||codings===null||response_.statusCode===204||response_.statusCode===304){response=new Response(body,responseOptions),resolve(response);return}let zlibOptions={flush:import_node_zlib.default.Z_SYNC_FLUSH,finishFlush:import_node_zlib.default.Z_SYNC_FLUSH};if(codings==="gzip"||codings==="x-gzip"){body=(0,import_node_stream2.pipeline)(body,import_node_zlib.default.createGunzip(zlibOptions),error=>{error&&reject(error)}),response=new Response(body,responseOptions),resolve(response);return}if(codings==="deflate"||codings==="x-deflate"){let raw=(0,import_node_stream2.pipeline)(response_,new import_node_stream2.PassThrough,error=>{error&&reject(error)});raw.once("data",chunk=>{(chunk[0]&15)===8?body=(0,import_node_stream2.pipeline)(body,import_node_zlib.default.createInflate(),error=>{error&&reject(error)}):body=(0,import_node_stream2.pipeline)(body,import_node_zlib.default.createInflateRaw(),error=>{error&&reject(error)}),response=new Response(body,responseOptions),resolve(response)}),raw.once("end",()=>{response||(response=new Response(body,responseOptions),resolve(response))});return}if(codings==="br"){body=(0,import_node_stream2.pipeline)(body,import_node_zlib.default.createBrotliDecompress(),error=>{error&&reject(error)}),response=new Response(body,responseOptions),resolve(response);return}response=new Response(body,responseOptions),resolve(response)}),writeToStream(request_,request).catch(reject)})}function fixResponseChunkedTransferBadEnding(request,errorCallback){let LAST_CHUNK=import_node_buffer2.Buffer.from(`0\r
|
12
|
+
--`+boundary;let ui8a=new Uint8Array(boundary.length);for(let i2=0;i2<boundary.length;i2++)ui8a[i2]=boundary.charCodeAt(i2),this.boundaryChars[ui8a[i2]]=!0;this.boundary=ui8a,this.lookbehind=new Uint8Array(this.boundary.length+8),this.state=S.START_BOUNDARY}write(data){let i2=0,length_=data.length,previousIndex=this.index,{lookbehind,boundary,boundaryChars,index,state,flags}=this,boundaryLength=this.boundary.length,boundaryEnd=boundaryLength-1,bufferLength=data.length,c,cl,mark=name=>{this[name+"Mark"]=i2},clear=name=>{delete this[name+"Mark"]},callback=(callbackSymbol,start,end,ui8a)=>{(start===void 0||start!==end)&&this[callbackSymbol](ui8a&&ui8a.subarray(start,end))},dataCallback=(name,clear2)=>{let markSymbol=name+"Mark";markSymbol in this&&(clear2?(callback(name,this[markSymbol],i2,data),delete this[markSymbol]):(callback(name,this[markSymbol],data.length,data),this[markSymbol]=0))};for(i2=0;i2<length_;i2++)switch(c=data[i2],state){case S.START_BOUNDARY:if(index===boundary.length-2){if(c===HYPHEN)flags|=F.LAST_BOUNDARY;else if(c!==CR)return;index++;break}else if(index-1===boundary.length-2){if(flags&F.LAST_BOUNDARY&&c===HYPHEN)state=S.END,flags=0;else if(!(flags&F.LAST_BOUNDARY)&&c===LF)index=0,callback("onPartBegin"),state=S.HEADER_FIELD_START;else return;break}c!==boundary[index+2]&&(index=-2),c===boundary[index+2]&&index++;break;case S.HEADER_FIELD_START:state=S.HEADER_FIELD,mark("onHeaderField"),index=0;case S.HEADER_FIELD:if(c===CR){clear("onHeaderField"),state=S.HEADERS_ALMOST_DONE;break}if(index++,c===HYPHEN)break;if(c===COLON){if(index===1)return;dataCallback("onHeaderField",!0),state=S.HEADER_VALUE_START;break}if(cl=lower(c),cl<A||cl>Z)return;break;case S.HEADER_VALUE_START:if(c===SPACE)break;mark("onHeaderValue"),state=S.HEADER_VALUE;case S.HEADER_VALUE:c===CR&&(dataCallback("onHeaderValue",!0),callback("onHeaderEnd"),state=S.HEADER_VALUE_ALMOST_DONE);break;case S.HEADER_VALUE_ALMOST_DONE:if(c!==LF)return;state=S.HEADER_FIELD_START;break;case S.HEADERS_ALMOST_DONE:if(c!==LF)return;callback("onHeadersEnd"),state=S.PART_DATA_START;break;case S.PART_DATA_START:state=S.PART_DATA,mark("onPartData");case S.PART_DATA:if(previousIndex=index,index===0){for(i2+=boundaryEnd;i2<bufferLength&&!(data[i2]in boundaryChars);)i2+=boundaryLength;i2-=boundaryEnd,c=data[i2]}if(index<boundary.length)boundary[index]===c?(index===0&&dataCallback("onPartData",!0),index++):index=0;else if(index===boundary.length)index++,c===CR?flags|=F.PART_BOUNDARY:c===HYPHEN?flags|=F.LAST_BOUNDARY:index=0;else if(index-1===boundary.length)if(flags&F.PART_BOUNDARY){if(index=0,c===LF){flags&=~F.PART_BOUNDARY,callback("onPartEnd"),callback("onPartBegin"),state=S.HEADER_FIELD_START;break}}else flags&F.LAST_BOUNDARY&&c===HYPHEN?(callback("onPartEnd"),state=S.END,flags=0):index=0;if(index>0)lookbehind[index-1]=c;else if(previousIndex>0){let _lookbehind=new Uint8Array(lookbehind.buffer,lookbehind.byteOffset,lookbehind.byteLength);callback("onPartData",0,previousIndex,_lookbehind),previousIndex=0,mark("onPartData"),i2--}break;case S.END:break;default:throw new Error(`Unexpected state entered: ${state}`)}dataCallback("onHeaderField"),dataCallback("onHeaderValue"),dataCallback("onPartData"),this.index=index,this.state=state,this.flags=flags}end(){if(this.state===S.HEADER_FIELD_START&&this.index===0||this.state===S.PART_DATA&&this.index===this.boundary.length)this.onPartEnd();else if(this.state!==S.END)throw new Error("MultipartParser.end(): stream ended unexpectedly")}}}});var src_exports={};__export(src_exports,{addToGlobalContext:()=>addToGlobalContext,computeStorybookMetadata:()=>computeStorybookMetadata,getPrecedingUpgrade:()=>getPrecedingUpgrade,getStorybookMetadata:()=>getStorybookMetadata,metaFrameworks:()=>metaFrameworks,oneWayHash:()=>oneWayHash,sanitizeAddonName:()=>sanitizeAddonName,telemetry:()=>telemetry});module.exports=__toCommonJS(src_exports);var import_client_logger=require("@storybook/client-logger");var import_read_pkg_up=__toESM(require("read-pkg-up")),import_detect_package_manager=require("detect-package-manager"),import_core_common3=require("@storybook/core-common"),import_csf_tools=require("@storybook/csf-tools");var fs=__toESM(require("fs-extra")),import_path=__toESM(require("path")),getActualPackageVersions=async packages=>{let packageNames=Object.keys(packages);return Promise.all(packageNames.map(getActualPackageVersion))},getActualPackageVersion=async packageName=>{try{let packageJson=await getActualPackageJson(packageName);return{name:packageName,version:packageJson.version}}catch{return{name:packageName,version:null}}},getActualPackageJson=async packageName=>{let resolvedPackageJson=require.resolve(import_path.default.join(packageName,"package.json"),{paths:[process.cwd()]});return await fs.readJson(resolvedPackageJson)};var import_fs_extra=__toESM(require("fs-extra")),import_path2=__toESM(require("path")),import_core_common=require("@storybook/core-common"),monorepoConfigs={Nx:"nx.json",Turborepo:"turbo.json",Lerna:"lerna.json",Rush:"rush.json",Lage:"lage.config.json"},getMonorepoType=()=>{let projectRootPath=(0,import_core_common.getProjectRoot)();if(!projectRootPath)return;let monorepoType=Object.keys(monorepoConfigs).find(monorepo=>{let configFile=import_path2.default.join(projectRootPath,monorepoConfigs[monorepo]);return import_fs_extra.default.existsSync(configFile)});if(monorepoType)return monorepoType;if(!import_fs_extra.default.existsSync(import_path2.default.join(projectRootPath,"package.json")))return;if(import_fs_extra.default.readJsonSync(import_path2.default.join(projectRootPath,"package.json"))?.workspaces)return"Workspaces"};var import_path3=__toESM(require("path"));function regexpEscape(str){return str.replace(/[-[/{}()*+?.\\^$|]/g,"\\$&")}function removeAnsiEscapeCodes(input=""){return input.replace(/\u001B\[[0-9;]*m/g,"")}function cleanPaths(str,separator=import_path3.default.sep){if(!str)return str;let stack=process.cwd().split(separator);for(;stack.length>1;){let currentPath=stack.join(separator),currentRegex=new RegExp(regexpEscape(currentPath),"gi");str=str.replace(currentRegex,"$SNIP");let currentPath2=stack.join(separator+separator),currentRegex2=new RegExp(regexpEscape(currentPath2),"gi");str=str.replace(currentRegex2,"$SNIP"),stack.pop()}return str}function sanitizeError(error,pathSeparator=import_path3.default.sep){try{error={...JSON.parse(JSON.stringify(error)),message:removeAnsiEscapeCodes(error.message),stack:removeAnsiEscapeCodes(error.stack),cause:error.cause,name:error.name};let errorString=cleanPaths(JSON.stringify(error),pathSeparator);return JSON.parse(errorString)}catch(err){return`Sanitization error: ${err?.message}`}}var import_path4=__toESM(require("path")),import_core_common2=require("@storybook/core-common");var knownRenderers=["html","react","svelte","vue3","preact","server","vue","web-components","angular","ember"],knownBuilders=["builder-webpack5","builder-vite"];function findMatchingPackage(packageJson,suffixes){let{name="",version,dependencies,devDependencies,peerDependencies}=packageJson,allDependencies={[name]:version,...dependencies,...devDependencies,...peerDependencies};return suffixes.map(suffix=>`@storybook/${suffix}`).find(pkg=>allDependencies[pkg])}var getFrameworkPackageName=packageNameOrPath=>{let normalizedPath=import_path4.default.normalize(packageNameOrPath).replace(new RegExp(/\\/,"g"),"/");return Object.keys(import_core_common2.frameworkPackages).find(pkg=>normalizedPath.endsWith(pkg))||cleanPaths(packageNameOrPath).replace(/.*node_modules[\\/]/,"")};async function getFrameworkInfo(mainConfig){if(!mainConfig?.framework)return{};let rawName=typeof mainConfig.framework=="string"?mainConfig.framework:mainConfig.framework?.name;if(!rawName)return{};let frameworkPackageJson=await getActualPackageJson(rawName);if(!frameworkPackageJson)return{};let builder=findMatchingPackage(frameworkPackageJson,knownBuilders),renderer=findMatchingPackage(frameworkPackageJson,knownRenderers),sanitizedFrameworkName=getFrameworkPackageName(rawName),frameworkOptions=typeof mainConfig.framework=="object"?mainConfig.framework.options:{};return{framework:{name:sanitizedFrameworkName,options:frameworkOptions},builder,renderer}}function getChromaticVersionSpecifier(packageJson){let dependency=packageJson.dependencies?.chromatic||packageJson.devDependencies?.chromatic||packageJson.peerDependencies?.chromatic;return dependency||(packageJson.scripts&&Object.values(packageJson.scripts).find(s2=>s2?.match(/chromatic/))?"latest":void 0)}var metaFrameworks={next:"Next","react-scripts":"CRA",gatsby:"Gatsby","@nuxtjs/storybook":"nuxt","@nrwl/storybook":"nx","@vue/cli-service":"vue-cli","@sveltejs/kit":"sveltekit"},sanitizeAddonName=name=>cleanPaths(name).replace(/\/dist\/.*/,"").replace(/\.[mc]?[tj]?s[x]?$/,"").replace(/\/register$/,"").replace(/\/manager$/,"").replace(/\/preset$/,""),computeStorybookMetadata=async({packageJson,mainConfig})=>{let metadata={generatedAt:new Date().getTime(),hasCustomBabel:!1,hasCustomWebpack:!1,hasStaticDirs:!1,hasStorybookEslint:!1,refCount:0},allDependencies={...packageJson?.dependencies,...packageJson?.devDependencies,...packageJson?.peerDependencies},metaFramework=Object.keys(allDependencies).find(dep=>!!metaFrameworks[dep]);if(metaFramework){let{version}=await getActualPackageVersion(metaFramework);metadata.metaFramework={name:metaFrameworks[metaFramework],packageName:metaFramework,version}}let testPackages=["playwright","vitest","jest","cypress","nightwatch","webdriver","@web/test-runner","puppeteer","karma","jasmine","chai","testing-library","@ngneat/spectator","wdio","msw","miragejs","sinon"],testPackageDeps=Object.keys(allDependencies).filter(dep=>testPackages.find(pkg=>dep.includes(pkg)));metadata.testPackages=Object.fromEntries(await Promise.all(testPackageDeps.map(async dep=>[dep,(await getActualPackageVersion(dep))?.version])));let monorepoType=getMonorepoType();monorepoType&&(metadata.monorepo=monorepoType);try{let packageManagerType=await(0,import_detect_package_manager.detect)({cwd:(0,import_core_common3.getProjectRoot)()}),packageManagerVerson=await(0,import_detect_package_manager.getNpmVersion)(packageManagerType);metadata.packageManager={type:packageManagerType,version:packageManagerVerson}}catch{}metadata.hasCustomBabel=!!mainConfig.babel,metadata.hasCustomWebpack=!!mainConfig.webpackFinal,metadata.hasStaticDirs=!!mainConfig.staticDirs,typeof mainConfig.typescript=="object"&&(metadata.typescriptOptions=mainConfig.typescript);let frameworkInfo=await getFrameworkInfo(mainConfig);typeof mainConfig.refs=="object"&&(metadata.refCount=Object.keys(mainConfig.refs).length),typeof mainConfig.features=="object"&&(metadata.features=mainConfig.features);let addons={};mainConfig.addons&&mainConfig.addons.forEach(addon=>{let addonName,options;typeof addon=="string"?addonName=sanitizeAddonName(addon):(addon.name.includes("addon-essentials")&&(options=addon.options),addonName=sanitizeAddonName(addon.name)),addons[addonName]={options,version:void 0}});let chromaticVersionSpecifier=getChromaticVersionSpecifier(packageJson);chromaticVersionSpecifier&&(addons.chromatic={version:void 0,versionSpecifier:chromaticVersionSpecifier,options:void 0}),(await getActualPackageVersions(addons)).forEach(({name,version})=>{addons[name].version=version});let addonNames=Object.keys(addons),storybookPackages=Object.keys(allDependencies).filter(dep=>dep.includes("storybook")&&!addonNames.includes(dep)).reduce((acc,dep)=>({...acc,[dep]:{version:void 0}}),{});(await getActualPackageVersions(storybookPackages)).forEach(({name,version})=>{storybookPackages[name].version=version});let language=allDependencies.typescript?"typescript":"javascript",hasStorybookEslint=!!allDependencies["eslint-plugin-storybook"],storybookInfo=(0,import_core_common3.getStorybookInfo)(packageJson);try{let{previewConfig}=storybookInfo;if(previewConfig){let config=await(0,import_csf_tools.readConfig)(previewConfig),usesGlobals=!!(config.getFieldNode(["globals"])||config.getFieldNode(["globalTypes"]));metadata.preview={...metadata.preview,usesGlobals}}}catch{}let storybookVersion=storybookPackages[storybookInfo.frameworkPackage]?.version;return{...metadata,...frameworkInfo,storybookVersion,storybookVersionSpecifier:storybookInfo.version,language,storybookPackages,addons,hasStorybookEslint}},cachedMetadata,getStorybookMetadata=async _configDir=>{if(cachedMetadata)return cachedMetadata;let{packageJson={}}=import_read_pkg_up.default.sync({cwd:process.cwd(),normalize:!1})||{},configDir=(_configDir||(0,import_core_common3.getStorybookConfiguration)(packageJson?.scripts?.storybook||"","-c","--config-dir"))??".storybook",mainConfig=await(0,import_core_common3.loadMainConfig)({configDir});return cachedMetadata=await computeStorybookMetadata({mainConfig,packageJson}),cachedMetadata};var os=__toESM(require("os"));var import_node_http2=__toESM(require("http"),1),import_node_https=__toESM(require("https"),1),import_node_zlib=__toESM(require("zlib"),1),import_node_stream2=__toESM(require("stream"),1),import_node_buffer2=require("buffer");function dataUriToBuffer(uri){if(!/^data:/i.test(uri))throw new TypeError('`uri` does not appear to be a Data URI (must begin with "data:")');uri=uri.replace(/\r?\n/g,"");let firstComma=uri.indexOf(",");if(firstComma===-1||firstComma<=4)throw new TypeError("malformed data: URI");let meta=uri.substring(5,firstComma).split(";"),charset="",base64=!1,type=meta[0]||"text/plain",typeFull=type;for(let i2=1;i2<meta.length;i2++)meta[i2]==="base64"?base64=!0:meta[i2]&&(typeFull+=`;${meta[i2]}`,meta[i2].indexOf("charset=")===0&&(charset=meta[i2].substring(8)));!meta[0]&&!charset.length&&(typeFull+=";charset=US-ASCII",charset="US-ASCII");let encoding=base64?"base64":"ascii",data=unescape(uri.substring(firstComma+1)),buffer=Buffer.from(data,encoding);return buffer.type=type,buffer.typeFull=typeFull,buffer.charset=charset,buffer}var dist_default=dataUriToBuffer;var import_node_stream=__toESM(require("stream"),1),import_node_util=require("util"),import_node_buffer=require("buffer");init_fetch_blob();init_esm_min();var FetchBaseError=class extends Error{constructor(message,type){super(message),Error.captureStackTrace(this,this.constructor),this.type=type}get name(){return this.constructor.name}get[Symbol.toStringTag](){return this.constructor.name}};var FetchError=class extends FetchBaseError{constructor(message,type,systemError){super(message,type),systemError&&(this.code=this.errno=systemError.code,this.erroredSysCall=systemError.syscall)}};var NAME=Symbol.toStringTag,isURLSearchParameters=object=>typeof object=="object"&&typeof object.append=="function"&&typeof object.delete=="function"&&typeof object.get=="function"&&typeof object.getAll=="function"&&typeof object.has=="function"&&typeof object.set=="function"&&typeof object.sort=="function"&&object[NAME]==="URLSearchParams",isBlob=object=>object&&typeof object=="object"&&typeof object.arrayBuffer=="function"&&typeof object.type=="string"&&typeof object.stream=="function"&&typeof object.constructor=="function"&&/^(Blob|File)$/.test(object[NAME]),isAbortSignal=object=>typeof object=="object"&&(object[NAME]==="AbortSignal"||object[NAME]==="EventTarget"),isDomainOrSubdomain=(destination,original)=>{let orig=new URL(original).hostname,dest=new URL(destination).hostname;return orig===dest||orig.endsWith(`.${dest}`)},isSameProtocol=(destination,original)=>{let orig=new URL(original).protocol,dest=new URL(destination).protocol;return orig===dest};var pipeline=(0,import_node_util.promisify)(import_node_stream.default.pipeline),INTERNALS=Symbol("Body internals"),Body=class{constructor(body,{size=0}={}){let boundary=null;body===null?body=null:isURLSearchParameters(body)?body=import_node_buffer.Buffer.from(body.toString()):isBlob(body)||import_node_buffer.Buffer.isBuffer(body)||(import_node_util.types.isAnyArrayBuffer(body)?body=import_node_buffer.Buffer.from(body):ArrayBuffer.isView(body)?body=import_node_buffer.Buffer.from(body.buffer,body.byteOffset,body.byteLength):body instanceof import_node_stream.default||(body instanceof FormData?(body=formDataToBlob(body),boundary=body.type.split("=")[1]):body=import_node_buffer.Buffer.from(String(body))));let stream=body;import_node_buffer.Buffer.isBuffer(body)?stream=import_node_stream.default.Readable.from(body):isBlob(body)&&(stream=import_node_stream.default.Readable.from(body.stream())),this[INTERNALS]={body,stream,boundary,disturbed:!1,error:null},this.size=size,body instanceof import_node_stream.default&&body.on("error",error_=>{let error=error_ instanceof FetchBaseError?error_:new FetchError(`Invalid response body while trying to fetch ${this.url}: ${error_.message}`,"system",error_);this[INTERNALS].error=error})}get body(){return this[INTERNALS].stream}get bodyUsed(){return this[INTERNALS].disturbed}async arrayBuffer(){let{buffer,byteOffset,byteLength}=await consumeBody(this);return buffer.slice(byteOffset,byteOffset+byteLength)}async formData(){let ct=this.headers.get("content-type");if(ct.startsWith("application/x-www-form-urlencoded")){let formData=new FormData,parameters=new URLSearchParams(await this.text());for(let[name,value]of parameters)formData.append(name,value);return formData}let{toFormData:toFormData2}=await Promise.resolve().then(()=>(init_multipart_parser(),multipart_parser_exports));return toFormData2(this.body,ct)}async blob(){let ct=this.headers&&this.headers.get("content-type")||this[INTERNALS].body&&this[INTERNALS].body.type||"",buf=await this.arrayBuffer();return new fetch_blob_default([buf],{type:ct})}async json(){let text=await this.text();return JSON.parse(text)}async text(){let buffer=await consumeBody(this);return new TextDecoder().decode(buffer)}buffer(){return consumeBody(this)}};Body.prototype.buffer=(0,import_node_util.deprecate)(Body.prototype.buffer,"Please use 'response.arrayBuffer()' instead of 'response.buffer()'","node-fetch#buffer");Object.defineProperties(Body.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0},data:{get:(0,import_node_util.deprecate)(()=>{},"data doesn't exist, use json(), text(), arrayBuffer(), or body instead","https://github.com/node-fetch/node-fetch/issues/1000 (response)")}});async function consumeBody(data){if(data[INTERNALS].disturbed)throw new TypeError(`body used already for: ${data.url}`);if(data[INTERNALS].disturbed=!0,data[INTERNALS].error)throw data[INTERNALS].error;let{body}=data;if(body===null)return import_node_buffer.Buffer.alloc(0);if(!(body instanceof import_node_stream.default))return import_node_buffer.Buffer.alloc(0);let accum=[],accumBytes=0;try{for await(let chunk of body){if(data.size>0&&accumBytes+chunk.length>data.size){let error=new FetchError(`content size at ${data.url} over limit: ${data.size}`,"max-size");throw body.destroy(error),error}accumBytes+=chunk.length,accum.push(chunk)}}catch(error){throw error instanceof FetchBaseError?error:new FetchError(`Invalid response body while trying to fetch ${data.url}: ${error.message}`,"system",error)}if(body.readableEnded===!0||body._readableState.ended===!0)try{return accum.every(c=>typeof c=="string")?import_node_buffer.Buffer.from(accum.join("")):import_node_buffer.Buffer.concat(accum,accumBytes)}catch(error){throw new FetchError(`Could not create Buffer from response body for ${data.url}: ${error.message}`,"system",error)}else throw new FetchError(`Premature close of server response while trying to fetch ${data.url}`)}var clone=(instance,highWaterMark)=>{let p1,p2,{body}=instance[INTERNALS];if(instance.bodyUsed)throw new Error("cannot clone body after it is used");return body instanceof import_node_stream.default&&typeof body.getBoundary!="function"&&(p1=new import_node_stream.PassThrough({highWaterMark}),p2=new import_node_stream.PassThrough({highWaterMark}),body.pipe(p1),body.pipe(p2),instance[INTERNALS].stream=p1,body=p2),body},getNonSpecFormDataBoundary=(0,import_node_util.deprecate)(body=>body.getBoundary(),"form-data doesn't follow the spec and requires special treatment. Use alternative package","https://github.com/node-fetch/node-fetch/issues/1167"),extractContentType=(body,request)=>body===null?null:typeof body=="string"?"text/plain;charset=UTF-8":isURLSearchParameters(body)?"application/x-www-form-urlencoded;charset=UTF-8":isBlob(body)?body.type||null:import_node_buffer.Buffer.isBuffer(body)||import_node_util.types.isAnyArrayBuffer(body)||ArrayBuffer.isView(body)?null:body instanceof FormData?`multipart/form-data; boundary=${request[INTERNALS].boundary}`:body&&typeof body.getBoundary=="function"?`multipart/form-data;boundary=${getNonSpecFormDataBoundary(body)}`:body instanceof import_node_stream.default?null:"text/plain;charset=UTF-8",getTotalBytes=request=>{let{body}=request[INTERNALS];return body===null?0:isBlob(body)?body.size:import_node_buffer.Buffer.isBuffer(body)?body.length:body&&typeof body.getLengthSync=="function"&&body.hasKnownLength&&body.hasKnownLength()?body.getLengthSync():null},writeToStream=async(dest,{body})=>{body===null?dest.end():await pipeline(body,dest)};var import_node_util2=require("util"),import_node_http=__toESM(require("http"),1),validateHeaderName=typeof import_node_http.default.validateHeaderName=="function"?import_node_http.default.validateHeaderName:name=>{if(!/^[\^`\-\w!#$%&'*+.|~]+$/.test(name)){let error=new TypeError(`Header name must be a valid HTTP token [${name}]`);throw Object.defineProperty(error,"code",{value:"ERR_INVALID_HTTP_TOKEN"}),error}},validateHeaderValue=typeof import_node_http.default.validateHeaderValue=="function"?import_node_http.default.validateHeaderValue:(name,value)=>{if(/[^\t\u0020-\u007E\u0080-\u00FF]/.test(value)){let error=new TypeError(`Invalid character in header content ["${name}"]`);throw Object.defineProperty(error,"code",{value:"ERR_INVALID_CHAR"}),error}},Headers=class _Headers extends URLSearchParams{constructor(init){let result=[];if(init instanceof _Headers){let raw=init.raw();for(let[name,values]of Object.entries(raw))result.push(...values.map(value=>[name,value]))}else if(init!=null)if(typeof init=="object"&&!import_node_util2.types.isBoxedPrimitive(init)){let method=init[Symbol.iterator];if(method==null)result.push(...Object.entries(init));else{if(typeof method!="function")throw new TypeError("Header pairs must be iterable");result=[...init].map(pair=>{if(typeof pair!="object"||import_node_util2.types.isBoxedPrimitive(pair))throw new TypeError("Each header pair must be an iterable object");return[...pair]}).map(pair=>{if(pair.length!==2)throw new TypeError("Each header pair must be a name/value tuple");return[...pair]})}}else throw new TypeError("Failed to construct 'Headers': The provided value is not of type '(sequence<sequence<ByteString>> or record<ByteString, ByteString>)");return result=result.length>0?result.map(([name,value])=>(validateHeaderName(name),validateHeaderValue(name,String(value)),[String(name).toLowerCase(),String(value)])):void 0,super(result),new Proxy(this,{get(target,p,receiver){switch(p){case"append":case"set":return(name,value)=>(validateHeaderName(name),validateHeaderValue(name,String(value)),URLSearchParams.prototype[p].call(target,String(name).toLowerCase(),String(value)));case"delete":case"has":case"getAll":return name=>(validateHeaderName(name),URLSearchParams.prototype[p].call(target,String(name).toLowerCase()));case"keys":return()=>(target.sort(),new Set(URLSearchParams.prototype.keys.call(target)).keys());default:return Reflect.get(target,p,receiver)}}})}get[Symbol.toStringTag](){return this.constructor.name}toString(){return Object.prototype.toString.call(this)}get(name){let values=this.getAll(name);if(values.length===0)return null;let value=values.join(", ");return/^content-encoding$/i.test(name)&&(value=value.toLowerCase()),value}forEach(callback,thisArg=void 0){for(let name of this.keys())Reflect.apply(callback,thisArg,[this.get(name),name,this])}*values(){for(let name of this.keys())yield this.get(name)}*entries(){for(let name of this.keys())yield[name,this.get(name)]}[Symbol.iterator](){return this.entries()}raw(){return[...this.keys()].reduce((result,key)=>(result[key]=this.getAll(key),result),{})}[Symbol.for("nodejs.util.inspect.custom")](){return[...this.keys()].reduce((result,key)=>{let values=this.getAll(key);return key==="host"?result[key]=values[0]:result[key]=values.length>1?values:values[0],result},{})}};Object.defineProperties(Headers.prototype,["get","entries","forEach","values"].reduce((result,property)=>(result[property]={enumerable:!0},result),{}));function fromRawHeaders(headers=[]){return new Headers(headers.reduce((result,value,index,array)=>(index%2===0&&result.push(array.slice(index,index+2)),result),[]).filter(([name,value])=>{try{return validateHeaderName(name),validateHeaderValue(name,String(value)),!0}catch{return!1}}))}var redirectStatus=new Set([301,302,303,307,308]),isRedirect=code=>redirectStatus.has(code);var INTERNALS2=Symbol("Response internals"),Response=class _Response extends Body{constructor(body=null,options={}){super(body,options);let status=options.status!=null?options.status:200,headers=new Headers(options.headers);if(body!==null&&!headers.has("Content-Type")){let contentType=extractContentType(body,this);contentType&&headers.append("Content-Type",contentType)}this[INTERNALS2]={type:"default",url:options.url,status,statusText:options.statusText||"",headers,counter:options.counter,highWaterMark:options.highWaterMark}}get type(){return this[INTERNALS2].type}get url(){return this[INTERNALS2].url||""}get status(){return this[INTERNALS2].status}get ok(){return this[INTERNALS2].status>=200&&this[INTERNALS2].status<300}get redirected(){return this[INTERNALS2].counter>0}get statusText(){return this[INTERNALS2].statusText}get headers(){return this[INTERNALS2].headers}get highWaterMark(){return this[INTERNALS2].highWaterMark}clone(){return new _Response(clone(this,this.highWaterMark),{type:this.type,url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected,size:this.size,highWaterMark:this.highWaterMark})}static redirect(url,status=302){if(!isRedirect(status))throw new RangeError('Failed to execute "redirect" on "response": Invalid status code');return new _Response(null,{headers:{location:new URL(url).toString()},status})}static error(){let response=new _Response(null,{status:0,statusText:""});return response[INTERNALS2].type="error",response}static json(data=void 0,init={}){let body=JSON.stringify(data);if(body===void 0)throw new TypeError("data is not JSON serializable");let headers=new Headers(init&&init.headers);return headers.has("content-type")||headers.set("content-type","application/json"),new _Response(body,{...init,headers})}get[Symbol.toStringTag](){return"Response"}};Object.defineProperties(Response.prototype,{type:{enumerable:!0},url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});var import_node_url=require("url"),import_node_util3=require("util");var getSearch=parsedURL=>{if(parsedURL.search)return parsedURL.search;let lastOffset=parsedURL.href.length-1,hash=parsedURL.hash||(parsedURL.href[lastOffset]==="#"?"#":"");return parsedURL.href[lastOffset-hash.length]==="?"?"?":""};var import_node_net=require("net");function stripURLForUseAsAReferrer(url,originOnly=!1){return url==null||(url=new URL(url),/^(about|blob|data):$/.test(url.protocol))?"no-referrer":(url.username="",url.password="",url.hash="",originOnly&&(url.pathname="",url.search=""),url)}var ReferrerPolicy=new Set(["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"]),DEFAULT_REFERRER_POLICY="strict-origin-when-cross-origin";function validateReferrerPolicy(referrerPolicy){if(!ReferrerPolicy.has(referrerPolicy))throw new TypeError(`Invalid referrerPolicy: ${referrerPolicy}`);return referrerPolicy}function isOriginPotentiallyTrustworthy(url){if(/^(http|ws)s:$/.test(url.protocol))return!0;let hostIp=url.host.replace(/(^\[)|(]$)/g,""),hostIPVersion=(0,import_node_net.isIP)(hostIp);return hostIPVersion===4&&/^127\./.test(hostIp)||hostIPVersion===6&&/^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(hostIp)?!0:url.host==="localhost"||url.host.endsWith(".localhost")?!1:url.protocol==="file:"}function isUrlPotentiallyTrustworthy(url){return/^about:(blank|srcdoc)$/.test(url)||url.protocol==="data:"||/^(blob|filesystem):$/.test(url.protocol)?!0:isOriginPotentiallyTrustworthy(url)}function determineRequestsReferrer(request,{referrerURLCallback,referrerOriginCallback}={}){if(request.referrer==="no-referrer"||request.referrerPolicy==="")return null;let policy=request.referrerPolicy;if(request.referrer==="about:client")return"no-referrer";let referrerSource=request.referrer,referrerURL=stripURLForUseAsAReferrer(referrerSource),referrerOrigin=stripURLForUseAsAReferrer(referrerSource,!0);referrerURL.toString().length>4096&&(referrerURL=referrerOrigin),referrerURLCallback&&(referrerURL=referrerURLCallback(referrerURL)),referrerOriginCallback&&(referrerOrigin=referrerOriginCallback(referrerOrigin));let currentURL=new URL(request.url);switch(policy){case"no-referrer":return"no-referrer";case"origin":return referrerOrigin;case"unsafe-url":return referrerURL;case"strict-origin":return isUrlPotentiallyTrustworthy(referrerURL)&&!isUrlPotentiallyTrustworthy(currentURL)?"no-referrer":referrerOrigin.toString();case"strict-origin-when-cross-origin":return referrerURL.origin===currentURL.origin?referrerURL:isUrlPotentiallyTrustworthy(referrerURL)&&!isUrlPotentiallyTrustworthy(currentURL)?"no-referrer":referrerOrigin;case"same-origin":return referrerURL.origin===currentURL.origin?referrerURL:"no-referrer";case"origin-when-cross-origin":return referrerURL.origin===currentURL.origin?referrerURL:referrerOrigin;case"no-referrer-when-downgrade":return isUrlPotentiallyTrustworthy(referrerURL)&&!isUrlPotentiallyTrustworthy(currentURL)?"no-referrer":referrerURL;default:throw new TypeError(`Invalid referrerPolicy: ${policy}`)}}function parseReferrerPolicyFromHeader(headers){let policyTokens=(headers.get("referrer-policy")||"").split(/[,\s]+/),policy="";for(let token of policyTokens)token&&ReferrerPolicy.has(token)&&(policy=token);return policy}var INTERNALS3=Symbol("Request internals"),isRequest=object=>typeof object=="object"&&typeof object[INTERNALS3]=="object",doBadDataWarn=(0,import_node_util3.deprecate)(()=>{},".data is not a valid RequestInit property, use .body instead","https://github.com/node-fetch/node-fetch/issues/1000 (request)"),Request=class _Request extends Body{constructor(input,init={}){let parsedURL;if(isRequest(input)?parsedURL=new URL(input.url):(parsedURL=new URL(input),input={}),parsedURL.username!==""||parsedURL.password!=="")throw new TypeError(`${parsedURL} is an url with embedded credentials.`);let method=init.method||input.method||"GET";if(/^(delete|get|head|options|post|put)$/i.test(method)&&(method=method.toUpperCase()),!isRequest(init)&&"data"in init&&doBadDataWarn(),(init.body!=null||isRequest(input)&&input.body!==null)&&(method==="GET"||method==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let inputBody=init.body?init.body:isRequest(input)&&input.body!==null?clone(input):null;super(inputBody,{size:init.size||input.size||0});let headers=new Headers(init.headers||input.headers||{});if(inputBody!==null&&!headers.has("Content-Type")){let contentType=extractContentType(inputBody,this);contentType&&headers.set("Content-Type",contentType)}let signal=isRequest(input)?input.signal:null;if("signal"in init&&(signal=init.signal),signal!=null&&!isAbortSignal(signal))throw new TypeError("Expected signal to be an instanceof AbortSignal or EventTarget");let referrer=init.referrer==null?input.referrer:init.referrer;if(referrer==="")referrer="no-referrer";else if(referrer){let parsedReferrer=new URL(referrer);referrer=/^about:(\/\/)?client$/.test(parsedReferrer)?"client":parsedReferrer}else referrer=void 0;this[INTERNALS3]={method,redirect:init.redirect||input.redirect||"follow",headers,parsedURL,signal,referrer},this.follow=init.follow===void 0?input.follow===void 0?20:input.follow:init.follow,this.compress=init.compress===void 0?input.compress===void 0?!0:input.compress:init.compress,this.counter=init.counter||input.counter||0,this.agent=init.agent||input.agent,this.highWaterMark=init.highWaterMark||input.highWaterMark||16384,this.insecureHTTPParser=init.insecureHTTPParser||input.insecureHTTPParser||!1,this.referrerPolicy=init.referrerPolicy||input.referrerPolicy||""}get method(){return this[INTERNALS3].method}get url(){return(0,import_node_url.format)(this[INTERNALS3].parsedURL)}get headers(){return this[INTERNALS3].headers}get redirect(){return this[INTERNALS3].redirect}get signal(){return this[INTERNALS3].signal}get referrer(){if(this[INTERNALS3].referrer==="no-referrer")return"";if(this[INTERNALS3].referrer==="client")return"about:client";if(this[INTERNALS3].referrer)return this[INTERNALS3].referrer.toString()}get referrerPolicy(){return this[INTERNALS3].referrerPolicy}set referrerPolicy(referrerPolicy){this[INTERNALS3].referrerPolicy=validateReferrerPolicy(referrerPolicy)}clone(){return new _Request(this)}get[Symbol.toStringTag](){return"Request"}};Object.defineProperties(Request.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0},referrer:{enumerable:!0},referrerPolicy:{enumerable:!0}});var getNodeRequestOptions=request=>{let{parsedURL}=request[INTERNALS3],headers=new Headers(request[INTERNALS3].headers);headers.has("Accept")||headers.set("Accept","*/*");let contentLengthValue=null;if(request.body===null&&/^(post|put)$/i.test(request.method)&&(contentLengthValue="0"),request.body!==null){let totalBytes=getTotalBytes(request);typeof totalBytes=="number"&&!Number.isNaN(totalBytes)&&(contentLengthValue=String(totalBytes))}contentLengthValue&&headers.set("Content-Length",contentLengthValue),request.referrerPolicy===""&&(request.referrerPolicy=DEFAULT_REFERRER_POLICY),request.referrer&&request.referrer!=="no-referrer"?request[INTERNALS3].referrer=determineRequestsReferrer(request):request[INTERNALS3].referrer="no-referrer",request[INTERNALS3].referrer instanceof URL&&headers.set("Referer",request.referrer),headers.has("User-Agent")||headers.set("User-Agent","node-fetch"),request.compress&&!headers.has("Accept-Encoding")&&headers.set("Accept-Encoding","gzip, deflate, br");let{agent}=request;typeof agent=="function"&&(agent=agent(parsedURL));let search=getSearch(parsedURL),options={path:parsedURL.pathname+search,method:request.method,headers:headers[Symbol.for("nodejs.util.inspect.custom")](),insecureHTTPParser:request.insecureHTTPParser,agent};return{parsedURL,options}};var AbortError=class extends FetchBaseError{constructor(message,type="aborted"){super(message,type)}};init_esm_min();init_from();var supportedSchemas=new Set(["data:","http:","https:"]);async function fetch(url,options_){return new Promise((resolve,reject)=>{let request=new Request(url,options_),{parsedURL,options}=getNodeRequestOptions(request);if(!supportedSchemas.has(parsedURL.protocol))throw new TypeError(`node-fetch cannot load ${url}. URL scheme "${parsedURL.protocol.replace(/:$/,"")}" is not supported.`);if(parsedURL.protocol==="data:"){let data=dist_default(request.url),response2=new Response(data,{headers:{"Content-Type":data.typeFull}});resolve(response2);return}let send=(parsedURL.protocol==="https:"?import_node_https.default:import_node_http2.default).request,{signal}=request,response=null,abort=()=>{let error=new AbortError("The operation was aborted.");reject(error),request.body&&request.body instanceof import_node_stream2.default.Readable&&request.body.destroy(error),!(!response||!response.body)&&response.body.emit("error",error)};if(signal&&signal.aborted){abort();return}let abortAndFinalize=()=>{abort(),finalize()},request_=send(parsedURL.toString(),options);signal&&signal.addEventListener("abort",abortAndFinalize);let finalize=()=>{request_.abort(),signal&&signal.removeEventListener("abort",abortAndFinalize)};request_.on("error",error=>{reject(new FetchError(`request to ${request.url} failed, reason: ${error.message}`,"system",error)),finalize()}),fixResponseChunkedTransferBadEnding(request_,error=>{response&&response.body&&response.body.destroy(error)}),process.version<"v14"&&request_.on("socket",s2=>{let endedWithEventsCount;s2.prependListener("end",()=>{endedWithEventsCount=s2._eventsCount}),s2.prependListener("close",hadError=>{if(response&&endedWithEventsCount<s2._eventsCount&&!hadError){let error=new Error("Premature close");error.code="ERR_STREAM_PREMATURE_CLOSE",response.body.emit("error",error)}})}),request_.on("response",response_=>{request_.setTimeout(0);let headers=fromRawHeaders(response_.rawHeaders);if(isRedirect(response_.statusCode)){let location=headers.get("Location"),locationURL=null;try{locationURL=location===null?null:new URL(location,request.url)}catch{if(request.redirect!=="manual"){reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`,"invalid-redirect")),finalize();return}}switch(request.redirect){case"error":reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`,"no-redirect")),finalize();return;case"manual":break;case"follow":{if(locationURL===null)break;if(request.counter>=request.follow){reject(new FetchError(`maximum redirect reached at: ${request.url}`,"max-redirect")),finalize();return}let requestOptions={headers:new Headers(request.headers),follow:request.follow,counter:request.counter+1,agent:request.agent,compress:request.compress,method:request.method,body:clone(request),signal:request.signal,size:request.size,referrer:request.referrer,referrerPolicy:request.referrerPolicy};if(!isDomainOrSubdomain(request.url,locationURL)||!isSameProtocol(request.url,locationURL))for(let name of["authorization","www-authenticate","cookie","cookie2"])requestOptions.headers.delete(name);if(response_.statusCode!==303&&request.body&&options_.body instanceof import_node_stream2.default.Readable){reject(new FetchError("Cannot follow redirect with body being a readable stream","unsupported-redirect")),finalize();return}(response_.statusCode===303||(response_.statusCode===301||response_.statusCode===302)&&request.method==="POST")&&(requestOptions.method="GET",requestOptions.body=void 0,requestOptions.headers.delete("content-length"));let responseReferrerPolicy=parseReferrerPolicyFromHeader(headers);responseReferrerPolicy&&(requestOptions.referrerPolicy=responseReferrerPolicy),resolve(fetch(new Request(locationURL,requestOptions))),finalize();return}default:return reject(new TypeError(`Redirect option '${request.redirect}' is not a valid value of RequestRedirect`))}}signal&&response_.once("end",()=>{signal.removeEventListener("abort",abortAndFinalize)});let body=(0,import_node_stream2.pipeline)(response_,new import_node_stream2.PassThrough,error=>{error&&reject(error)});process.version<"v12.10"&&response_.on("aborted",abortAndFinalize);let responseOptions={url:request.url,status:response_.statusCode,statusText:response_.statusMessage,headers,size:request.size,counter:request.counter,highWaterMark:request.highWaterMark},codings=headers.get("Content-Encoding");if(!request.compress||request.method==="HEAD"||codings===null||response_.statusCode===204||response_.statusCode===304){response=new Response(body,responseOptions),resolve(response);return}let zlibOptions={flush:import_node_zlib.default.Z_SYNC_FLUSH,finishFlush:import_node_zlib.default.Z_SYNC_FLUSH};if(codings==="gzip"||codings==="x-gzip"){body=(0,import_node_stream2.pipeline)(body,import_node_zlib.default.createGunzip(zlibOptions),error=>{error&&reject(error)}),response=new Response(body,responseOptions),resolve(response);return}if(codings==="deflate"||codings==="x-deflate"){let raw=(0,import_node_stream2.pipeline)(response_,new import_node_stream2.PassThrough,error=>{error&&reject(error)});raw.once("data",chunk=>{(chunk[0]&15)===8?body=(0,import_node_stream2.pipeline)(body,import_node_zlib.default.createInflate(),error=>{error&&reject(error)}):body=(0,import_node_stream2.pipeline)(body,import_node_zlib.default.createInflateRaw(),error=>{error&&reject(error)}),response=new Response(body,responseOptions),resolve(response)}),raw.once("end",()=>{response||(response=new Response(body,responseOptions),resolve(response))});return}if(codings==="br"){body=(0,import_node_stream2.pipeline)(body,import_node_zlib.default.createBrotliDecompress(),error=>{error&&reject(error)}),response=new Response(body,responseOptions),resolve(response);return}response=new Response(body,responseOptions),resolve(response)}),writeToStream(request_,request).catch(reject)})}function fixResponseChunkedTransferBadEnding(request,errorCallback){let LAST_CHUNK=import_node_buffer2.Buffer.from(`0\r
|
13
13
|
\r
|
14
14
|
`),isChunkedTransfer=!1,properLastChunkReceived=!1,previousChunk;request.on("response",response=>{let{headers}=response;isChunkedTransfer=headers["transfer-encoding"]==="chunked"&&!headers["content-length"]}),request.on("socket",socket=>{let onSocketClose=()=>{if(isChunkedTransfer&&!properLastChunkReceived){let error=new Error("Premature close");error.code="ERR_STREAM_PREMATURE_CLOSE",errorCallback(error)}},onData=buf=>{properLastChunkReceived=import_node_buffer2.Buffer.compare(buf.slice(-5),LAST_CHUNK)===0,!properLastChunkReceived&&previousChunk&&(properLastChunkReceived=import_node_buffer2.Buffer.compare(previousChunk.slice(-3),LAST_CHUNK.slice(0,3))===0&&import_node_buffer2.Buffer.compare(buf.slice(-2),LAST_CHUNK.slice(3))===0),previousChunk=buf};socket.prependListener("close",onSocketClose),socket.on("data",onData),request.on("close",()=>{socket.removeListener("close",onSocketClose),socket.removeListener("data",onData)})})}var import_fetch_retry=__toESM(require("fetch-retry"));var import_crypto=require("crypto");var urlAlphabet="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var POOL_SIZE_MULTIPLIER=128,pool,poolOffset,fillPool=bytes=>{!pool||pool.length<bytes?(pool=Buffer.allocUnsafe(bytes*POOL_SIZE_MULTIPLIER),(0,import_crypto.randomFillSync)(pool),poolOffset=0):poolOffset+bytes>pool.length&&((0,import_crypto.randomFillSync)(pool),poolOffset=0),poolOffset+=bytes};var nanoid=(size=21)=>{fillPool(size-=0);let id="";for(let i2=poolOffset-size;i2<poolOffset;i2++)id+=urlAlphabet[pool[i2]&63];return id};var import_path5=__toESM(require("path")),import_child_process=require("child_process"),import_core_common4=require("@storybook/core-common");var import_crypto2=require("crypto"),oneWayHash=payload=>{let hash=(0,import_crypto2.createHash)("sha256");return hash.update("storybook-telemetry-salt"),hash.update(payload),hash.digest("hex")};function normalizeGitUrl(rawUrl){return rawUrl.trim().replace(/#.*$/,"").replace(/^.*@/,"").replace(/^.*\/\//,"").replace(":","/")}var anonymousProjectId,getAnonymousProjectId=()=>{if(anonymousProjectId)return anonymousProjectId;let unhashedProjectId;try{let projectRoot=(0,import_core_common4.getProjectRoot)(),projectRootPath=import_path5.default.relative(projectRoot,process.cwd()),originBuffer=(0,import_child_process.execSync)("git config --local --get remote.origin.url",{timeout:1e3,stdio:"pipe"});unhashedProjectId=`${normalizeGitUrl(String(originBuffer))}${projectRootPath}`,anonymousProjectId=oneWayHash(unhashedProjectId)}catch{}return anonymousProjectId};var import_core_common5=require("@storybook/core-common"),operation=Promise.resolve(),setHelper=async(eventType,body)=>{let lastEvents=await import_core_common5.cache.get("lastEvents")||{};lastEvents[eventType]={body,timestamp:Date.now()},await import_core_common5.cache.set("lastEvents",lastEvents)},set=async(eventType,body)=>(await operation,operation=setHelper(eventType,body),operation);var upgradeFields=event=>{let{body,timestamp}=event;return{timestamp,eventType:body?.eventType,eventId:body?.eventId,sessionId:body?.sessionId}},UPGRADE_EVENTS=["init","upgrade"],RUN_EVENTS=["build","dev","error"],lastEvent=(lastEvents,eventTypes)=>{let descendingEvents=eventTypes.map(eventType=>lastEvents?.[eventType]).filter(Boolean).sort((a,b)=>b.timestamp-a.timestamp);return descendingEvents.length>0?descendingEvents[0]:void 0},getPrecedingUpgrade=async(events=void 0)=>{let lastEvents=events||await import_core_common5.cache.get("lastEvents")||{},lastUpgradeEvent=lastEvent(lastEvents,UPGRADE_EVENTS),lastRunEvent=lastEvent(lastEvents,RUN_EVENTS);if(lastUpgradeEvent)return!lastRunEvent?.timestamp||lastUpgradeEvent.timestamp>lastRunEvent.timestamp?upgradeFields(lastUpgradeEvent):void 0};var import_core_common6=require("@storybook/core-common"),SESSION_TIMEOUT=1e3*60*60*2,sessionId;var getSessionId=async()=>{let now=Date.now();if(!sessionId){let session=await import_core_common6.cache.get("session");session&&session.lastUsed>=now-SESSION_TIMEOUT?sessionId=session.id:sessionId=nanoid()}return await import_core_common6.cache.set("session",{id:sessionId,lastUsed:now}),sessionId};var URL2=process.env.STORYBOOK_TELEMETRY_URL||"https://storybook.js.org/event-log",fetch2=(0,import_fetch_retry.default)(fetch),tasks=[],addToGlobalContext=(key,value)=>{globalContext[key]=value},getOperatingSystem=()=>{try{let platform2=os.platform();return platform2==="win32"?"Windows":platform2==="darwin"?"macOS":platform2==="linux"?"Linux":`Other: ${platform2}`}catch{return"Unknown"}},globalContext={inCI:!!process.env.CI,isTTY:process.stdout.isTTY,platform:getOperatingSystem()},prepareRequest=async(data,context,options)=>{let{eventType,payload,metadata,...rest}=data,sessionId2=await getSessionId(),eventId=nanoid(),body={...rest,eventType,eventId,sessionId:sessionId2,metadata,payload,context};return fetch2(URL2,{method:"POST",body:JSON.stringify(body),headers:{"Content-Type":"application/json"},retries:3,retryOn:[503,504],retryDelay:attempt=>2**attempt*(typeof options?.retryDelay=="number"&&!Number.isNaN(options?.retryDelay)?options.retryDelay:1e3)})};async function sendTelemetry(data,options={retryDelay:1e3,immediate:!1}){let{eventType,payload,metadata,...rest}=data,context=options.stripMetadata?globalContext:{...globalContext,anonymousId:getAnonymousProjectId()},request;try{request=prepareRequest(data,context,options),tasks.push(request),options.immediate?await Promise.all(tasks):await request;let sessionId2=await getSessionId(),eventId=nanoid(),body={...rest,eventType,eventId,sessionId:sessionId2,metadata,payload,context};await set(eventType,body)}catch{}finally{tasks=tasks.filter(task=>task!==request)}}var import_chalk=__toESM(require("chalk")),import_core_common7=require("@storybook/core-common"),TELEMETRY_KEY_NOTIFY_DATE="telemetry-notification-date",logger=console,notify=async()=>{await import_core_common7.cache.get(TELEMETRY_KEY_NOTIFY_DATE,null)||(import_core_common7.cache.set(TELEMETRY_KEY_NOTIFY_DATE,Date.now()),logger.log(),logger.log(`${import_chalk.default.magenta.bold("attention")} => Storybook now collects completely anonymous telemetry regarding usage.`),logger.log("This information is used to shape Storybook's roadmap and prioritize features."),logger.log("You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:"),logger.log(import_chalk.default.cyan("https://storybook.js.org/telemetry")),logger.log())};var telemetry=async(eventType,payload={},options={})=>{eventType!=="boot"&&await notify();let telemetryData={eventType,payload};try{options?.stripMetadata||(telemetryData.metadata=await getStorybookMetadata(options?.configDir))}catch(error){telemetryData.payload.metadataErrorMessage=sanitizeError(error).message,options?.enableCrashReports&&(telemetryData.payload.metadataError=sanitizeError(error))}finally{let{error}=telemetryData.payload;error&&(telemetryData.payload.error=sanitizeError(error)),(!telemetryData.payload.error||options?.enableCrashReports)&&(process.env?.STORYBOOK_TELEMETRY_DEBUG&&(import_client_logger.logger.info(`
|
15
15
|
[telemetry]`),import_client_logger.logger.info(JSON.stringify(telemetryData,null,2))),await sendTelemetry(telemetryData,options))}};0&&(module.exports={addToGlobalContext,computeStorybookMetadata,getPrecedingUpgrade,getStorybookMetadata,metaFrameworks,oneWayHash,sanitizeAddonName,telemetry});
|
package/dist/index.mjs
CHANGED
@@ -21,7 +21,7 @@ import { createHash, randomFillSync } from 'crypto';
|
|
21
21
|
import { execSync } from 'child_process';
|
22
22
|
import chalk from 'chalk';
|
23
23
|
|
24
|
-
var getActualPackageVersions=async packages=>{let packageNames=Object.keys(packages);return Promise.all(packageNames.map(getActualPackageVersion))},getActualPackageVersion=async packageName=>{try{let packageJson=await getActualPackageJson(packageName);return {name:packageName,version:packageJson.version}}catch{return {name:packageName,version:null}}},getActualPackageJson=async packageName=>{let resolvedPackageJson=__require.resolve(path2.join(packageName,"package.json"),{paths:[process.cwd()]});return await fs2.readJson(resolvedPackageJson)};var monorepoConfigs={Nx:"nx.json",Turborepo:"turbo.json",Lerna:"lerna.json",Rush:"rush.json",Lage:"lage.config.json"},getMonorepoType=()=>{let projectRootPath=getProjectRoot();if(!projectRootPath)return;let monorepoType=Object.keys(monorepoConfigs).find(monorepo=>{let configFile=path2.join(projectRootPath,monorepoConfigs[monorepo]);return fs2__default.existsSync(configFile)});if(monorepoType)return monorepoType;if(!fs2__default.existsSync(path2.join(projectRootPath,"package.json")))return;if(fs2__default.readJsonSync(path2.join(projectRootPath,"package.json"))?.workspaces)return "Workspaces"};function regexpEscape(str){return str.replace(/[-[/{}()*+?.\\^$|]/g,"\\$&")}function removeAnsiEscapeCodes(input=""){return input.replace(/\u001B\[[0-9;]*m/g,"")}function cleanPaths(str,separator=path2.sep){if(!str)return str;let stack=process.cwd().split(separator);for(;stack.length>1;){let currentPath=stack.join(separator),currentRegex=new RegExp(regexpEscape(currentPath),"gi");str=str.replace(currentRegex,"$SNIP");let currentPath2=stack.join(separator+separator),currentRegex2=new RegExp(regexpEscape(currentPath2),"gi");str=str.replace(currentRegex2,"$SNIP"),stack.pop();}return str}function sanitizeError(error,pathSeparator=path2.sep){try{error={...JSON.parse(JSON.stringify(error)),message:removeAnsiEscapeCodes(error.message),stack:removeAnsiEscapeCodes(error.stack),cause:error.cause,name:error.name};let errorString=cleanPaths(JSON.stringify(error),pathSeparator);return JSON.parse(errorString)}catch(err){return `Sanitization error: ${err?.message}`}}var knownRenderers=["html","react","svelte","vue3","preact","server","vue","web-components","angular","ember"],knownBuilders=["builder-webpack5","builder-vite"];function findMatchingPackage(packageJson,suffixes){let{name="",version,dependencies,devDependencies,peerDependencies}=packageJson,allDependencies={[name]:version,...dependencies,...devDependencies,...peerDependencies};return suffixes.map(suffix=>`@storybook/${suffix}`).find(pkg=>allDependencies[pkg])}var getFrameworkPackageName=packageNameOrPath=>{let normalizedPath=path2.normalize(packageNameOrPath).replace(new RegExp(/\\/,"g"),"/");return Object.keys(frameworkPackages).find(pkg=>normalizedPath.endsWith(pkg))||cleanPaths(packageNameOrPath).replace(/.*node_modules[\\/]/,"")};async function getFrameworkInfo(mainConfig){if(!mainConfig?.framework)return {};let rawName=typeof mainConfig.framework=="string"?mainConfig.framework:mainConfig.framework?.name;if(!rawName)return {};let frameworkPackageJson=await getActualPackageJson(rawName);if(!frameworkPackageJson)return {};let builder=findMatchingPackage(frameworkPackageJson,knownBuilders),renderer=findMatchingPackage(frameworkPackageJson,knownRenderers),sanitizedFrameworkName=getFrameworkPackageName(rawName),frameworkOptions=typeof mainConfig.framework=="object"?mainConfig.framework.options:{};return {framework:{name:sanitizedFrameworkName,options:frameworkOptions},builder,renderer}}function getChromaticVersionSpecifier(packageJson){let dependency=packageJson.dependencies?.chromatic||packageJson.devDependencies?.chromatic||packageJson.peerDependencies?.chromatic;return dependency||(packageJson.scripts&&Object.values(packageJson.scripts).find(s=>s?.match(/chromatic/))?"latest":void 0)}var metaFrameworks={next:"Next","react-scripts":"CRA",gatsby:"Gatsby","@nuxtjs/storybook":"nuxt","@nrwl/storybook":"nx","@vue/cli-service":"vue-cli","@sveltejs/kit":"sveltekit"},sanitizeAddonName=name=>cleanPaths(name).replace(/\/dist\/.*/,"").replace(/\.[mc]?[tj]?s[x]?$/,"").replace(/\/register$/,"").replace(/\/manager$/,"").replace(/\/preset$/,""),computeStorybookMetadata=async({packageJson,mainConfig})=>{let metadata={generatedAt:new Date().getTime(),hasCustomBabel:!1,hasCustomWebpack:!1,hasStaticDirs:!1,hasStorybookEslint:!1,refCount:0},allDependencies={...packageJson?.dependencies,...packageJson?.devDependencies,...packageJson?.peerDependencies},metaFramework=Object.keys(allDependencies).find(dep=>!!metaFrameworks[dep]);if(metaFramework){let{version}=await getActualPackageVersion(metaFramework);metadata.metaFramework={name:metaFrameworks[metaFramework],packageName:metaFramework,version};}let monorepoType=getMonorepoType();monorepoType&&(metadata.monorepo=monorepoType);try{let packageManagerType=await detect({cwd:getProjectRoot()}),packageManagerVerson=await getNpmVersion(packageManagerType);metadata.packageManager={type:packageManagerType,version:packageManagerVerson};}catch{}metadata.hasCustomBabel=!!mainConfig.babel,metadata.hasCustomWebpack=!!mainConfig.webpackFinal,metadata.hasStaticDirs=!!mainConfig.staticDirs,typeof mainConfig.typescript=="object"&&(metadata.typescriptOptions=mainConfig.typescript);let frameworkInfo=await getFrameworkInfo(mainConfig);typeof mainConfig.refs=="object"&&(metadata.refCount=Object.keys(mainConfig.refs).length),typeof mainConfig.features=="object"&&(metadata.features=mainConfig.features);let addons={};mainConfig.addons&&mainConfig.addons.forEach(addon=>{let addonName,options;typeof addon=="string"?addonName=sanitizeAddonName(addon):(addon.name.includes("addon-essentials")&&(options=addon.options),addonName=sanitizeAddonName(addon.name)),addons[addonName]={options,version:void 0};});let chromaticVersionSpecifier=getChromaticVersionSpecifier(packageJson);chromaticVersionSpecifier&&(addons.chromatic={version:void 0,versionSpecifier:chromaticVersionSpecifier,options:void 0}),(await getActualPackageVersions(addons)).forEach(({name,version})=>{addons[name].version=version;});let addonNames=Object.keys(addons),storybookPackages=Object.keys(allDependencies).filter(dep=>dep.includes("storybook")&&!addonNames.includes(dep)).reduce((acc,dep)=>({...acc,[dep]:{version:void 0}}),{});(await getActualPackageVersions(storybookPackages)).forEach(({name,version})=>{storybookPackages[name].version=version;});let language=allDependencies.typescript?"typescript":"javascript",hasStorybookEslint=!!allDependencies["eslint-plugin-storybook"],storybookInfo=getStorybookInfo(packageJson);try{let{previewConfig}=storybookInfo;if(previewConfig){let config=await readConfig(previewConfig),usesGlobals=!!(config.getFieldNode(["globals"])||config.getFieldNode(["globalTypes"]));metadata.preview={...metadata.preview,usesGlobals};}}catch{}let storybookVersion=storybookPackages[storybookInfo.frameworkPackage]?.version;return {...metadata,...frameworkInfo,storybookVersion,storybookVersionSpecifier:storybookInfo.version,language,storybookPackages,addons,hasStorybookEslint}},cachedMetadata,getStorybookMetadata=async _configDir=>{if(cachedMetadata)return cachedMetadata;let{packageJson={}}=readPkgUp.sync({cwd:process.cwd(),normalize:!1})||{},configDir=(_configDir||getStorybookConfiguration(packageJson?.scripts?.storybook||"","-c","--config-dir"))??".storybook",mainConfig=await loadMainConfig({configDir});return cachedMetadata=await computeStorybookMetadata({mainConfig,packageJson}),cachedMetadata};function dataUriToBuffer(uri){if(!/^data:/i.test(uri))throw new TypeError('`uri` does not appear to be a Data URI (must begin with "data:")');uri=uri.replace(/\r?\n/g,"");let firstComma=uri.indexOf(",");if(firstComma===-1||firstComma<=4)throw new TypeError("malformed data: URI");let meta=uri.substring(5,firstComma).split(";"),charset="",base64=!1,type=meta[0]||"text/plain",typeFull=type;for(let i=1;i<meta.length;i++)meta[i]==="base64"?base64=!0:meta[i]&&(typeFull+=`;${meta[i]}`,meta[i].indexOf("charset=")===0&&(charset=meta[i].substring(8)));!meta[0]&&!charset.length&&(typeFull+=";charset=US-ASCII",charset="US-ASCII");let encoding=base64?"base64":"ascii",data=unescape(uri.substring(firstComma+1)),buffer=Buffer.from(data,encoding);return buffer.type=type,buffer.typeFull=typeFull,buffer.charset=charset,buffer}var dist_default=dataUriToBuffer;var FetchBaseError=class extends Error{constructor(message,type){super(message),Error.captureStackTrace(this,this.constructor),this.type=type;}get name(){return this.constructor.name}get[Symbol.toStringTag](){return this.constructor.name}};var FetchError=class extends FetchBaseError{constructor(message,type,systemError){super(message,type),systemError&&(this.code=this.errno=systemError.code,this.erroredSysCall=systemError.syscall);}};var NAME=Symbol.toStringTag,isURLSearchParameters=object=>typeof object=="object"&&typeof object.append=="function"&&typeof object.delete=="function"&&typeof object.get=="function"&&typeof object.getAll=="function"&&typeof object.has=="function"&&typeof object.set=="function"&&typeof object.sort=="function"&&object[NAME]==="URLSearchParams",isBlob=object=>object&&typeof object=="object"&&typeof object.arrayBuffer=="function"&&typeof object.type=="string"&&typeof object.stream=="function"&&typeof object.constructor=="function"&&/^(Blob|File)$/.test(object[NAME]),isAbortSignal=object=>typeof object=="object"&&(object[NAME]==="AbortSignal"||object[NAME]==="EventTarget"),isDomainOrSubdomain=(destination,original)=>{let orig=new URL(original).hostname,dest=new URL(destination).hostname;return orig===dest||orig.endsWith(`.${dest}`)},isSameProtocol=(destination,original)=>{let orig=new URL(original).protocol,dest=new URL(destination).protocol;return orig===dest};var pipeline=promisify(Stream.pipeline),INTERNALS=Symbol("Body internals"),Body=class{constructor(body,{size=0}={}){let boundary=null;body===null?body=null:isURLSearchParameters(body)?body=Buffer$1.from(body.toString()):isBlob(body)||Buffer$1.isBuffer(body)||(types.isAnyArrayBuffer(body)?body=Buffer$1.from(body):ArrayBuffer.isView(body)?body=Buffer$1.from(body.buffer,body.byteOffset,body.byteLength):body instanceof Stream||(body instanceof FormData?(body=formDataToBlob(body),boundary=body.type.split("=")[1]):body=Buffer$1.from(String(body))));let stream=body;Buffer$1.isBuffer(body)?stream=Stream.Readable.from(body):isBlob(body)&&(stream=Stream.Readable.from(body.stream())),this[INTERNALS]={body,stream,boundary,disturbed:!1,error:null},this.size=size,body instanceof Stream&&body.on("error",error_=>{let error=error_ instanceof FetchBaseError?error_:new FetchError(`Invalid response body while trying to fetch ${this.url}: ${error_.message}`,"system",error_);this[INTERNALS].error=error;});}get body(){return this[INTERNALS].stream}get bodyUsed(){return this[INTERNALS].disturbed}async arrayBuffer(){let{buffer,byteOffset,byteLength}=await consumeBody(this);return buffer.slice(byteOffset,byteOffset+byteLength)}async formData(){let ct=this.headers.get("content-type");if(ct.startsWith("application/x-www-form-urlencoded")){let formData=new FormData,parameters=new URLSearchParams(await this.text());for(let[name,value]of parameters)formData.append(name,value);return formData}let{toFormData}=await import('./multipart-parser-SN27IDO3.mjs');return toFormData(this.body,ct)}async blob(){let ct=this.headers&&this.headers.get("content-type")||this[INTERNALS].body&&this[INTERNALS].body.type||"",buf=await this.arrayBuffer();return new fetch_blob_default([buf],{type:ct})}async json(){let text=await this.text();return JSON.parse(text)}async text(){let buffer=await consumeBody(this);return new TextDecoder().decode(buffer)}buffer(){return consumeBody(this)}};Body.prototype.buffer=deprecate(Body.prototype.buffer,"Please use 'response.arrayBuffer()' instead of 'response.buffer()'","node-fetch#buffer");Object.defineProperties(Body.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0},data:{get:deprecate(()=>{},"data doesn't exist, use json(), text(), arrayBuffer(), or body instead","https://github.com/node-fetch/node-fetch/issues/1000 (response)")}});async function consumeBody(data){if(data[INTERNALS].disturbed)throw new TypeError(`body used already for: ${data.url}`);if(data[INTERNALS].disturbed=!0,data[INTERNALS].error)throw data[INTERNALS].error;let{body}=data;if(body===null)return Buffer$1.alloc(0);if(!(body instanceof Stream))return Buffer$1.alloc(0);let accum=[],accumBytes=0;try{for await(let chunk of body){if(data.size>0&&accumBytes+chunk.length>data.size){let error=new FetchError(`content size at ${data.url} over limit: ${data.size}`,"max-size");throw body.destroy(error),error}accumBytes+=chunk.length,accum.push(chunk);}}catch(error){throw error instanceof FetchBaseError?error:new FetchError(`Invalid response body while trying to fetch ${data.url}: ${error.message}`,"system",error)}if(body.readableEnded===!0||body._readableState.ended===!0)try{return accum.every(c=>typeof c=="string")?Buffer$1.from(accum.join("")):Buffer$1.concat(accum,accumBytes)}catch(error){throw new FetchError(`Could not create Buffer from response body for ${data.url}: ${error.message}`,"system",error)}else throw new FetchError(`Premature close of server response while trying to fetch ${data.url}`)}var clone=(instance,highWaterMark)=>{let p1,p2,{body}=instance[INTERNALS];if(instance.bodyUsed)throw new Error("cannot clone body after it is used");return body instanceof Stream&&typeof body.getBoundary!="function"&&(p1=new PassThrough({highWaterMark}),p2=new PassThrough({highWaterMark}),body.pipe(p1),body.pipe(p2),instance[INTERNALS].stream=p1,body=p2),body},getNonSpecFormDataBoundary=deprecate(body=>body.getBoundary(),"form-data doesn't follow the spec and requires special treatment. Use alternative package","https://github.com/node-fetch/node-fetch/issues/1167"),extractContentType=(body,request)=>body===null?null:typeof body=="string"?"text/plain;charset=UTF-8":isURLSearchParameters(body)?"application/x-www-form-urlencoded;charset=UTF-8":isBlob(body)?body.type||null:Buffer$1.isBuffer(body)||types.isAnyArrayBuffer(body)||ArrayBuffer.isView(body)?null:body instanceof FormData?`multipart/form-data; boundary=${request[INTERNALS].boundary}`:body&&typeof body.getBoundary=="function"?`multipart/form-data;boundary=${getNonSpecFormDataBoundary(body)}`:body instanceof Stream?null:"text/plain;charset=UTF-8",getTotalBytes=request=>{let{body}=request[INTERNALS];return body===null?0:isBlob(body)?body.size:Buffer$1.isBuffer(body)?body.length:body&&typeof body.getLengthSync=="function"&&body.hasKnownLength&&body.hasKnownLength()?body.getLengthSync():null},writeToStream=async(dest,{body})=>{body===null?dest.end():await pipeline(body,dest);};var validateHeaderName=typeof http.validateHeaderName=="function"?http.validateHeaderName:name=>{if(!/^[\^`\-\w!#$%&'*+.|~]+$/.test(name)){let error=new TypeError(`Header name must be a valid HTTP token [${name}]`);throw Object.defineProperty(error,"code",{value:"ERR_INVALID_HTTP_TOKEN"}),error}},validateHeaderValue=typeof http.validateHeaderValue=="function"?http.validateHeaderValue:(name,value)=>{if(/[^\t\u0020-\u007E\u0080-\u00FF]/.test(value)){let error=new TypeError(`Invalid character in header content ["${name}"]`);throw Object.defineProperty(error,"code",{value:"ERR_INVALID_CHAR"}),error}},Headers=class _Headers extends URLSearchParams{constructor(init){let result=[];if(init instanceof _Headers){let raw=init.raw();for(let[name,values]of Object.entries(raw))result.push(...values.map(value=>[name,value]));}else if(init!=null)if(typeof init=="object"&&!types.isBoxedPrimitive(init)){let method=init[Symbol.iterator];if(method==null)result.push(...Object.entries(init));else {if(typeof method!="function")throw new TypeError("Header pairs must be iterable");result=[...init].map(pair=>{if(typeof pair!="object"||types.isBoxedPrimitive(pair))throw new TypeError("Each header pair must be an iterable object");return [...pair]}).map(pair=>{if(pair.length!==2)throw new TypeError("Each header pair must be a name/value tuple");return [...pair]});}}else throw new TypeError("Failed to construct 'Headers': The provided value is not of type '(sequence<sequence<ByteString>> or record<ByteString, ByteString>)");return result=result.length>0?result.map(([name,value])=>(validateHeaderName(name),validateHeaderValue(name,String(value)),[String(name).toLowerCase(),String(value)])):void 0,super(result),new Proxy(this,{get(target,p,receiver){switch(p){case"append":case"set":return (name,value)=>(validateHeaderName(name),validateHeaderValue(name,String(value)),URLSearchParams.prototype[p].call(target,String(name).toLowerCase(),String(value)));case"delete":case"has":case"getAll":return name=>(validateHeaderName(name),URLSearchParams.prototype[p].call(target,String(name).toLowerCase()));case"keys":return ()=>(target.sort(),new Set(URLSearchParams.prototype.keys.call(target)).keys());default:return Reflect.get(target,p,receiver)}}})}get[Symbol.toStringTag](){return this.constructor.name}toString(){return Object.prototype.toString.call(this)}get(name){let values=this.getAll(name);if(values.length===0)return null;let value=values.join(", ");return /^content-encoding$/i.test(name)&&(value=value.toLowerCase()),value}forEach(callback,thisArg=void 0){for(let name of this.keys())Reflect.apply(callback,thisArg,[this.get(name),name,this]);}*values(){for(let name of this.keys())yield this.get(name);}*entries(){for(let name of this.keys())yield [name,this.get(name)];}[Symbol.iterator](){return this.entries()}raw(){return [...this.keys()].reduce((result,key)=>(result[key]=this.getAll(key),result),{})}[Symbol.for("nodejs.util.inspect.custom")](){return [...this.keys()].reduce((result,key)=>{let values=this.getAll(key);return key==="host"?result[key]=values[0]:result[key]=values.length>1?values:values[0],result},{})}};Object.defineProperties(Headers.prototype,["get","entries","forEach","values"].reduce((result,property)=>(result[property]={enumerable:!0},result),{}));function fromRawHeaders(headers=[]){return new Headers(headers.reduce((result,value,index,array)=>(index%2===0&&result.push(array.slice(index,index+2)),result),[]).filter(([name,value])=>{try{return validateHeaderName(name),validateHeaderValue(name,String(value)),!0}catch{return !1}}))}var redirectStatus=new Set([301,302,303,307,308]),isRedirect=code=>redirectStatus.has(code);var INTERNALS2=Symbol("Response internals"),Response=class _Response extends Body{constructor(body=null,options={}){super(body,options);let status=options.status!=null?options.status:200,headers=new Headers(options.headers);if(body!==null&&!headers.has("Content-Type")){let contentType=extractContentType(body,this);contentType&&headers.append("Content-Type",contentType);}this[INTERNALS2]={type:"default",url:options.url,status,statusText:options.statusText||"",headers,counter:options.counter,highWaterMark:options.highWaterMark};}get type(){return this[INTERNALS2].type}get url(){return this[INTERNALS2].url||""}get status(){return this[INTERNALS2].status}get ok(){return this[INTERNALS2].status>=200&&this[INTERNALS2].status<300}get redirected(){return this[INTERNALS2].counter>0}get statusText(){return this[INTERNALS2].statusText}get headers(){return this[INTERNALS2].headers}get highWaterMark(){return this[INTERNALS2].highWaterMark}clone(){return new _Response(clone(this,this.highWaterMark),{type:this.type,url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected,size:this.size,highWaterMark:this.highWaterMark})}static redirect(url,status=302){if(!isRedirect(status))throw new RangeError('Failed to execute "redirect" on "response": Invalid status code');return new _Response(null,{headers:{location:new URL(url).toString()},status})}static error(){let response=new _Response(null,{status:0,statusText:""});return response[INTERNALS2].type="error",response}static json(data=void 0,init={}){let body=JSON.stringify(data);if(body===void 0)throw new TypeError("data is not JSON serializable");let headers=new Headers(init&&init.headers);return headers.has("content-type")||headers.set("content-type","application/json"),new _Response(body,{...init,headers})}get[Symbol.toStringTag](){return "Response"}};Object.defineProperties(Response.prototype,{type:{enumerable:!0},url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});var getSearch=parsedURL=>{if(parsedURL.search)return parsedURL.search;let lastOffset=parsedURL.href.length-1,hash=parsedURL.hash||(parsedURL.href[lastOffset]==="#"?"#":"");return parsedURL.href[lastOffset-hash.length]==="?"?"?":""};function stripURLForUseAsAReferrer(url,originOnly=!1){return url==null||(url=new URL(url),/^(about|blob|data):$/.test(url.protocol))?"no-referrer":(url.username="",url.password="",url.hash="",originOnly&&(url.pathname="",url.search=""),url)}var ReferrerPolicy=new Set(["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"]),DEFAULT_REFERRER_POLICY="strict-origin-when-cross-origin";function validateReferrerPolicy(referrerPolicy){if(!ReferrerPolicy.has(referrerPolicy))throw new TypeError(`Invalid referrerPolicy: ${referrerPolicy}`);return referrerPolicy}function isOriginPotentiallyTrustworthy(url){if(/^(http|ws)s:$/.test(url.protocol))return !0;let hostIp=url.host.replace(/(^\[)|(]$)/g,""),hostIPVersion=isIP(hostIp);return hostIPVersion===4&&/^127\./.test(hostIp)||hostIPVersion===6&&/^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(hostIp)?!0:url.host==="localhost"||url.host.endsWith(".localhost")?!1:url.protocol==="file:"}function isUrlPotentiallyTrustworthy(url){return /^about:(blank|srcdoc)$/.test(url)||url.protocol==="data:"||/^(blob|filesystem):$/.test(url.protocol)?!0:isOriginPotentiallyTrustworthy(url)}function determineRequestsReferrer(request,{referrerURLCallback,referrerOriginCallback}={}){if(request.referrer==="no-referrer"||request.referrerPolicy==="")return null;let policy=request.referrerPolicy;if(request.referrer==="about:client")return "no-referrer";let referrerSource=request.referrer,referrerURL=stripURLForUseAsAReferrer(referrerSource),referrerOrigin=stripURLForUseAsAReferrer(referrerSource,!0);referrerURL.toString().length>4096&&(referrerURL=referrerOrigin),referrerURLCallback&&(referrerURL=referrerURLCallback(referrerURL)),referrerOriginCallback&&(referrerOrigin=referrerOriginCallback(referrerOrigin));let currentURL=new URL(request.url);switch(policy){case"no-referrer":return "no-referrer";case"origin":return referrerOrigin;case"unsafe-url":return referrerURL;case"strict-origin":return isUrlPotentiallyTrustworthy(referrerURL)&&!isUrlPotentiallyTrustworthy(currentURL)?"no-referrer":referrerOrigin.toString();case"strict-origin-when-cross-origin":return referrerURL.origin===currentURL.origin?referrerURL:isUrlPotentiallyTrustworthy(referrerURL)&&!isUrlPotentiallyTrustworthy(currentURL)?"no-referrer":referrerOrigin;case"same-origin":return referrerURL.origin===currentURL.origin?referrerURL:"no-referrer";case"origin-when-cross-origin":return referrerURL.origin===currentURL.origin?referrerURL:referrerOrigin;case"no-referrer-when-downgrade":return isUrlPotentiallyTrustworthy(referrerURL)&&!isUrlPotentiallyTrustworthy(currentURL)?"no-referrer":referrerURL;default:throw new TypeError(`Invalid referrerPolicy: ${policy}`)}}function parseReferrerPolicyFromHeader(headers){let policyTokens=(headers.get("referrer-policy")||"").split(/[,\s]+/),policy="";for(let token of policyTokens)token&&ReferrerPolicy.has(token)&&(policy=token);return policy}var INTERNALS3=Symbol("Request internals"),isRequest=object=>typeof object=="object"&&typeof object[INTERNALS3]=="object",doBadDataWarn=deprecate(()=>{},".data is not a valid RequestInit property, use .body instead","https://github.com/node-fetch/node-fetch/issues/1000 (request)"),Request=class _Request extends Body{constructor(input,init={}){let parsedURL;if(isRequest(input)?parsedURL=new URL(input.url):(parsedURL=new URL(input),input={}),parsedURL.username!==""||parsedURL.password!=="")throw new TypeError(`${parsedURL} is an url with embedded credentials.`);let method=init.method||input.method||"GET";if(/^(delete|get|head|options|post|put)$/i.test(method)&&(method=method.toUpperCase()),!isRequest(init)&&"data"in init&&doBadDataWarn(),(init.body!=null||isRequest(input)&&input.body!==null)&&(method==="GET"||method==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let inputBody=init.body?init.body:isRequest(input)&&input.body!==null?clone(input):null;super(inputBody,{size:init.size||input.size||0});let headers=new Headers(init.headers||input.headers||{});if(inputBody!==null&&!headers.has("Content-Type")){let contentType=extractContentType(inputBody,this);contentType&&headers.set("Content-Type",contentType);}let signal=isRequest(input)?input.signal:null;if("signal"in init&&(signal=init.signal),signal!=null&&!isAbortSignal(signal))throw new TypeError("Expected signal to be an instanceof AbortSignal or EventTarget");let referrer=init.referrer==null?input.referrer:init.referrer;if(referrer==="")referrer="no-referrer";else if(referrer){let parsedReferrer=new URL(referrer);referrer=/^about:(\/\/)?client$/.test(parsedReferrer)?"client":parsedReferrer;}else referrer=void 0;this[INTERNALS3]={method,redirect:init.redirect||input.redirect||"follow",headers,parsedURL,signal,referrer},this.follow=init.follow===void 0?input.follow===void 0?20:input.follow:init.follow,this.compress=init.compress===void 0?input.compress===void 0?!0:input.compress:init.compress,this.counter=init.counter||input.counter||0,this.agent=init.agent||input.agent,this.highWaterMark=init.highWaterMark||input.highWaterMark||16384,this.insecureHTTPParser=init.insecureHTTPParser||input.insecureHTTPParser||!1,this.referrerPolicy=init.referrerPolicy||input.referrerPolicy||"";}get method(){return this[INTERNALS3].method}get url(){return format(this[INTERNALS3].parsedURL)}get headers(){return this[INTERNALS3].headers}get redirect(){return this[INTERNALS3].redirect}get signal(){return this[INTERNALS3].signal}get referrer(){if(this[INTERNALS3].referrer==="no-referrer")return "";if(this[INTERNALS3].referrer==="client")return "about:client";if(this[INTERNALS3].referrer)return this[INTERNALS3].referrer.toString()}get referrerPolicy(){return this[INTERNALS3].referrerPolicy}set referrerPolicy(referrerPolicy){this[INTERNALS3].referrerPolicy=validateReferrerPolicy(referrerPolicy);}clone(){return new _Request(this)}get[Symbol.toStringTag](){return "Request"}};Object.defineProperties(Request.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0},referrer:{enumerable:!0},referrerPolicy:{enumerable:!0}});var getNodeRequestOptions=request=>{let{parsedURL}=request[INTERNALS3],headers=new Headers(request[INTERNALS3].headers);headers.has("Accept")||headers.set("Accept","*/*");let contentLengthValue=null;if(request.body===null&&/^(post|put)$/i.test(request.method)&&(contentLengthValue="0"),request.body!==null){let totalBytes=getTotalBytes(request);typeof totalBytes=="number"&&!Number.isNaN(totalBytes)&&(contentLengthValue=String(totalBytes));}contentLengthValue&&headers.set("Content-Length",contentLengthValue),request.referrerPolicy===""&&(request.referrerPolicy=DEFAULT_REFERRER_POLICY),request.referrer&&request.referrer!=="no-referrer"?request[INTERNALS3].referrer=determineRequestsReferrer(request):request[INTERNALS3].referrer="no-referrer",request[INTERNALS3].referrer instanceof URL&&headers.set("Referer",request.referrer),headers.has("User-Agent")||headers.set("User-Agent","node-fetch"),request.compress&&!headers.has("Accept-Encoding")&&headers.set("Accept-Encoding","gzip, deflate, br");let{agent}=request;typeof agent=="function"&&(agent=agent(parsedURL));let search=getSearch(parsedURL),options={path:parsedURL.pathname+search,method:request.method,headers:headers[Symbol.for("nodejs.util.inspect.custom")](),insecureHTTPParser:request.insecureHTTPParser,agent};return {parsedURL,options}};var AbortError=class extends FetchBaseError{constructor(message,type="aborted"){super(message,type);}};var supportedSchemas=new Set(["data:","http:","https:"]);async function fetch(url,options_){return new Promise((resolve,reject)=>{let request=new Request(url,options_),{parsedURL,options}=getNodeRequestOptions(request);if(!supportedSchemas.has(parsedURL.protocol))throw new TypeError(`node-fetch cannot load ${url}. URL scheme "${parsedURL.protocol.replace(/:$/,"")}" is not supported.`);if(parsedURL.protocol==="data:"){let data=dist_default(request.url),response2=new Response(data,{headers:{"Content-Type":data.typeFull}});resolve(response2);return}let send=(parsedURL.protocol==="https:"?https:http).request,{signal}=request,response=null,abort=()=>{let error=new AbortError("The operation was aborted.");reject(error),request.body&&request.body instanceof Stream.Readable&&request.body.destroy(error),!(!response||!response.body)&&response.body.emit("error",error);};if(signal&&signal.aborted){abort();return}let abortAndFinalize=()=>{abort(),finalize();},request_=send(parsedURL.toString(),options);signal&&signal.addEventListener("abort",abortAndFinalize);let finalize=()=>{request_.abort(),signal&&signal.removeEventListener("abort",abortAndFinalize);};request_.on("error",error=>{reject(new FetchError(`request to ${request.url} failed, reason: ${error.message}`,"system",error)),finalize();}),fixResponseChunkedTransferBadEnding(request_,error=>{response&&response.body&&response.body.destroy(error);}),process.version<"v14"&&request_.on("socket",s=>{let endedWithEventsCount;s.prependListener("end",()=>{endedWithEventsCount=s._eventsCount;}),s.prependListener("close",hadError=>{if(response&&endedWithEventsCount<s._eventsCount&&!hadError){let error=new Error("Premature close");error.code="ERR_STREAM_PREMATURE_CLOSE",response.body.emit("error",error);}});}),request_.on("response",response_=>{request_.setTimeout(0);let headers=fromRawHeaders(response_.rawHeaders);if(isRedirect(response_.statusCode)){let location=headers.get("Location"),locationURL=null;try{locationURL=location===null?null:new URL(location,request.url);}catch{if(request.redirect!=="manual"){reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`,"invalid-redirect")),finalize();return}}switch(request.redirect){case"error":reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`,"no-redirect")),finalize();return;case"manual":break;case"follow":{if(locationURL===null)break;if(request.counter>=request.follow){reject(new FetchError(`maximum redirect reached at: ${request.url}`,"max-redirect")),finalize();return}let requestOptions={headers:new Headers(request.headers),follow:request.follow,counter:request.counter+1,agent:request.agent,compress:request.compress,method:request.method,body:clone(request),signal:request.signal,size:request.size,referrer:request.referrer,referrerPolicy:request.referrerPolicy};if(!isDomainOrSubdomain(request.url,locationURL)||!isSameProtocol(request.url,locationURL))for(let name of ["authorization","www-authenticate","cookie","cookie2"])requestOptions.headers.delete(name);if(response_.statusCode!==303&&request.body&&options_.body instanceof Stream.Readable){reject(new FetchError("Cannot follow redirect with body being a readable stream","unsupported-redirect")),finalize();return}(response_.statusCode===303||(response_.statusCode===301||response_.statusCode===302)&&request.method==="POST")&&(requestOptions.method="GET",requestOptions.body=void 0,requestOptions.headers.delete("content-length"));let responseReferrerPolicy=parseReferrerPolicyFromHeader(headers);responseReferrerPolicy&&(requestOptions.referrerPolicy=responseReferrerPolicy),resolve(fetch(new Request(locationURL,requestOptions))),finalize();return}default:return reject(new TypeError(`Redirect option '${request.redirect}' is not a valid value of RequestRedirect`))}}signal&&response_.once("end",()=>{signal.removeEventListener("abort",abortAndFinalize);});let body=pipeline$1(response_,new PassThrough,error=>{error&&reject(error);});process.version<"v12.10"&&response_.on("aborted",abortAndFinalize);let responseOptions={url:request.url,status:response_.statusCode,statusText:response_.statusMessage,headers,size:request.size,counter:request.counter,highWaterMark:request.highWaterMark},codings=headers.get("Content-Encoding");if(!request.compress||request.method==="HEAD"||codings===null||response_.statusCode===204||response_.statusCode===304){response=new Response(body,responseOptions),resolve(response);return}let zlibOptions={flush:zlib.Z_SYNC_FLUSH,finishFlush:zlib.Z_SYNC_FLUSH};if(codings==="gzip"||codings==="x-gzip"){body=pipeline$1(body,zlib.createGunzip(zlibOptions),error=>{error&&reject(error);}),response=new Response(body,responseOptions),resolve(response);return}if(codings==="deflate"||codings==="x-deflate"){let raw=pipeline$1(response_,new PassThrough,error=>{error&&reject(error);});raw.once("data",chunk=>{(chunk[0]&15)===8?body=pipeline$1(body,zlib.createInflate(),error=>{error&&reject(error);}):body=pipeline$1(body,zlib.createInflateRaw(),error=>{error&&reject(error);}),response=new Response(body,responseOptions),resolve(response);}),raw.once("end",()=>{response||(response=new Response(body,responseOptions),resolve(response));});return}if(codings==="br"){body=pipeline$1(body,zlib.createBrotliDecompress(),error=>{error&&reject(error);}),response=new Response(body,responseOptions),resolve(response);return}response=new Response(body,responseOptions),resolve(response);}),writeToStream(request_,request).catch(reject);})}function fixResponseChunkedTransferBadEnding(request,errorCallback){let LAST_CHUNK=Buffer$1.from(`0\r
|
24
|
+
var getActualPackageVersions=async packages=>{let packageNames=Object.keys(packages);return Promise.all(packageNames.map(getActualPackageVersion))},getActualPackageVersion=async packageName=>{try{let packageJson=await getActualPackageJson(packageName);return {name:packageName,version:packageJson.version}}catch{return {name:packageName,version:null}}},getActualPackageJson=async packageName=>{let resolvedPackageJson=__require.resolve(path2.join(packageName,"package.json"),{paths:[process.cwd()]});return await fs2.readJson(resolvedPackageJson)};var monorepoConfigs={Nx:"nx.json",Turborepo:"turbo.json",Lerna:"lerna.json",Rush:"rush.json",Lage:"lage.config.json"},getMonorepoType=()=>{let projectRootPath=getProjectRoot();if(!projectRootPath)return;let monorepoType=Object.keys(monorepoConfigs).find(monorepo=>{let configFile=path2.join(projectRootPath,monorepoConfigs[monorepo]);return fs2__default.existsSync(configFile)});if(monorepoType)return monorepoType;if(!fs2__default.existsSync(path2.join(projectRootPath,"package.json")))return;if(fs2__default.readJsonSync(path2.join(projectRootPath,"package.json"))?.workspaces)return "Workspaces"};function regexpEscape(str){return str.replace(/[-[/{}()*+?.\\^$|]/g,"\\$&")}function removeAnsiEscapeCodes(input=""){return input.replace(/\u001B\[[0-9;]*m/g,"")}function cleanPaths(str,separator=path2.sep){if(!str)return str;let stack=process.cwd().split(separator);for(;stack.length>1;){let currentPath=stack.join(separator),currentRegex=new RegExp(regexpEscape(currentPath),"gi");str=str.replace(currentRegex,"$SNIP");let currentPath2=stack.join(separator+separator),currentRegex2=new RegExp(regexpEscape(currentPath2),"gi");str=str.replace(currentRegex2,"$SNIP"),stack.pop();}return str}function sanitizeError(error,pathSeparator=path2.sep){try{error={...JSON.parse(JSON.stringify(error)),message:removeAnsiEscapeCodes(error.message),stack:removeAnsiEscapeCodes(error.stack),cause:error.cause,name:error.name};let errorString=cleanPaths(JSON.stringify(error),pathSeparator);return JSON.parse(errorString)}catch(err){return `Sanitization error: ${err?.message}`}}var knownRenderers=["html","react","svelte","vue3","preact","server","vue","web-components","angular","ember"],knownBuilders=["builder-webpack5","builder-vite"];function findMatchingPackage(packageJson,suffixes){let{name="",version,dependencies,devDependencies,peerDependencies}=packageJson,allDependencies={[name]:version,...dependencies,...devDependencies,...peerDependencies};return suffixes.map(suffix=>`@storybook/${suffix}`).find(pkg=>allDependencies[pkg])}var getFrameworkPackageName=packageNameOrPath=>{let normalizedPath=path2.normalize(packageNameOrPath).replace(new RegExp(/\\/,"g"),"/");return Object.keys(frameworkPackages).find(pkg=>normalizedPath.endsWith(pkg))||cleanPaths(packageNameOrPath).replace(/.*node_modules[\\/]/,"")};async function getFrameworkInfo(mainConfig){if(!mainConfig?.framework)return {};let rawName=typeof mainConfig.framework=="string"?mainConfig.framework:mainConfig.framework?.name;if(!rawName)return {};let frameworkPackageJson=await getActualPackageJson(rawName);if(!frameworkPackageJson)return {};let builder=findMatchingPackage(frameworkPackageJson,knownBuilders),renderer=findMatchingPackage(frameworkPackageJson,knownRenderers),sanitizedFrameworkName=getFrameworkPackageName(rawName),frameworkOptions=typeof mainConfig.framework=="object"?mainConfig.framework.options:{};return {framework:{name:sanitizedFrameworkName,options:frameworkOptions},builder,renderer}}function getChromaticVersionSpecifier(packageJson){let dependency=packageJson.dependencies?.chromatic||packageJson.devDependencies?.chromatic||packageJson.peerDependencies?.chromatic;return dependency||(packageJson.scripts&&Object.values(packageJson.scripts).find(s=>s?.match(/chromatic/))?"latest":void 0)}var metaFrameworks={next:"Next","react-scripts":"CRA",gatsby:"Gatsby","@nuxtjs/storybook":"nuxt","@nrwl/storybook":"nx","@vue/cli-service":"vue-cli","@sveltejs/kit":"sveltekit"},sanitizeAddonName=name=>cleanPaths(name).replace(/\/dist\/.*/,"").replace(/\.[mc]?[tj]?s[x]?$/,"").replace(/\/register$/,"").replace(/\/manager$/,"").replace(/\/preset$/,""),computeStorybookMetadata=async({packageJson,mainConfig})=>{let metadata={generatedAt:new Date().getTime(),hasCustomBabel:!1,hasCustomWebpack:!1,hasStaticDirs:!1,hasStorybookEslint:!1,refCount:0},allDependencies={...packageJson?.dependencies,...packageJson?.devDependencies,...packageJson?.peerDependencies},metaFramework=Object.keys(allDependencies).find(dep=>!!metaFrameworks[dep]);if(metaFramework){let{version}=await getActualPackageVersion(metaFramework);metadata.metaFramework={name:metaFrameworks[metaFramework],packageName:metaFramework,version};}let testPackages=["playwright","vitest","jest","cypress","nightwatch","webdriver","@web/test-runner","puppeteer","karma","jasmine","chai","testing-library","@ngneat/spectator","wdio","msw","miragejs","sinon"],testPackageDeps=Object.keys(allDependencies).filter(dep=>testPackages.find(pkg=>dep.includes(pkg)));metadata.testPackages=Object.fromEntries(await Promise.all(testPackageDeps.map(async dep=>[dep,(await getActualPackageVersion(dep))?.version])));let monorepoType=getMonorepoType();monorepoType&&(metadata.monorepo=monorepoType);try{let packageManagerType=await detect({cwd:getProjectRoot()}),packageManagerVerson=await getNpmVersion(packageManagerType);metadata.packageManager={type:packageManagerType,version:packageManagerVerson};}catch{}metadata.hasCustomBabel=!!mainConfig.babel,metadata.hasCustomWebpack=!!mainConfig.webpackFinal,metadata.hasStaticDirs=!!mainConfig.staticDirs,typeof mainConfig.typescript=="object"&&(metadata.typescriptOptions=mainConfig.typescript);let frameworkInfo=await getFrameworkInfo(mainConfig);typeof mainConfig.refs=="object"&&(metadata.refCount=Object.keys(mainConfig.refs).length),typeof mainConfig.features=="object"&&(metadata.features=mainConfig.features);let addons={};mainConfig.addons&&mainConfig.addons.forEach(addon=>{let addonName,options;typeof addon=="string"?addonName=sanitizeAddonName(addon):(addon.name.includes("addon-essentials")&&(options=addon.options),addonName=sanitizeAddonName(addon.name)),addons[addonName]={options,version:void 0};});let chromaticVersionSpecifier=getChromaticVersionSpecifier(packageJson);chromaticVersionSpecifier&&(addons.chromatic={version:void 0,versionSpecifier:chromaticVersionSpecifier,options:void 0}),(await getActualPackageVersions(addons)).forEach(({name,version})=>{addons[name].version=version;});let addonNames=Object.keys(addons),storybookPackages=Object.keys(allDependencies).filter(dep=>dep.includes("storybook")&&!addonNames.includes(dep)).reduce((acc,dep)=>({...acc,[dep]:{version:void 0}}),{});(await getActualPackageVersions(storybookPackages)).forEach(({name,version})=>{storybookPackages[name].version=version;});let language=allDependencies.typescript?"typescript":"javascript",hasStorybookEslint=!!allDependencies["eslint-plugin-storybook"],storybookInfo=getStorybookInfo(packageJson);try{let{previewConfig}=storybookInfo;if(previewConfig){let config=await readConfig(previewConfig),usesGlobals=!!(config.getFieldNode(["globals"])||config.getFieldNode(["globalTypes"]));metadata.preview={...metadata.preview,usesGlobals};}}catch{}let storybookVersion=storybookPackages[storybookInfo.frameworkPackage]?.version;return {...metadata,...frameworkInfo,storybookVersion,storybookVersionSpecifier:storybookInfo.version,language,storybookPackages,addons,hasStorybookEslint}},cachedMetadata,getStorybookMetadata=async _configDir=>{if(cachedMetadata)return cachedMetadata;let{packageJson={}}=readPkgUp.sync({cwd:process.cwd(),normalize:!1})||{},configDir=(_configDir||getStorybookConfiguration(packageJson?.scripts?.storybook||"","-c","--config-dir"))??".storybook",mainConfig=await loadMainConfig({configDir});return cachedMetadata=await computeStorybookMetadata({mainConfig,packageJson}),cachedMetadata};function dataUriToBuffer(uri){if(!/^data:/i.test(uri))throw new TypeError('`uri` does not appear to be a Data URI (must begin with "data:")');uri=uri.replace(/\r?\n/g,"");let firstComma=uri.indexOf(",");if(firstComma===-1||firstComma<=4)throw new TypeError("malformed data: URI");let meta=uri.substring(5,firstComma).split(";"),charset="",base64=!1,type=meta[0]||"text/plain",typeFull=type;for(let i=1;i<meta.length;i++)meta[i]==="base64"?base64=!0:meta[i]&&(typeFull+=`;${meta[i]}`,meta[i].indexOf("charset=")===0&&(charset=meta[i].substring(8)));!meta[0]&&!charset.length&&(typeFull+=";charset=US-ASCII",charset="US-ASCII");let encoding=base64?"base64":"ascii",data=unescape(uri.substring(firstComma+1)),buffer=Buffer.from(data,encoding);return buffer.type=type,buffer.typeFull=typeFull,buffer.charset=charset,buffer}var dist_default=dataUriToBuffer;var FetchBaseError=class extends Error{constructor(message,type){super(message),Error.captureStackTrace(this,this.constructor),this.type=type;}get name(){return this.constructor.name}get[Symbol.toStringTag](){return this.constructor.name}};var FetchError=class extends FetchBaseError{constructor(message,type,systemError){super(message,type),systemError&&(this.code=this.errno=systemError.code,this.erroredSysCall=systemError.syscall);}};var NAME=Symbol.toStringTag,isURLSearchParameters=object=>typeof object=="object"&&typeof object.append=="function"&&typeof object.delete=="function"&&typeof object.get=="function"&&typeof object.getAll=="function"&&typeof object.has=="function"&&typeof object.set=="function"&&typeof object.sort=="function"&&object[NAME]==="URLSearchParams",isBlob=object=>object&&typeof object=="object"&&typeof object.arrayBuffer=="function"&&typeof object.type=="string"&&typeof object.stream=="function"&&typeof object.constructor=="function"&&/^(Blob|File)$/.test(object[NAME]),isAbortSignal=object=>typeof object=="object"&&(object[NAME]==="AbortSignal"||object[NAME]==="EventTarget"),isDomainOrSubdomain=(destination,original)=>{let orig=new URL(original).hostname,dest=new URL(destination).hostname;return orig===dest||orig.endsWith(`.${dest}`)},isSameProtocol=(destination,original)=>{let orig=new URL(original).protocol,dest=new URL(destination).protocol;return orig===dest};var pipeline=promisify(Stream.pipeline),INTERNALS=Symbol("Body internals"),Body=class{constructor(body,{size=0}={}){let boundary=null;body===null?body=null:isURLSearchParameters(body)?body=Buffer$1.from(body.toString()):isBlob(body)||Buffer$1.isBuffer(body)||(types.isAnyArrayBuffer(body)?body=Buffer$1.from(body):ArrayBuffer.isView(body)?body=Buffer$1.from(body.buffer,body.byteOffset,body.byteLength):body instanceof Stream||(body instanceof FormData?(body=formDataToBlob(body),boundary=body.type.split("=")[1]):body=Buffer$1.from(String(body))));let stream=body;Buffer$1.isBuffer(body)?stream=Stream.Readable.from(body):isBlob(body)&&(stream=Stream.Readable.from(body.stream())),this[INTERNALS]={body,stream,boundary,disturbed:!1,error:null},this.size=size,body instanceof Stream&&body.on("error",error_=>{let error=error_ instanceof FetchBaseError?error_:new FetchError(`Invalid response body while trying to fetch ${this.url}: ${error_.message}`,"system",error_);this[INTERNALS].error=error;});}get body(){return this[INTERNALS].stream}get bodyUsed(){return this[INTERNALS].disturbed}async arrayBuffer(){let{buffer,byteOffset,byteLength}=await consumeBody(this);return buffer.slice(byteOffset,byteOffset+byteLength)}async formData(){let ct=this.headers.get("content-type");if(ct.startsWith("application/x-www-form-urlencoded")){let formData=new FormData,parameters=new URLSearchParams(await this.text());for(let[name,value]of parameters)formData.append(name,value);return formData}let{toFormData}=await import('./multipart-parser-SN27IDO3.mjs');return toFormData(this.body,ct)}async blob(){let ct=this.headers&&this.headers.get("content-type")||this[INTERNALS].body&&this[INTERNALS].body.type||"",buf=await this.arrayBuffer();return new fetch_blob_default([buf],{type:ct})}async json(){let text=await this.text();return JSON.parse(text)}async text(){let buffer=await consumeBody(this);return new TextDecoder().decode(buffer)}buffer(){return consumeBody(this)}};Body.prototype.buffer=deprecate(Body.prototype.buffer,"Please use 'response.arrayBuffer()' instead of 'response.buffer()'","node-fetch#buffer");Object.defineProperties(Body.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0},data:{get:deprecate(()=>{},"data doesn't exist, use json(), text(), arrayBuffer(), or body instead","https://github.com/node-fetch/node-fetch/issues/1000 (response)")}});async function consumeBody(data){if(data[INTERNALS].disturbed)throw new TypeError(`body used already for: ${data.url}`);if(data[INTERNALS].disturbed=!0,data[INTERNALS].error)throw data[INTERNALS].error;let{body}=data;if(body===null)return Buffer$1.alloc(0);if(!(body instanceof Stream))return Buffer$1.alloc(0);let accum=[],accumBytes=0;try{for await(let chunk of body){if(data.size>0&&accumBytes+chunk.length>data.size){let error=new FetchError(`content size at ${data.url} over limit: ${data.size}`,"max-size");throw body.destroy(error),error}accumBytes+=chunk.length,accum.push(chunk);}}catch(error){throw error instanceof FetchBaseError?error:new FetchError(`Invalid response body while trying to fetch ${data.url}: ${error.message}`,"system",error)}if(body.readableEnded===!0||body._readableState.ended===!0)try{return accum.every(c=>typeof c=="string")?Buffer$1.from(accum.join("")):Buffer$1.concat(accum,accumBytes)}catch(error){throw new FetchError(`Could not create Buffer from response body for ${data.url}: ${error.message}`,"system",error)}else throw new FetchError(`Premature close of server response while trying to fetch ${data.url}`)}var clone=(instance,highWaterMark)=>{let p1,p2,{body}=instance[INTERNALS];if(instance.bodyUsed)throw new Error("cannot clone body after it is used");return body instanceof Stream&&typeof body.getBoundary!="function"&&(p1=new PassThrough({highWaterMark}),p2=new PassThrough({highWaterMark}),body.pipe(p1),body.pipe(p2),instance[INTERNALS].stream=p1,body=p2),body},getNonSpecFormDataBoundary=deprecate(body=>body.getBoundary(),"form-data doesn't follow the spec and requires special treatment. Use alternative package","https://github.com/node-fetch/node-fetch/issues/1167"),extractContentType=(body,request)=>body===null?null:typeof body=="string"?"text/plain;charset=UTF-8":isURLSearchParameters(body)?"application/x-www-form-urlencoded;charset=UTF-8":isBlob(body)?body.type||null:Buffer$1.isBuffer(body)||types.isAnyArrayBuffer(body)||ArrayBuffer.isView(body)?null:body instanceof FormData?`multipart/form-data; boundary=${request[INTERNALS].boundary}`:body&&typeof body.getBoundary=="function"?`multipart/form-data;boundary=${getNonSpecFormDataBoundary(body)}`:body instanceof Stream?null:"text/plain;charset=UTF-8",getTotalBytes=request=>{let{body}=request[INTERNALS];return body===null?0:isBlob(body)?body.size:Buffer$1.isBuffer(body)?body.length:body&&typeof body.getLengthSync=="function"&&body.hasKnownLength&&body.hasKnownLength()?body.getLengthSync():null},writeToStream=async(dest,{body})=>{body===null?dest.end():await pipeline(body,dest);};var validateHeaderName=typeof http.validateHeaderName=="function"?http.validateHeaderName:name=>{if(!/^[\^`\-\w!#$%&'*+.|~]+$/.test(name)){let error=new TypeError(`Header name must be a valid HTTP token [${name}]`);throw Object.defineProperty(error,"code",{value:"ERR_INVALID_HTTP_TOKEN"}),error}},validateHeaderValue=typeof http.validateHeaderValue=="function"?http.validateHeaderValue:(name,value)=>{if(/[^\t\u0020-\u007E\u0080-\u00FF]/.test(value)){let error=new TypeError(`Invalid character in header content ["${name}"]`);throw Object.defineProperty(error,"code",{value:"ERR_INVALID_CHAR"}),error}},Headers=class _Headers extends URLSearchParams{constructor(init){let result=[];if(init instanceof _Headers){let raw=init.raw();for(let[name,values]of Object.entries(raw))result.push(...values.map(value=>[name,value]));}else if(init!=null)if(typeof init=="object"&&!types.isBoxedPrimitive(init)){let method=init[Symbol.iterator];if(method==null)result.push(...Object.entries(init));else {if(typeof method!="function")throw new TypeError("Header pairs must be iterable");result=[...init].map(pair=>{if(typeof pair!="object"||types.isBoxedPrimitive(pair))throw new TypeError("Each header pair must be an iterable object");return [...pair]}).map(pair=>{if(pair.length!==2)throw new TypeError("Each header pair must be a name/value tuple");return [...pair]});}}else throw new TypeError("Failed to construct 'Headers': The provided value is not of type '(sequence<sequence<ByteString>> or record<ByteString, ByteString>)");return result=result.length>0?result.map(([name,value])=>(validateHeaderName(name),validateHeaderValue(name,String(value)),[String(name).toLowerCase(),String(value)])):void 0,super(result),new Proxy(this,{get(target,p,receiver){switch(p){case"append":case"set":return (name,value)=>(validateHeaderName(name),validateHeaderValue(name,String(value)),URLSearchParams.prototype[p].call(target,String(name).toLowerCase(),String(value)));case"delete":case"has":case"getAll":return name=>(validateHeaderName(name),URLSearchParams.prototype[p].call(target,String(name).toLowerCase()));case"keys":return ()=>(target.sort(),new Set(URLSearchParams.prototype.keys.call(target)).keys());default:return Reflect.get(target,p,receiver)}}})}get[Symbol.toStringTag](){return this.constructor.name}toString(){return Object.prototype.toString.call(this)}get(name){let values=this.getAll(name);if(values.length===0)return null;let value=values.join(", ");return /^content-encoding$/i.test(name)&&(value=value.toLowerCase()),value}forEach(callback,thisArg=void 0){for(let name of this.keys())Reflect.apply(callback,thisArg,[this.get(name),name,this]);}*values(){for(let name of this.keys())yield this.get(name);}*entries(){for(let name of this.keys())yield [name,this.get(name)];}[Symbol.iterator](){return this.entries()}raw(){return [...this.keys()].reduce((result,key)=>(result[key]=this.getAll(key),result),{})}[Symbol.for("nodejs.util.inspect.custom")](){return [...this.keys()].reduce((result,key)=>{let values=this.getAll(key);return key==="host"?result[key]=values[0]:result[key]=values.length>1?values:values[0],result},{})}};Object.defineProperties(Headers.prototype,["get","entries","forEach","values"].reduce((result,property)=>(result[property]={enumerable:!0},result),{}));function fromRawHeaders(headers=[]){return new Headers(headers.reduce((result,value,index,array)=>(index%2===0&&result.push(array.slice(index,index+2)),result),[]).filter(([name,value])=>{try{return validateHeaderName(name),validateHeaderValue(name,String(value)),!0}catch{return !1}}))}var redirectStatus=new Set([301,302,303,307,308]),isRedirect=code=>redirectStatus.has(code);var INTERNALS2=Symbol("Response internals"),Response=class _Response extends Body{constructor(body=null,options={}){super(body,options);let status=options.status!=null?options.status:200,headers=new Headers(options.headers);if(body!==null&&!headers.has("Content-Type")){let contentType=extractContentType(body,this);contentType&&headers.append("Content-Type",contentType);}this[INTERNALS2]={type:"default",url:options.url,status,statusText:options.statusText||"",headers,counter:options.counter,highWaterMark:options.highWaterMark};}get type(){return this[INTERNALS2].type}get url(){return this[INTERNALS2].url||""}get status(){return this[INTERNALS2].status}get ok(){return this[INTERNALS2].status>=200&&this[INTERNALS2].status<300}get redirected(){return this[INTERNALS2].counter>0}get statusText(){return this[INTERNALS2].statusText}get headers(){return this[INTERNALS2].headers}get highWaterMark(){return this[INTERNALS2].highWaterMark}clone(){return new _Response(clone(this,this.highWaterMark),{type:this.type,url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected,size:this.size,highWaterMark:this.highWaterMark})}static redirect(url,status=302){if(!isRedirect(status))throw new RangeError('Failed to execute "redirect" on "response": Invalid status code');return new _Response(null,{headers:{location:new URL(url).toString()},status})}static error(){let response=new _Response(null,{status:0,statusText:""});return response[INTERNALS2].type="error",response}static json(data=void 0,init={}){let body=JSON.stringify(data);if(body===void 0)throw new TypeError("data is not JSON serializable");let headers=new Headers(init&&init.headers);return headers.has("content-type")||headers.set("content-type","application/json"),new _Response(body,{...init,headers})}get[Symbol.toStringTag](){return "Response"}};Object.defineProperties(Response.prototype,{type:{enumerable:!0},url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});var getSearch=parsedURL=>{if(parsedURL.search)return parsedURL.search;let lastOffset=parsedURL.href.length-1,hash=parsedURL.hash||(parsedURL.href[lastOffset]==="#"?"#":"");return parsedURL.href[lastOffset-hash.length]==="?"?"?":""};function stripURLForUseAsAReferrer(url,originOnly=!1){return url==null||(url=new URL(url),/^(about|blob|data):$/.test(url.protocol))?"no-referrer":(url.username="",url.password="",url.hash="",originOnly&&(url.pathname="",url.search=""),url)}var ReferrerPolicy=new Set(["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"]),DEFAULT_REFERRER_POLICY="strict-origin-when-cross-origin";function validateReferrerPolicy(referrerPolicy){if(!ReferrerPolicy.has(referrerPolicy))throw new TypeError(`Invalid referrerPolicy: ${referrerPolicy}`);return referrerPolicy}function isOriginPotentiallyTrustworthy(url){if(/^(http|ws)s:$/.test(url.protocol))return !0;let hostIp=url.host.replace(/(^\[)|(]$)/g,""),hostIPVersion=isIP(hostIp);return hostIPVersion===4&&/^127\./.test(hostIp)||hostIPVersion===6&&/^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(hostIp)?!0:url.host==="localhost"||url.host.endsWith(".localhost")?!1:url.protocol==="file:"}function isUrlPotentiallyTrustworthy(url){return /^about:(blank|srcdoc)$/.test(url)||url.protocol==="data:"||/^(blob|filesystem):$/.test(url.protocol)?!0:isOriginPotentiallyTrustworthy(url)}function determineRequestsReferrer(request,{referrerURLCallback,referrerOriginCallback}={}){if(request.referrer==="no-referrer"||request.referrerPolicy==="")return null;let policy=request.referrerPolicy;if(request.referrer==="about:client")return "no-referrer";let referrerSource=request.referrer,referrerURL=stripURLForUseAsAReferrer(referrerSource),referrerOrigin=stripURLForUseAsAReferrer(referrerSource,!0);referrerURL.toString().length>4096&&(referrerURL=referrerOrigin),referrerURLCallback&&(referrerURL=referrerURLCallback(referrerURL)),referrerOriginCallback&&(referrerOrigin=referrerOriginCallback(referrerOrigin));let currentURL=new URL(request.url);switch(policy){case"no-referrer":return "no-referrer";case"origin":return referrerOrigin;case"unsafe-url":return referrerURL;case"strict-origin":return isUrlPotentiallyTrustworthy(referrerURL)&&!isUrlPotentiallyTrustworthy(currentURL)?"no-referrer":referrerOrigin.toString();case"strict-origin-when-cross-origin":return referrerURL.origin===currentURL.origin?referrerURL:isUrlPotentiallyTrustworthy(referrerURL)&&!isUrlPotentiallyTrustworthy(currentURL)?"no-referrer":referrerOrigin;case"same-origin":return referrerURL.origin===currentURL.origin?referrerURL:"no-referrer";case"origin-when-cross-origin":return referrerURL.origin===currentURL.origin?referrerURL:referrerOrigin;case"no-referrer-when-downgrade":return isUrlPotentiallyTrustworthy(referrerURL)&&!isUrlPotentiallyTrustworthy(currentURL)?"no-referrer":referrerURL;default:throw new TypeError(`Invalid referrerPolicy: ${policy}`)}}function parseReferrerPolicyFromHeader(headers){let policyTokens=(headers.get("referrer-policy")||"").split(/[,\s]+/),policy="";for(let token of policyTokens)token&&ReferrerPolicy.has(token)&&(policy=token);return policy}var INTERNALS3=Symbol("Request internals"),isRequest=object=>typeof object=="object"&&typeof object[INTERNALS3]=="object",doBadDataWarn=deprecate(()=>{},".data is not a valid RequestInit property, use .body instead","https://github.com/node-fetch/node-fetch/issues/1000 (request)"),Request=class _Request extends Body{constructor(input,init={}){let parsedURL;if(isRequest(input)?parsedURL=new URL(input.url):(parsedURL=new URL(input),input={}),parsedURL.username!==""||parsedURL.password!=="")throw new TypeError(`${parsedURL} is an url with embedded credentials.`);let method=init.method||input.method||"GET";if(/^(delete|get|head|options|post|put)$/i.test(method)&&(method=method.toUpperCase()),!isRequest(init)&&"data"in init&&doBadDataWarn(),(init.body!=null||isRequest(input)&&input.body!==null)&&(method==="GET"||method==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let inputBody=init.body?init.body:isRequest(input)&&input.body!==null?clone(input):null;super(inputBody,{size:init.size||input.size||0});let headers=new Headers(init.headers||input.headers||{});if(inputBody!==null&&!headers.has("Content-Type")){let contentType=extractContentType(inputBody,this);contentType&&headers.set("Content-Type",contentType);}let signal=isRequest(input)?input.signal:null;if("signal"in init&&(signal=init.signal),signal!=null&&!isAbortSignal(signal))throw new TypeError("Expected signal to be an instanceof AbortSignal or EventTarget");let referrer=init.referrer==null?input.referrer:init.referrer;if(referrer==="")referrer="no-referrer";else if(referrer){let parsedReferrer=new URL(referrer);referrer=/^about:(\/\/)?client$/.test(parsedReferrer)?"client":parsedReferrer;}else referrer=void 0;this[INTERNALS3]={method,redirect:init.redirect||input.redirect||"follow",headers,parsedURL,signal,referrer},this.follow=init.follow===void 0?input.follow===void 0?20:input.follow:init.follow,this.compress=init.compress===void 0?input.compress===void 0?!0:input.compress:init.compress,this.counter=init.counter||input.counter||0,this.agent=init.agent||input.agent,this.highWaterMark=init.highWaterMark||input.highWaterMark||16384,this.insecureHTTPParser=init.insecureHTTPParser||input.insecureHTTPParser||!1,this.referrerPolicy=init.referrerPolicy||input.referrerPolicy||"";}get method(){return this[INTERNALS3].method}get url(){return format(this[INTERNALS3].parsedURL)}get headers(){return this[INTERNALS3].headers}get redirect(){return this[INTERNALS3].redirect}get signal(){return this[INTERNALS3].signal}get referrer(){if(this[INTERNALS3].referrer==="no-referrer")return "";if(this[INTERNALS3].referrer==="client")return "about:client";if(this[INTERNALS3].referrer)return this[INTERNALS3].referrer.toString()}get referrerPolicy(){return this[INTERNALS3].referrerPolicy}set referrerPolicy(referrerPolicy){this[INTERNALS3].referrerPolicy=validateReferrerPolicy(referrerPolicy);}clone(){return new _Request(this)}get[Symbol.toStringTag](){return "Request"}};Object.defineProperties(Request.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0},referrer:{enumerable:!0},referrerPolicy:{enumerable:!0}});var getNodeRequestOptions=request=>{let{parsedURL}=request[INTERNALS3],headers=new Headers(request[INTERNALS3].headers);headers.has("Accept")||headers.set("Accept","*/*");let contentLengthValue=null;if(request.body===null&&/^(post|put)$/i.test(request.method)&&(contentLengthValue="0"),request.body!==null){let totalBytes=getTotalBytes(request);typeof totalBytes=="number"&&!Number.isNaN(totalBytes)&&(contentLengthValue=String(totalBytes));}contentLengthValue&&headers.set("Content-Length",contentLengthValue),request.referrerPolicy===""&&(request.referrerPolicy=DEFAULT_REFERRER_POLICY),request.referrer&&request.referrer!=="no-referrer"?request[INTERNALS3].referrer=determineRequestsReferrer(request):request[INTERNALS3].referrer="no-referrer",request[INTERNALS3].referrer instanceof URL&&headers.set("Referer",request.referrer),headers.has("User-Agent")||headers.set("User-Agent","node-fetch"),request.compress&&!headers.has("Accept-Encoding")&&headers.set("Accept-Encoding","gzip, deflate, br");let{agent}=request;typeof agent=="function"&&(agent=agent(parsedURL));let search=getSearch(parsedURL),options={path:parsedURL.pathname+search,method:request.method,headers:headers[Symbol.for("nodejs.util.inspect.custom")](),insecureHTTPParser:request.insecureHTTPParser,agent};return {parsedURL,options}};var AbortError=class extends FetchBaseError{constructor(message,type="aborted"){super(message,type);}};var supportedSchemas=new Set(["data:","http:","https:"]);async function fetch(url,options_){return new Promise((resolve,reject)=>{let request=new Request(url,options_),{parsedURL,options}=getNodeRequestOptions(request);if(!supportedSchemas.has(parsedURL.protocol))throw new TypeError(`node-fetch cannot load ${url}. URL scheme "${parsedURL.protocol.replace(/:$/,"")}" is not supported.`);if(parsedURL.protocol==="data:"){let data=dist_default(request.url),response2=new Response(data,{headers:{"Content-Type":data.typeFull}});resolve(response2);return}let send=(parsedURL.protocol==="https:"?https:http).request,{signal}=request,response=null,abort=()=>{let error=new AbortError("The operation was aborted.");reject(error),request.body&&request.body instanceof Stream.Readable&&request.body.destroy(error),!(!response||!response.body)&&response.body.emit("error",error);};if(signal&&signal.aborted){abort();return}let abortAndFinalize=()=>{abort(),finalize();},request_=send(parsedURL.toString(),options);signal&&signal.addEventListener("abort",abortAndFinalize);let finalize=()=>{request_.abort(),signal&&signal.removeEventListener("abort",abortAndFinalize);};request_.on("error",error=>{reject(new FetchError(`request to ${request.url} failed, reason: ${error.message}`,"system",error)),finalize();}),fixResponseChunkedTransferBadEnding(request_,error=>{response&&response.body&&response.body.destroy(error);}),process.version<"v14"&&request_.on("socket",s=>{let endedWithEventsCount;s.prependListener("end",()=>{endedWithEventsCount=s._eventsCount;}),s.prependListener("close",hadError=>{if(response&&endedWithEventsCount<s._eventsCount&&!hadError){let error=new Error("Premature close");error.code="ERR_STREAM_PREMATURE_CLOSE",response.body.emit("error",error);}});}),request_.on("response",response_=>{request_.setTimeout(0);let headers=fromRawHeaders(response_.rawHeaders);if(isRedirect(response_.statusCode)){let location=headers.get("Location"),locationURL=null;try{locationURL=location===null?null:new URL(location,request.url);}catch{if(request.redirect!=="manual"){reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`,"invalid-redirect")),finalize();return}}switch(request.redirect){case"error":reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`,"no-redirect")),finalize();return;case"manual":break;case"follow":{if(locationURL===null)break;if(request.counter>=request.follow){reject(new FetchError(`maximum redirect reached at: ${request.url}`,"max-redirect")),finalize();return}let requestOptions={headers:new Headers(request.headers),follow:request.follow,counter:request.counter+1,agent:request.agent,compress:request.compress,method:request.method,body:clone(request),signal:request.signal,size:request.size,referrer:request.referrer,referrerPolicy:request.referrerPolicy};if(!isDomainOrSubdomain(request.url,locationURL)||!isSameProtocol(request.url,locationURL))for(let name of ["authorization","www-authenticate","cookie","cookie2"])requestOptions.headers.delete(name);if(response_.statusCode!==303&&request.body&&options_.body instanceof Stream.Readable){reject(new FetchError("Cannot follow redirect with body being a readable stream","unsupported-redirect")),finalize();return}(response_.statusCode===303||(response_.statusCode===301||response_.statusCode===302)&&request.method==="POST")&&(requestOptions.method="GET",requestOptions.body=void 0,requestOptions.headers.delete("content-length"));let responseReferrerPolicy=parseReferrerPolicyFromHeader(headers);responseReferrerPolicy&&(requestOptions.referrerPolicy=responseReferrerPolicy),resolve(fetch(new Request(locationURL,requestOptions))),finalize();return}default:return reject(new TypeError(`Redirect option '${request.redirect}' is not a valid value of RequestRedirect`))}}signal&&response_.once("end",()=>{signal.removeEventListener("abort",abortAndFinalize);});let body=pipeline$1(response_,new PassThrough,error=>{error&&reject(error);});process.version<"v12.10"&&response_.on("aborted",abortAndFinalize);let responseOptions={url:request.url,status:response_.statusCode,statusText:response_.statusMessage,headers,size:request.size,counter:request.counter,highWaterMark:request.highWaterMark},codings=headers.get("Content-Encoding");if(!request.compress||request.method==="HEAD"||codings===null||response_.statusCode===204||response_.statusCode===304){response=new Response(body,responseOptions),resolve(response);return}let zlibOptions={flush:zlib.Z_SYNC_FLUSH,finishFlush:zlib.Z_SYNC_FLUSH};if(codings==="gzip"||codings==="x-gzip"){body=pipeline$1(body,zlib.createGunzip(zlibOptions),error=>{error&&reject(error);}),response=new Response(body,responseOptions),resolve(response);return}if(codings==="deflate"||codings==="x-deflate"){let raw=pipeline$1(response_,new PassThrough,error=>{error&&reject(error);});raw.once("data",chunk=>{(chunk[0]&15)===8?body=pipeline$1(body,zlib.createInflate(),error=>{error&&reject(error);}):body=pipeline$1(body,zlib.createInflateRaw(),error=>{error&&reject(error);}),response=new Response(body,responseOptions),resolve(response);}),raw.once("end",()=>{response||(response=new Response(body,responseOptions),resolve(response));});return}if(codings==="br"){body=pipeline$1(body,zlib.createBrotliDecompress(),error=>{error&&reject(error);}),response=new Response(body,responseOptions),resolve(response);return}response=new Response(body,responseOptions),resolve(response);}),writeToStream(request_,request).catch(reject);})}function fixResponseChunkedTransferBadEnding(request,errorCallback){let LAST_CHUNK=Buffer$1.from(`0\r
|
25
25
|
\r
|
26
26
|
`),isChunkedTransfer=!1,properLastChunkReceived=!1,previousChunk;request.on("response",response=>{let{headers}=response;isChunkedTransfer=headers["transfer-encoding"]==="chunked"&&!headers["content-length"];}),request.on("socket",socket=>{let onSocketClose=()=>{if(isChunkedTransfer&&!properLastChunkReceived){let error=new Error("Premature close");error.code="ERR_STREAM_PREMATURE_CLOSE",errorCallback(error);}},onData=buf=>{properLastChunkReceived=Buffer$1.compare(buf.slice(-5),LAST_CHUNK)===0,!properLastChunkReceived&&previousChunk&&(properLastChunkReceived=Buffer$1.compare(previousChunk.slice(-3),LAST_CHUNK.slice(0,3))===0&&Buffer$1.compare(buf.slice(-2),LAST_CHUNK.slice(3))===0),previousChunk=buf;};socket.prependListener("close",onSocketClose),socket.on("data",onData),request.on("close",()=>{socket.removeListener("close",onSocketClose),socket.removeListener("data",onData);});});}var urlAlphabet="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var POOL_SIZE_MULTIPLIER=128,pool,poolOffset,fillPool=bytes=>{!pool||pool.length<bytes?(pool=Buffer.allocUnsafe(bytes*POOL_SIZE_MULTIPLIER),randomFillSync(pool),poolOffset=0):poolOffset+bytes>pool.length&&(randomFillSync(pool),poolOffset=0),poolOffset+=bytes;};var nanoid=(size=21)=>{fillPool(size-=0);let id="";for(let i=poolOffset-size;i<poolOffset;i++)id+=urlAlphabet[pool[i]&63];return id};var oneWayHash=payload=>{let hash=createHash("sha256");return hash.update("storybook-telemetry-salt"),hash.update(payload),hash.digest("hex")};function normalizeGitUrl(rawUrl){return rawUrl.trim().replace(/#.*$/,"").replace(/^.*@/,"").replace(/^.*\/\//,"").replace(":","/")}var anonymousProjectId,getAnonymousProjectId=()=>{if(anonymousProjectId)return anonymousProjectId;let unhashedProjectId;try{let projectRoot=getProjectRoot(),projectRootPath=path2.relative(projectRoot,process.cwd()),originBuffer=execSync("git config --local --get remote.origin.url",{timeout:1e3,stdio:"pipe"});unhashedProjectId=`${normalizeGitUrl(String(originBuffer))}${projectRootPath}`,anonymousProjectId=oneWayHash(unhashedProjectId);}catch{}return anonymousProjectId};var operation=Promise.resolve(),setHelper=async(eventType,body)=>{let lastEvents=await cache.get("lastEvents")||{};lastEvents[eventType]={body,timestamp:Date.now()},await cache.set("lastEvents",lastEvents);},set=async(eventType,body)=>(await operation,operation=setHelper(eventType,body),operation);var upgradeFields=event=>{let{body,timestamp}=event;return {timestamp,eventType:body?.eventType,eventId:body?.eventId,sessionId:body?.sessionId}},UPGRADE_EVENTS=["init","upgrade"],RUN_EVENTS=["build","dev","error"],lastEvent=(lastEvents,eventTypes)=>{let descendingEvents=eventTypes.map(eventType=>lastEvents?.[eventType]).filter(Boolean).sort((a,b)=>b.timestamp-a.timestamp);return descendingEvents.length>0?descendingEvents[0]:void 0},getPrecedingUpgrade=async(events=void 0)=>{let lastEvents=events||await cache.get("lastEvents")||{},lastUpgradeEvent=lastEvent(lastEvents,UPGRADE_EVENTS),lastRunEvent=lastEvent(lastEvents,RUN_EVENTS);if(lastUpgradeEvent)return !lastRunEvent?.timestamp||lastUpgradeEvent.timestamp>lastRunEvent.timestamp?upgradeFields(lastUpgradeEvent):void 0};var SESSION_TIMEOUT=1e3*60*60*2,sessionId;var getSessionId=async()=>{let now=Date.now();if(!sessionId){let session=await cache.get("session");session&&session.lastUsed>=now-SESSION_TIMEOUT?sessionId=session.id:sessionId=nanoid();}return await cache.set("session",{id:sessionId,lastUsed:now}),sessionId};var URL2=process.env.STORYBOOK_TELEMETRY_URL||"https://storybook.js.org/event-log",fetch2=retry(fetch),tasks=[],addToGlobalContext=(key,value)=>{globalContext[key]=value;},getOperatingSystem=()=>{try{let platform2=os.platform();return platform2==="win32"?"Windows":platform2==="darwin"?"macOS":platform2==="linux"?"Linux":`Other: ${platform2}`}catch{return "Unknown"}},globalContext={inCI:!!process.env.CI,isTTY:process.stdout.isTTY,platform:getOperatingSystem()},prepareRequest=async(data,context,options)=>{let{eventType,payload,metadata,...rest}=data,sessionId2=await getSessionId(),eventId=nanoid(),body={...rest,eventType,eventId,sessionId:sessionId2,metadata,payload,context};return fetch2(URL2,{method:"POST",body:JSON.stringify(body),headers:{"Content-Type":"application/json"},retries:3,retryOn:[503,504],retryDelay:attempt=>2**attempt*(typeof options?.retryDelay=="number"&&!Number.isNaN(options?.retryDelay)?options.retryDelay:1e3)})};async function sendTelemetry(data,options={retryDelay:1e3,immediate:!1}){let{eventType,payload,metadata,...rest}=data,context=options.stripMetadata?globalContext:{...globalContext,anonymousId:getAnonymousProjectId()},request;try{request=prepareRequest(data,context,options),tasks.push(request),options.immediate?await Promise.all(tasks):await request;let sessionId2=await getSessionId(),eventId=nanoid(),body={...rest,eventType,eventId,sessionId:sessionId2,metadata,payload,context};await set(eventType,body);}catch{}finally{tasks=tasks.filter(task=>task!==request);}}var TELEMETRY_KEY_NOTIFY_DATE="telemetry-notification-date",logger=console,notify=async()=>{await cache.get(TELEMETRY_KEY_NOTIFY_DATE,null)||(cache.set(TELEMETRY_KEY_NOTIFY_DATE,Date.now()),logger.log(),logger.log(`${chalk.magenta.bold("attention")} => Storybook now collects completely anonymous telemetry regarding usage.`),logger.log("This information is used to shape Storybook's roadmap and prioritize features."),logger.log("You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:"),logger.log(chalk.cyan("https://storybook.js.org/telemetry")),logger.log());};var telemetry=async(eventType,payload={},options={})=>{eventType!=="boot"&&await notify();let telemetryData={eventType,payload};try{options?.stripMetadata||(telemetryData.metadata=await getStorybookMetadata(options?.configDir));}catch(error){telemetryData.payload.metadataErrorMessage=sanitizeError(error).message,options?.enableCrashReports&&(telemetryData.payload.metadataError=sanitizeError(error));}finally{let{error}=telemetryData.payload;error&&(telemetryData.payload.error=sanitizeError(error)),(!telemetryData.payload.error||options?.enableCrashReports)&&(process.env?.STORYBOOK_TELEMETRY_DEBUG&&(logger$1.info(`
|
27
27
|
[telemetry]`),logger$1.info(JSON.stringify(telemetryData,null,2))),await sendTelemetry(telemetryData,options));}};
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@storybook/telemetry",
|
3
|
-
"version": "8.2.0-alpha.
|
3
|
+
"version": "8.2.0-alpha.3",
|
4
4
|
"description": "Telemetry logging for crash reports and usage statistics",
|
5
5
|
"keywords": [
|
6
6
|
"storybook"
|
@@ -44,9 +44,9 @@
|
|
44
44
|
"prep": "node --loader ../../../scripts/node_modules/esbuild-register/loader.js -r ../../../scripts/node_modules/esbuild-register/register.js ../../../scripts/prepare/bundle.ts"
|
45
45
|
},
|
46
46
|
"dependencies": {
|
47
|
-
"@storybook/client-logger": "8.2.0-alpha.
|
48
|
-
"@storybook/core-common": "8.2.0-alpha.
|
49
|
-
"@storybook/csf-tools": "8.2.0-alpha.
|
47
|
+
"@storybook/client-logger": "8.2.0-alpha.3",
|
48
|
+
"@storybook/core-common": "8.2.0-alpha.3",
|
49
|
+
"@storybook/csf-tools": "8.2.0-alpha.3",
|
50
50
|
"chalk": "^4.1.0",
|
51
51
|
"detect-package-manager": "^2.0.1",
|
52
52
|
"fetch-retry": "^5.0.2",
|