@storybook/telemetry 7.0.0-beta.2 → 7.0.0-beta.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -933,18 +933,19 @@ type CoreCommon_StorybookRefs = Record<string, {
933
933
  }>;
934
934
  type DocsOptions = {
935
935
  /**
936
- * Should we generate docs entries at all under any circumstances? (i.e. can they be rendered)
936
+ * Should we disable generate docs entries at all under any circumstances? (i.e. can they be rendered)
937
937
  */
938
- enabled?: boolean;
938
+ disable?: boolean;
939
939
  /**
940
940
  * What should we call the generated docs entries?
941
941
  */
942
942
  defaultName?: string;
943
943
  /**
944
- * Should we generate a docs entry per CSF file with the `docsPage` tag?
945
- * Set to 'automatic' to generate an entry irrespective of tag.
944
+ * Should we generate a docs entry per CSF file?
945
+ * Set to 'tag' (the default) to generate an entry for every CSF file with the
946
+ * 'autodocs' tag.
946
947
  */
947
- docsPage?: boolean | 'automatic';
948
+ autodocs?: boolean | 'tag';
948
949
  /**
949
950
  * Only show doc entries in the side bar (usually set with the `--docs` CLI flag)
950
951
  */
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var he=Object.create;var k=Object.defineProperty;var be=Object.getOwnPropertyDescriptor;var ve=Object.getOwnPropertyNames;var we=Object.getPrototypeOf,Pe=Object.prototype.hasOwnProperty;var Se=(t,e)=>{for(var r in e)k(t,r,{get:e[r],enumerable:!0})},L=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of ve(e))!Pe.call(t,n)&&n!==r&&k(t,n,{get:()=>e[n],enumerable:!(o=be(e,n))||o.enumerable});return t};var m=(t,e,r)=>(r=t!=null?he(we(t)):{},L(e||!t||!t.__esModule?k(r,"default",{value:t,enumerable:!0}):r,t)),xe=t=>L(k({},"__esModule",{value:!0}),t);var Ae={};Se(Ae,{computeStorybookMetadata:()=>ee,getPrecedingUpgrade:()=>pe,getStorybookCoreVersion:()=>z,getStorybookMetadata:()=>N,metaFrameworks:()=>I,sanitizeAddonName:()=>M,telemetry:()=>Ce});module.exports=xe(Ae);var B=require("@storybook/client-logger");var Z=m(require("read-pkg-up")),S=require("detect-package-manager"),y=require("@storybook/core-common");var _=require("fs-extra"),Y=m(require("path")),j=async t=>{let e=Object.keys(t);return Promise.all(e.map(h))},h=async t=>{try{let e=await D(t);return{name:t,version:e.version}}catch{return{name:t,version:null}}},D=async t=>{let e=require.resolve(Y.default.join(t,"package.json"),{paths:[process.cwd()]});return await(0,_.readJson)(e)},z=async()=>{var e;return(e=(await Promise.all(["@storybook/core-common","@storybook/core-server"].map(h))).find(r=>r.version))==null?void 0:e.version};var b=m(require("fs-extra")),v=m(require("path")),G=require("@storybook/core-common"),H={Nx:"nx.json",Turborepo:"turbo.json",Lerna:"lerna.json",Rush:"rush.json",Lage:"lage.config.json"},K=()=>{let t=(0,G.getProjectRoot)();if(!t)return;let r=Object.keys(H).find(n=>{let s=v.default.join(t,H[n]);return b.default.existsSync(s)});if(r)return r;if(!b.default.existsSync(v.default.join(t,"package.json")))return;let o=b.default.readJsonSync(v.default.join(t,"package.json"));if(o!=null&&o.workspaces)return"Workspaces"};var O=require("path");function q(t){return t.replace(/[-[/{}()*+?.\\^$|]/g,"\\$&")}function R(t,e=O.sep){if(!t)return t;let r=process.cwd().split(e);for(;r.length>1;){let o=r.join(e),n=new RegExp(q(o),"g");t=t.replace(n,"$SNIP");let s=r.join(e+e),f=new RegExp(q(s),"g");t=t.replace(f,"$SNIP"),r.pop()}return t}function w(t,e=O.sep){t=JSON.parse(JSON.stringify(t,Object.getOwnPropertyNames(t)));let r=R(JSON.stringify(t),e);return JSON.parse(r)}var Te=["html","react","svelte","vue3","preact","server","vue","web-components","angular","ember"],Ee=["builder-webpack5","builder-vite"];function J(t,e){let{name:r="",version:o,dependencies:n,devDependencies:s,peerDependencies:f}=t,c={[r]:o,...n,...s,...f};return e.map(p=>`@storybook/${p}`).find(p=>c[p])}async function Q(t){let{framework:e}=t;if(!e)return{};let r=typeof e=="string"?{name:e}:e,o=await D(r.name),n=J(o,Ee),s=J(o,Te);return{framework:r,builder:n,renderer:s}}function X(t){var r,o,n;let e=((r=t.dependencies)==null?void 0:r.chromatic)||((o=t.devDependencies)==null?void 0:o.chromatic)||((n=t.peerDependencies)==null?void 0:n.chromatic);return e||(t.scripts&&Object.values(t.scripts).find(s=>s==null?void 0:s.match(/chromatic/))?"latest":void 0)}var I={next:"Next","react-scripts":"CRA",gatsby:"Gatsby","@nuxtjs/storybook":"nuxt","@nrwl/storybook":"nx","@vue/cli-service":"vue-cli","@sveltejs/kit":"sveltekit"},M=t=>R(t).replace(/\/dist\/.*/,"").replace(/\.[mc]?[tj]?s[x]?$/,"").replace(/\/register$/,"").replace(/\/manager$/,"").replace(/\/preset$/,""),ee=async({packageJson:t,mainConfig:e})=>{var $;let r={generatedAt:new Date().getTime(),hasCustomBabel:!1,hasCustomWebpack:!1,hasStaticDirs:!1,hasStorybookEslint:!1,refCount:0},o={...t==null?void 0:t.dependencies,...t==null?void 0:t.devDependencies,...t==null?void 0:t.peerDependencies},n=Object.keys(o).find(a=>!!I[a]);if(n){let{version:a}=await h(n);r.metaFramework={name:I[n],packageName:n,version:a}}let s=K();s&&(r.monorepo=s);try{let a=await(0,S.detect)({cwd:(0,y.getProjectRoot)()}),i=await(0,S.getNpmVersion)(a);r.packageManager={type:a,version:i}}catch{}r.hasCustomBabel=!!e.babel,r.hasCustomWebpack=!!e.webpackFinal,r.hasStaticDirs=!!e.staticDirs,e.typescript&&(r.typescriptOptions=e.typescript);let f=await Q(e);e.refs&&(r.refCount=Object.keys(e.refs).length),e.features&&(r.features=e.features);let c={};e.addons&&e.addons.forEach(a=>{let i,F;typeof a=="string"?i=M(a):(F=a.options,i=M(a.name)),c[i]={options:F,version:void 0}});let p=X(t);p&&(c.chromatic={version:void 0,versionSpecifier:p,options:void 0}),(await j(c)).forEach(({name:a,version:i})=>{c[a].version=i});let l=Object.keys(c),g=Object.keys(o).filter(a=>a.includes("storybook")&&!l.includes(a)).reduce((a,i)=>({...a,[i]:{version:void 0}}),{});(await j(g)).forEach(({name:a,version:i})=>{g[a].version=i});let ue=o.typescript?"typescript":"javascript",ge=!!o["eslint-plugin-storybook"],W=(0,y.getStorybookInfo)(t),ke=($=g[W.frameworkPackage])==null?void 0:$.version;return{...r,...f,storybookVersion:ke,storybookVersionSpecifier:W.version,language:ue,storybookPackages:g,addons:c,hasStorybookEslint:ge}},P,N=async t=>{var n;if(P)return P;let{packageJson:e={}}=Z.default.sync({cwd:process.cwd(),normalize:!1})||{},r=(t||(0,y.getStorybookConfiguration)(((n=e==null?void 0:e.scripts)==null?void 0:n.storybook)||"","-c","--config-dir"))??".storybook",o=(0,y.loadMainConfig)({configDir:r});return P=await ee({mainConfig:o,packageJson:e}),P};var me=m(require("isomorphic-unfetch")),ye=m(require("fetch-retry")),C=require("nanoid");var oe=m(require("path")),ne=require("child_process"),se=require("@storybook/core-common");var te=require("crypto"),re=t=>{let e=(0,te.createHash)("sha256");return e.update("storybook-telemetry-salt"),e.update(t),e.digest("hex")};function je(t){return t.replace(/#.*$/,"").replace(/^.*@/,"").replace(/^.*\/\//,"").replace(":","/")}var x,ae=()=>{if(x)return x;let t;try{let e=(0,se.getProjectRoot)(),r=oe.default.relative(e,process.cwd()),o=(0,ne.execSync)("git config --local --get remote.origin.url",{timeout:1e3,stdio:"pipe"});t=`${je(String(o))}${r}`,x=re(t)}catch{}return x};var T=require("@storybook/core-common"),V=Promise.resolve(),De=async(t,e)=>{let r=await T.cache.get("lastEvents")||{};r[t]={body:e,timestamp:Date.now()},await T.cache.set("lastEvents",r)},ce=async(t,e)=>(await V,V=De(t,e),V);var Oe=t=>{let{body:e,timestamp:r}=t;return{timestamp:r,eventType:e==null?void 0:e.eventType,eventId:e==null?void 0:e.eventId,sessionId:e==null?void 0:e.sessionId}},Re=["init","upgrade"],Ie=["build","dev","error"],ie=(t,e)=>{let r=e.map(o=>t==null?void 0:t[o]).filter(Boolean).sort((o,n)=>n.timestamp-o.timestamp);return r.length>0?r[0]:void 0},pe=async(t=void 0)=>{let e=t||await T.cache.get("lastEvents")||{},r=ie(e,Re),o=ie(e,Ie);if(!!r)return!(o!=null&&o.timestamp)||r.timestamp>o.timestamp?Oe(r):void 0};var Me=process.env.STORYBOOK_TELEMETRY_URL||"https://storybook.js.org/event-log",Ne=(0,ye.default)(me.default),E=[],Ve=(0,C.nanoid)();async function fe(t,e={retryDelay:1e3,immediate:!1}){let{eventType:r,payload:o,metadata:n,...s}=t,f=e.stripMetadata?{}:{anonymousId:ae(),inCI:Boolean(process.env.CI)},c=(0,C.nanoid)(),p={...s,eventType:r,eventId:c,sessionId:Ve,metadata:n,payload:o,context:f},u;try{u=Ne(Me,{method:"POST",body:JSON.stringify(p),headers:{"Content-Type":"application/json"},retries:3,retryOn:[503,504],retryDelay:l=>2**l*(typeof(e==null?void 0:e.retryDelay)=="number"&&!Number.isNaN(e==null?void 0:e.retryDelay)?e.retryDelay:1e3)}),E.push(u),e.immediate?await Promise.all(E):await u,await ce(r,p)}catch{}finally{E=E.filter(l=>l!==u)}}var A=m(require("chalk")),U=require("@storybook/core-common"),le="telemetry-notification-date",d=console,de=async()=>{await U.cache.get(le,null)||(U.cache.set(le,Date.now()),d.log(),d.log(`${A.default.magenta.bold("attention")} => Storybook now collects completely anonymous telemetry regarding usage.`),d.log("This information is used to shape Storybook's roadmap and prioritize features."),d.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:"),d.log(A.default.cyan("https://storybook.js.org/telemetry")),d.log())};var Ce=async(t,e={},r={})=>{var n;t!=="boot"&&await de();let o={eventType:t,payload:e};try{r!=null&&r.stripMetadata||(o.metadata=await N(r==null?void 0:r.configDir))}catch(s){o.payload.metadataErrorMessage=w(s).message,r!=null&&r.enableCrashReports&&(o.payload.metadataError=w(s))}finally{let{error:s}=o.payload;s&&(o.payload.error=w(s)),(!o.payload.error||(r==null?void 0:r.enableCrashReports))&&((n=process.env)!=null&&n.STORYBOOK_TELEMETRY_DEBUG&&(B.logger.info(`
2
- [telemetry]`),B.logger.info(JSON.stringify(o,null,2))),await fe(o,r))}};0&&(module.exports={computeStorybookMetadata,getPrecedingUpgrade,getStorybookCoreVersion,getStorybookMetadata,metaFrameworks,sanitizeAddonName,telemetry});
1
+ "use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var src_exports={};__export(src_exports,{computeStorybookMetadata:()=>computeStorybookMetadata,getPrecedingUpgrade:()=>getPrecedingUpgrade,getStorybookCoreVersion:()=>getStorybookCoreVersion,getStorybookMetadata:()=>getStorybookMetadata,metaFrameworks:()=>metaFrameworks,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_common2=require("@storybook/core-common");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)},getStorybookCoreVersion=async()=>{var _a;return(_a=(await Promise.all(["@storybook/core-common","@storybook/core-server"].map(getActualPackageVersion))).find(v=>v.version))==null?void 0:_a.version};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;let packageJson=import_fs_extra.default.readJsonSync(import_path2.default.join(projectRootPath,"package.json"));if(packageJson!=null&&packageJson.workspaces)return"Workspaces"};var import_path3=require("path");function regexpEscape(str){return str.replace(/[-[/{}()*+?.\\^$|]/g,"\\$&")}function cleanPaths(str,separator=import_path3.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),"g");str=str.replace(currentRegex,"$SNIP");let currentPath2=stack.join(separator+separator),currentRegex2=new RegExp(regexpEscape(currentPath2),"g");str=str.replace(currentRegex2,"$SNIP"),stack.pop()}return str}function sanitizeError(error,pathSeparator=import_path3.sep){error=JSON.parse(JSON.stringify(error,Object.getOwnPropertyNames(error)));let errorString=cleanPaths(JSON.stringify(error),pathSeparator);return JSON.parse(errorString)}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])}async function getFrameworkInfo(mainConfig){let{framework:frameworkInput}=mainConfig;if(!frameworkInput)return{};let framework=typeof frameworkInput=="string"?{name:frameworkInput}:frameworkInput,frameworkPackageJson=await getActualPackageJson(framework.name),builder=findMatchingPackage(frameworkPackageJson,knownBuilders),renderer=findMatchingPackage(frameworkPackageJson,knownRenderers);return{framework,builder,renderer}}function getChromaticVersionSpecifier(packageJson){var _a,_b,_c;let dependency=((_a=packageJson.dependencies)==null?void 0:_a.chromatic)||((_b=packageJson.devDependencies)==null?void 0:_b.chromatic)||((_c=packageJson.peerDependencies)==null?void 0:_c.chromatic);return dependency||(packageJson.scripts&&Object.values(packageJson.scripts).find(s=>s==null?void 0: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})=>{var _a;let metadata={generatedAt:new Date().getTime(),hasCustomBabel:!1,hasCustomWebpack:!1,hasStaticDirs:!1,hasStorybookEslint:!1,refCount:0},allDependencies={...packageJson==null?void 0:packageJson.dependencies,...packageJson==null?void 0:packageJson.devDependencies,...packageJson==null?void 0: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_common2.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,mainConfig.typescript&&(metadata.typescriptOptions=mainConfig.typescript);let frameworkInfo=await getFrameworkInfo(mainConfig);mainConfig.refs&&(metadata.refCount=Object.keys(mainConfig.refs).length),mainConfig.features&&(metadata.features=mainConfig.features);let addons={};mainConfig.addons&&mainConfig.addons.forEach(addon=>{let addonName,options;typeof addon=="string"?addonName=sanitizeAddonName(addon):(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_common2.getStorybookInfo)(packageJson),storybookVersion=(_a=storybookPackages[storybookInfo.frameworkPackage])==null?void 0:_a.version;return{...metadata,...frameworkInfo,storybookVersion,storybookVersionSpecifier:storybookInfo.version,language,storybookPackages,addons,hasStorybookEslint}},cachedMetadata,getStorybookMetadata=async _configDir=>{var _a;if(cachedMetadata)return cachedMetadata;let{packageJson={}}=import_read_pkg_up.default.sync({cwd:process.cwd(),normalize:!1})||{},configDir=(_configDir||(0,import_core_common2.getStorybookConfiguration)(((_a=packageJson==null?void 0:packageJson.scripts)==null?void 0:_a.storybook)||"","-c","--config-dir"))??".storybook",mainConfig=(0,import_core_common2.loadMainConfig)({configDir});return cachedMetadata=await computeStorybookMetadata({mainConfig,packageJson}),cachedMetadata};var import_isomorphic_unfetch=__toESM(require("isomorphic-unfetch")),import_fetch_retry=__toESM(require("fetch-retry")),import_nanoid=require("nanoid");var import_path4=__toESM(require("path")),import_child_process=require("child_process"),import_core_common3=require("@storybook/core-common");var import_crypto=require("crypto"),oneWayHash=payload=>{let hash=(0,import_crypto.createHash)("sha256");return hash.update("storybook-telemetry-salt"),hash.update(payload),hash.digest("hex")};function normalizeGitUrl(rawUrl){return rawUrl.replace(/#.*$/,"").replace(/^.*@/,"").replace(/^.*\/\//,"").replace(":","/")}var anonymousProjectId,getAnonymousProjectId=()=>{if(anonymousProjectId)return anonymousProjectId;let unhashedProjectId;try{let projectRoot=(0,import_core_common3.getProjectRoot)(),projectRootPath=import_path4.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_common4=require("@storybook/core-common"),operation=Promise.resolve(),setHelper=async(eventType,body)=>{let lastEvents=await import_core_common4.cache.get("lastEvents")||{};lastEvents[eventType]={body,timestamp:Date.now()},await import_core_common4.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==null?void 0:body.eventType,eventId:body==null?void 0:body.eventId,sessionId:body==null?void 0:body.sessionId}},UPGRADE_EVENTS=["init","upgrade"],RUN_EVENTS=["build","dev","error"],lastEvent=(lastEvents,eventTypes)=>{let descendingEvents=eventTypes.map(eventType=>lastEvents==null?void 0: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_common4.cache.get("lastEvents")||{},lastUpgradeEvent=lastEvent(lastEvents,UPGRADE_EVENTS),lastRunEvent=lastEvent(lastEvents,RUN_EVENTS);if(lastUpgradeEvent)return!(lastRunEvent!=null&&lastRunEvent.timestamp)||lastUpgradeEvent.timestamp>lastRunEvent.timestamp?upgradeFields(lastUpgradeEvent):void 0};var URL=process.env.STORYBOOK_TELEMETRY_URL||"https://storybook.js.org/event-log",fetch=(0,import_fetch_retry.default)(import_isomorphic_unfetch.default),tasks=[],sessionId=(0,import_nanoid.nanoid)();async function sendTelemetry(data,options={retryDelay:1e3,immediate:!1}){let{eventType,payload,metadata,...rest}=data,context=options.stripMetadata?{}:{anonymousId:getAnonymousProjectId(),inCI:Boolean(process.env.CI)},eventId=(0,import_nanoid.nanoid)(),body={...rest,eventType,eventId,sessionId,metadata,payload,context},request;try{request=fetch(URL,{method:"POST",body:JSON.stringify(body),headers:{"Content-Type":"application/json"},retries:3,retryOn:[503,504],retryDelay:attempt=>2**attempt*(typeof(options==null?void 0:options.retryDelay)=="number"&&!Number.isNaN(options==null?void 0:options.retryDelay)?options.retryDelay:1e3)}),tasks.push(request),options.immediate?await Promise.all(tasks):await request,await set(eventType,body)}catch{}finally{tasks=tasks.filter(task=>task!==request)}}var import_chalk=__toESM(require("chalk")),import_core_common5=require("@storybook/core-common"),TELEMETRY_KEY_NOTIFY_DATE="telemetry-notification-date",logger=console,notify=async()=>{await import_core_common5.cache.get(TELEMETRY_KEY_NOTIFY_DATE,null)||(import_core_common5.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={})=>{var _a;eventType!=="boot"&&await notify();let telemetryData={eventType,payload};try{options!=null&&options.stripMetadata||(telemetryData.metadata=await getStorybookMetadata(options==null?void 0:options.configDir))}catch(error){telemetryData.payload.metadataErrorMessage=sanitizeError(error).message,options!=null&&options.enableCrashReports&&(telemetryData.payload.metadataError=sanitizeError(error))}finally{let{error}=telemetryData.payload;error&&(telemetryData.payload.error=sanitizeError(error)),(!telemetryData.payload.error||options!=null&&options.enableCrashReports)&&((_a=process.env)!=null&&_a.STORYBOOK_TELEMETRY_DEBUG&&(import_client_logger.logger.info(`
2
+ [telemetry]`),import_client_logger.logger.info(JSON.stringify(telemetryData,null,2))),await sendTelemetry(telemetryData,options))}};0&&(module.exports={computeStorybookMetadata,getPrecedingUpgrade,getStorybookCoreVersion,getStorybookMetadata,metaFrameworks,sanitizeAddonName,telemetry});
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- var __require=(x=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(x,{get:(a,b)=>(typeof require!="undefined"?require:a)[b]}):x)(function(x){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+x+'" is not supported')});import{logger as logger2}from"@storybook/client-logger";import readPkgUp from"read-pkg-up";import{detect,getNpmVersion}from"detect-package-manager";import{loadMainConfig,getStorybookInfo,getStorybookConfiguration,getProjectRoot as getProjectRoot2}from"@storybook/core-common";import{readJson}from"fs-extra";import path from"path";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(path.join(packageName,"package.json"),{paths:[process.cwd()]});return await readJson(resolvedPackageJson)},getStorybookCoreVersion=async()=>(await Promise.all(["@storybook/core-common","@storybook/core-server"].map(getActualPackageVersion))).find(v=>v.version)?.version;import fs from"fs-extra";import path2 from"path";import{getProjectRoot}from"@storybook/core-common";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 fs.existsSync(configFile)});if(monorepoType)return monorepoType;if(!fs.existsSync(path2.join(projectRootPath,"package.json")))return;if(fs.readJsonSync(path2.join(projectRootPath,"package.json"))?.workspaces)return"Workspaces"};import{sep}from"path";function regexpEscape(str){return str.replace(/[-[/{}()*+?.\\^$|]/g,"\\$&")}function cleanPaths(str,separator=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),"g");str=str.replace(currentRegex,"$SNIP");let currentPath2=stack.join(separator+separator),currentRegex2=new RegExp(regexpEscape(currentPath2),"g");str=str.replace(currentRegex2,"$SNIP"),stack.pop()}return str}function sanitizeError(error,pathSeparator=sep){error=JSON.parse(JSON.stringify(error,Object.getOwnPropertyNames(error)));let errorString=cleanPaths(JSON.stringify(error),pathSeparator);return JSON.parse(errorString)}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])}async function getFrameworkInfo(mainConfig){let{framework:frameworkInput}=mainConfig;if(!frameworkInput)return{};let framework=typeof frameworkInput=="string"?{name:frameworkInput}:frameworkInput,frameworkPackageJson=await getActualPackageJson(framework.name),builder=findMatchingPackage(frameworkPackageJson,knownBuilders),renderer=findMatchingPackage(frameworkPackageJson,knownRenderers);return{framework,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:getProjectRoot2()}),packageManagerVerson=await getNpmVersion(packageManagerType);metadata.packageManager={type:packageManagerType,version:packageManagerVerson}}catch{}metadata.hasCustomBabel=!!mainConfig.babel,metadata.hasCustomWebpack=!!mainConfig.webpackFinal,metadata.hasStaticDirs=!!mainConfig.staticDirs,mainConfig.typescript&&(metadata.typescriptOptions=mainConfig.typescript);let frameworkInfo=await getFrameworkInfo(mainConfig);mainConfig.refs&&(metadata.refCount=Object.keys(mainConfig.refs).length),mainConfig.features&&(metadata.features=mainConfig.features);let addons={};mainConfig.addons&&mainConfig.addons.forEach(addon=>{let addonName,options;typeof addon=="string"?addonName=sanitizeAddonName(addon):(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),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=loadMainConfig({configDir});return cachedMetadata=await computeStorybookMetadata({mainConfig,packageJson}),cachedMetadata};import originalFetch from"isomorphic-unfetch";import retry from"fetch-retry";import{nanoid}from"nanoid";import path3 from"path";import{execSync}from"child_process";import{getProjectRoot as getProjectRoot3}from"@storybook/core-common";import{createHash}from"crypto";var oneWayHash=payload=>{let hash=createHash("sha256");return hash.update("storybook-telemetry-salt"),hash.update(payload),hash.digest("hex")};function normalizeGitUrl(rawUrl){return rawUrl.replace(/#.*$/,"").replace(/^.*@/,"").replace(/^.*\/\//,"").replace(":","/")}var anonymousProjectId,getAnonymousProjectId=()=>{if(anonymousProjectId)return anonymousProjectId;let unhashedProjectId;try{let projectRoot=getProjectRoot3(),projectRootPath=path3.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};import{cache}from"@storybook/core-common";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 URL=process.env.STORYBOOK_TELEMETRY_URL||"https://storybook.js.org/event-log",fetch=retry(originalFetch),tasks=[],sessionId=nanoid();async function sendTelemetry(data,options={retryDelay:1e3,immediate:!1}){let{eventType,payload,metadata,...rest}=data,context=options.stripMetadata?{}:{anonymousId:getAnonymousProjectId(),inCI:Boolean(process.env.CI)},eventId=nanoid(),body={...rest,eventType,eventId,sessionId,metadata,payload,context},request;try{request=fetch(URL,{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)}),tasks.push(request),options.immediate?await Promise.all(tasks):await request,await set(eventType,body)}catch{}finally{tasks=tasks.filter(task=>task!==request)}}import chalk from"chalk";import{cache as cache2}from"@storybook/core-common";var TELEMETRY_KEY_NOTIFY_DATE="telemetry-notification-date",logger=console,notify=async()=>{await cache2.get(TELEMETRY_KEY_NOTIFY_DATE,null)||(cache2.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&&(logger2.info(`
1
+ var __require=(x=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(x,{get:(a,b)=>(typeof require<"u"?require:a)[b]}):x)(function(x){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+x+'" is not supported')});import{logger as logger2}from"@storybook/client-logger";import readPkgUp from"read-pkg-up";import{detect,getNpmVersion}from"detect-package-manager";import{loadMainConfig,getStorybookInfo,getStorybookConfiguration,getProjectRoot as getProjectRoot2}from"@storybook/core-common";import*as fs from"fs-extra";import path from"path";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(path.join(packageName,"package.json"),{paths:[process.cwd()]});return await fs.readJson(resolvedPackageJson)},getStorybookCoreVersion=async()=>(await Promise.all(["@storybook/core-common","@storybook/core-server"].map(getActualPackageVersion))).find(v=>v.version)?.version;import fs2 from"fs-extra";import path2 from"path";import{getProjectRoot}from"@storybook/core-common";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.existsSync(configFile)});if(monorepoType)return monorepoType;if(!fs2.existsSync(path2.join(projectRootPath,"package.json")))return;if(fs2.readJsonSync(path2.join(projectRootPath,"package.json"))?.workspaces)return"Workspaces"};import{sep}from"path";function regexpEscape(str){return str.replace(/[-[/{}()*+?.\\^$|]/g,"\\$&")}function cleanPaths(str,separator=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),"g");str=str.replace(currentRegex,"$SNIP");let currentPath2=stack.join(separator+separator),currentRegex2=new RegExp(regexpEscape(currentPath2),"g");str=str.replace(currentRegex2,"$SNIP"),stack.pop()}return str}function sanitizeError(error,pathSeparator=sep){error=JSON.parse(JSON.stringify(error,Object.getOwnPropertyNames(error)));let errorString=cleanPaths(JSON.stringify(error),pathSeparator);return JSON.parse(errorString)}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])}async function getFrameworkInfo(mainConfig){let{framework:frameworkInput}=mainConfig;if(!frameworkInput)return{};let framework=typeof frameworkInput=="string"?{name:frameworkInput}:frameworkInput,frameworkPackageJson=await getActualPackageJson(framework.name),builder=findMatchingPackage(frameworkPackageJson,knownBuilders),renderer=findMatchingPackage(frameworkPackageJson,knownRenderers);return{framework,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:getProjectRoot2()}),packageManagerVerson=await getNpmVersion(packageManagerType);metadata.packageManager={type:packageManagerType,version:packageManagerVerson}}catch{}metadata.hasCustomBabel=!!mainConfig.babel,metadata.hasCustomWebpack=!!mainConfig.webpackFinal,metadata.hasStaticDirs=!!mainConfig.staticDirs,mainConfig.typescript&&(metadata.typescriptOptions=mainConfig.typescript);let frameworkInfo=await getFrameworkInfo(mainConfig);mainConfig.refs&&(metadata.refCount=Object.keys(mainConfig.refs).length),mainConfig.features&&(metadata.features=mainConfig.features);let addons={};mainConfig.addons&&mainConfig.addons.forEach(addon=>{let addonName,options;typeof addon=="string"?addonName=sanitizeAddonName(addon):(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),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=loadMainConfig({configDir});return cachedMetadata=await computeStorybookMetadata({mainConfig,packageJson}),cachedMetadata};import originalFetch from"isomorphic-unfetch";import retry from"fetch-retry";import{nanoid}from"nanoid";import path3 from"path";import{execSync}from"child_process";import{getProjectRoot as getProjectRoot3}from"@storybook/core-common";import{createHash}from"crypto";var oneWayHash=payload=>{let hash=createHash("sha256");return hash.update("storybook-telemetry-salt"),hash.update(payload),hash.digest("hex")};function normalizeGitUrl(rawUrl){return rawUrl.replace(/#.*$/,"").replace(/^.*@/,"").replace(/^.*\/\//,"").replace(":","/")}var anonymousProjectId,getAnonymousProjectId=()=>{if(anonymousProjectId)return anonymousProjectId;let unhashedProjectId;try{let projectRoot=getProjectRoot3(),projectRootPath=path3.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};import{cache}from"@storybook/core-common";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 URL=process.env.STORYBOOK_TELEMETRY_URL||"https://storybook.js.org/event-log",fetch=retry(originalFetch),tasks=[],sessionId=nanoid();async function sendTelemetry(data,options={retryDelay:1e3,immediate:!1}){let{eventType,payload,metadata,...rest}=data,context=options.stripMetadata?{}:{anonymousId:getAnonymousProjectId(),inCI:Boolean(process.env.CI)},eventId=nanoid(),body={...rest,eventType,eventId,sessionId,metadata,payload,context},request;try{request=fetch(URL,{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)}),tasks.push(request),options.immediate?await Promise.all(tasks):await request,await set(eventType,body)}catch{}finally{tasks=tasks.filter(task=>task!==request)}}import chalk from"chalk";import{cache as cache2}from"@storybook/core-common";var TELEMETRY_KEY_NOTIFY_DATE="telemetry-notification-date",logger=console,notify=async()=>{await cache2.get(TELEMETRY_KEY_NOTIFY_DATE,null)||(cache2.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&&(logger2.info(`
2
2
  [telemetry]`),logger2.info(JSON.stringify(telemetryData,null,2))),await sendTelemetry(telemetryData,options))}};export{computeStorybookMetadata,getPrecedingUpgrade,getStorybookCoreVersion,getStorybookMetadata,metaFrameworks,sanitizeAddonName,telemetry};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/telemetry",
3
- "version": "7.0.0-beta.2",
3
+ "version": "7.0.0-beta.20",
4
4
  "description": "Telemetry logging for crash reports and usage statistics",
5
5
  "keywords": [
6
6
  "storybook"
@@ -22,6 +22,7 @@
22
22
  "sideEffects": false,
23
23
  "exports": {
24
24
  ".": {
25
+ "node": "./dist/index.js",
25
26
  "require": "./dist/index.js",
26
27
  "import": "./dist/index.mjs",
27
28
  "types": "./dist/index.d.ts"
@@ -42,8 +43,8 @@
42
43
  "prep": "../../../scripts/prepare/bundle.ts"
43
44
  },
44
45
  "dependencies": {
45
- "@storybook/client-logger": "7.0.0-beta.2",
46
- "@storybook/core-common": "7.0.0-beta.2",
46
+ "@storybook/client-logger": "7.0.0-beta.20",
47
+ "@storybook/core-common": "7.0.0-beta.20",
47
48
  "chalk": "^4.1.0",
48
49
  "detect-package-manager": "^2.0.1",
49
50
  "fetch-retry": "^5.0.2",
@@ -64,5 +65,5 @@
64
65
  ],
65
66
  "platform": "node"
66
67
  },
67
- "gitHead": "66a0d588184add900c48d49f3a62743fa9cc5185"
68
+ "gitHead": "22701aedf564e467511887eb041f32ae0c96bcde"
68
69
  }