@storybook/telemetry 7.0.0-alpha.56 → 7.0.0-alpha.58

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
@@ -969,10 +969,6 @@ interface StorybookConfig {
969
969
  staticDirs?: (DirectoryMapping | string)[];
970
970
  logLevel?: string;
971
971
  features?: {
972
- /**
973
- * Allows to disable deprecated implicit PostCSS loader. (will be removed in 7.0)
974
- */
975
- postcss?: boolean;
976
972
  /**
977
973
  * Build stories.json automatically on start/build
978
974
  */
@@ -1071,7 +1067,7 @@ declare const monorepoConfigs: {
1071
1067
  };
1072
1068
  type MonorepoType = keyof typeof monorepoConfigs | 'Workspaces' | undefined;
1073
1069
 
1074
- type EventType = 'boot' | 'dev' | 'build' | 'upgrade' | 'init' | 'error' | 'error-metadata';
1070
+ type EventType = 'boot' | 'dev' | 'build' | 'upgrade' | 'init' | 'error' | 'error-metadata' | 'version-update';
1075
1071
  interface Dependency {
1076
1072
  version: string | undefined;
1077
1073
  }
@@ -1132,6 +1128,15 @@ declare const computeStorybookMetadata: ({ packageJson, mainConfig, }: {
1132
1128
  }) => Promise<StorybookMetadata>;
1133
1129
  declare const getStorybookMetadata: (_configDir?: string) => Promise<StorybookMetadata>;
1134
1130
 
1131
+ declare const getStorybookCoreVersion: () => Promise<any>;
1132
+
1133
+ declare const getPrecedingUpgrade: (eventType: EventType, events?: any) => Promise<{
1134
+ timestamp: any;
1135
+ eventType: any;
1136
+ eventId: any;
1137
+ sessionId: any;
1138
+ } | undefined>;
1139
+
1135
1140
  declare const telemetry: (eventType: EventType, payload?: Payload, options?: Partial<Options>) => Promise<void>;
1136
1141
 
1137
- export { Dependency, EventType, Options, Payload, StorybookAddon, StorybookMetadata, TelemetryData, computeStorybookMetadata, getStorybookMetadata, metaFrameworks, sanitizeAddonName, telemetry };
1142
+ export { Dependency, EventType, Options, Payload, StorybookAddon, StorybookMetadata, TelemetryData, computeStorybookMetadata, getPrecedingUpgrade, getStorybookCoreVersion, getStorybookMetadata, metaFrameworks, sanitizeAddonName, telemetry };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var ye=Object.create;var u=Object.defineProperty;var pe=Object.getOwnPropertyDescriptor;var me=Object.getOwnPropertyNames;var fe=Object.getPrototypeOf,le=Object.prototype.hasOwnProperty;var de=(e,t)=>{for(var o in t)u(e,o,{get:t[o],enumerable:!0})},L=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of me(t))!le.call(e,n)&&n!==o&&u(e,n,{get:()=>t[n],enumerable:!(r=pe(t,n))||r.enumerable});return e};var p=(e,t,o)=>(o=e!=null?ye(fe(e)):{},L(t||!e||!e.__esModule?u(o,"default",{value:e,enumerable:!0}):o,e)),ge=e=>L(u({},"__esModule",{value:!0}),e);var Se={};de(Se,{computeStorybookMetadata:()=>K,getStorybookMetadata:()=>M,metaFrameworks:()=>O,sanitizeAddonName:()=>R,telemetry:()=>Pe});module.exports=ge(Se);var B=require("@storybook/client-logger");var J=p(require("read-pkg-up")),P=require("detect-package-manager"),m=require("@storybook/core-common");var F=p(require("path")),j=async e=>{let t=Object.keys(e);return Promise.all(t.map(v))},v=async e=>{try{let t=await D(e);return{name:e,version:t.version}}catch{return{name:e,version:null}}},D=async e=>require(F.default.join(e,"package.json"));var k=p(require("fs-extra")),b=p(require("path")),_=require("@storybook/core-common"),Y={Nx:"nx.json",Turborepo:"turbo.json",Lerna:"lerna.json",Rush:"rush.json",Lage:"lage.config.json"},W=()=>{let e=(0,_.getProjectRoot)();if(!e)return;let o=Object.keys(Y).find(n=>{let s=b.default.join(e,Y[n]);return k.default.existsSync(s)});if(o)return o;if(!k.default.existsSync(b.default.join(e,"package.json")))return;let r=k.default.readJsonSync(b.default.join(e,"package.json"));if(r!=null&&r.workspaces)return"Workspaces"};var T=require("path");function z(e){return e.replace(/[-[/{}()*+?.\\^$|]/g,"\\$&")}function E(e,t=T.sep){if(!e)return e;let o=process.cwd().split(t);for(;o.length>1;){let r=o.join(t),n=new RegExp(z(r),"g");e=e.replace(n,"$SNIP");let s=o.join(t+t),f=new RegExp(z(s),"g");e=e.replace(f,"$SNIP"),o.pop()}return e}function h(e,t=T.sep){e=JSON.parse(JSON.stringify(e,Object.getOwnPropertyNames(e)));let o=E(JSON.stringify(e),t);return JSON.parse(o)}var ue=["html","react","svelte","vue3","preact","server","vue","web-components","angular","ember"],ke=["builder-webpack5","builder-vite"];function U(e,t){let{name:o="",version:r,dependencies:n,devDependencies:s,peerDependencies:f}=e,c={[o]:r,...n,...s,...f};return t.map(y=>`@storybook/${y}`).find(y=>c[y])}async function H(e){let{framework:t}=e;if(!t)return{};let o=typeof t=="string"?{name:t}:t,r=await D(o.name),n=U(r,ke),s=U(r,ue);return{framework:o,builder:n,renderer:s}}var O={next:"Next","react-scripts":"CRA",gatsby:"Gatsby","@nuxtjs/storybook":"nuxt","@nrwl/storybook":"nx","@vue/cli-service":"vue-cli","@sveltejs/kit":"svelte-kit"},R=e=>E(e).replace(/\/dist\/.*/,"").replace(/\.[mc]?[tj]?s[x]?$/,"").replace(/\/register$/,"").replace(/\/manager$/,"").replace(/\/preset$/,""),K=async({packageJson:e,mainConfig:t})=>{var $;let o={generatedAt:new Date().getTime(),hasCustomBabel:!1,hasCustomWebpack:!1,hasStaticDirs:!1,hasStorybookEslint:!1,refCount:0},r={...e==null?void 0:e.dependencies,...e==null?void 0:e.devDependencies,...e==null?void 0:e.peerDependencies},n=Object.keys(r).find(a=>!!O[a]);if(n){let{version:a}=await v(n);o.metaFramework={name:O[n],packageName:n,version:a}}let s=W();s&&(o.monorepo=s);try{let a=await(0,P.detect)({cwd:(0,m.getProjectRoot)()}),i=await(0,P.getNpmVersion)(a);o.packageManager={type:a,version:i}}catch{}o.hasCustomBabel=!!t.babel,o.hasCustomWebpack=!!t.webpackFinal,o.hasStaticDirs=!!t.staticDirs,t.typescript&&(o.typescriptOptions=t.typescript);let f=await H(t);t.refs&&(o.refCount=Object.keys(t.refs).length),t.features&&(o.features=t.features);let c={};t.addons&&t.addons.forEach(a=>{let i,V;typeof a=="string"?i=R(a):(V=a.options,i=R(a.name)),c[i]={options:V,version:void 0}}),(await j(c)).forEach(({name:a,version:i})=>{c[a].version=i});let l=Object.keys(c),g=Object.keys(r).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 se=r.typescript?"typescript":"javascript",ie=!!r["eslint-plugin-storybook"],C=(0,m.getStorybookInfo)(e),ce=(($=g[C.frameworkPackage])==null?void 0:$.version)||C.version;return{...o,...f,storybookVersion:ce,language:se,storybookPackages:g,addons:c,hasStorybookEslint:ie}},w,M=async e=>{var n;if(w)return w;let{packageJson:t={}}=J.default.sync({cwd:process.cwd(),normalize:!1})||{},o=(e||(0,m.getStorybookConfiguration)(((n=t==null?void 0:t.scripts)==null?void 0:n.storybook)||"","-c","--config-dir"))??".storybook",r=(0,m.loadMainConfig)({configDir:o});return w=await K({mainConfig:r,packageJson:t}),w};var te=p(require("isomorphic-unfetch")),oe=p(require("fetch-retry")),N=require("nanoid");var Q=p(require("path")),X=require("child_process"),Z=require("@storybook/core-common");var q=require("crypto"),G=e=>{let t=(0,q.createHash)("sha256");return t.update("storybook-telemetry-salt"),t.update(e),t.digest("hex")};var S,ee=()=>{if(S)return S;let e;try{let t=(0,Z.getProjectRoot)(),o=Q.default.relative(t,process.cwd()),r=(0,X.execSync)("git config --local --get remote.origin.url",{timeout:1e3,stdio:"pipe"});e=`${String(r).trim()}${o}`,S=G(e)}catch{}return S};var be=process.env.STORYBOOK_TELEMETRY_URL||"https://storybook.js.org/event-log",he=(0,oe.default)(te.default),x=[],we=(0,N.nanoid)();async function re(e,t={retryDelay:1e3,immediate:!1}){let{payload:o,metadata:r,...n}=e,s=t.stripMetadata?{}:{anonymousId:ee(),inCI:Boolean(process.env.CI)},f=(0,N.nanoid)(),c={...n,eventId:f,sessionId:we,metadata:r,payload:o,context:s},y;try{y=he(be,{method:"POST",body:JSON.stringify(c),headers:{"Content-Type":"application/json"},retries:3,retryOn:[503,504],retryDelay:l=>2**l*(typeof(t==null?void 0:t.retryDelay)=="number"&&!Number.isNaN(t==null?void 0:t.retryDelay)?t.retryDelay:1e3)}),x.push(y),t.immediate?await Promise.all(x):await y}catch{}finally{x=x.filter(l=>l!==y)}}var I=p(require("chalk")),A=require("@storybook/core-common"),ne="telemetry-notification-date",d=console,ae=async()=>{await A.cache.get(ne,null)||(A.cache.set(ne,Date.now()),d.log(),d.log(`${I.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(I.default.cyan("https://storybook.js.org/telemetry")),d.log())};var Pe=async(e,t={},o={})=>{var n;e!=="boot"&&await ae();let r={eventType:e,payload:t};try{o!=null&&o.stripMetadata||(r.metadata=await M(o==null?void 0:o.configDir))}catch(s){r.payload.metadataErrorMessage=h(s).message,o!=null&&o.enableCrashReports&&(r.payload.metadataError=h(s))}finally{let{error:s}=r.payload;s&&(r.payload.error=h(s)),(!r.payload.error||(o==null?void 0:o.enableCrashReports))&&((n=process.env)!=null&&n.STORYBOOK_TELEMETRY_DEBUG&&(B.logger.info(`
2
- [telemetry]`),B.logger.info(JSON.stringify(r,null,2))),await re(r,o))}};0&&(module.exports={computeStorybookMetadata,getStorybookMetadata,metaFrameworks,sanitizeAddonName,telemetry});
1
+ "use strict";var ge=Object.create;var b=Object.defineProperty;var ue=Object.getOwnPropertyDescriptor;var ke=Object.getOwnPropertyNames;var be=Object.getPrototypeOf,he=Object.prototype.hasOwnProperty;var we=(t,e)=>{for(var o in e)b(t,o,{get:e[o],enumerable:!0})},Y=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of ke(e))!he.call(t,r)&&r!==o&&b(t,r,{get:()=>e[r],enumerable:!(n=ue(e,r))||n.enumerable});return t};var m=(t,e,o)=>(o=t!=null?ge(be(t)):{},Y(e||!t||!t.__esModule?b(o,"default",{value:t,enumerable:!0}):o,t)),Pe=t=>Y(b({},"__esModule",{value:!0}),t);var Oe={};we(Oe,{computeStorybookMetadata:()=>X,getPrecedingUpgrade:()=>se,getStorybookCoreVersion:()=>U,getStorybookMetadata:()=>N,metaFrameworks:()=>M,sanitizeAddonName:()=>I,telemetry:()=>Ee});module.exports=Pe(Oe);var B=require("@storybook/client-logger");var Q=m(require("read-pkg-up")),S=require("detect-package-manager"),f=require("@storybook/core-common");var _=require("fs-extra"),W=m(require("path")),D=async t=>{let e=Object.keys(t);return Promise.all(e.map(h))},h=async t=>{try{let e=await E(t);return{name:t,version:e.version}}catch{return{name:t,version:null}}},E=async t=>{let e=require.resolve(W.default.join(t,"package.json"),{paths:[process.cwd()]});return await(0,_.readJson)(e)},U=async()=>{var e;return(e=(await Promise.all(["@storybook/core-common","@storybook/core-server"].map(h))).find(o=>o.version))==null?void 0:e.version};var w=m(require("fs-extra")),P=m(require("path")),J=require("@storybook/core-common"),z={Nx:"nx.json",Turborepo:"turbo.json",Lerna:"lerna.json",Rush:"rush.json",Lage:"lage.config.json"},H=()=>{let t=(0,J.getProjectRoot)();if(!t)return;let o=Object.keys(z).find(r=>{let a=P.default.join(t,z[r]);return w.default.existsSync(a)});if(o)return o;if(!w.default.existsSync(P.default.join(t,"package.json")))return;let n=w.default.readJsonSync(P.default.join(t,"package.json"));if(n!=null&&n.workspaces)return"Workspaces"};var O=require("path");function K(t){return t.replace(/[-[/{}()*+?.\\^$|]/g,"\\$&")}function R(t,e=O.sep){if(!t)return t;let o=process.cwd().split(e);for(;o.length>1;){let n=o.join(e),r=new RegExp(K(n),"g");t=t.replace(r,"$SNIP");let a=o.join(e+e),i=new RegExp(K(a),"g");t=t.replace(i,"$SNIP"),o.pop()}return t}function v(t,e=O.sep){t=JSON.parse(JSON.stringify(t,Object.getOwnPropertyNames(t)));let o=R(JSON.stringify(t),e);return JSON.parse(o)}var ve=["html","react","svelte","vue3","preact","server","vue","web-components","angular","ember"],xe=["builder-webpack5","builder-vite"];function q(t,e){let{name:o="",version:n,dependencies:r,devDependencies:a,peerDependencies:i}=t,p={[o]:n,...r,...a,...i};return e.map(l=>`@storybook/${l}`).find(l=>p[l])}async function G(t){let{framework:e}=t;if(!e)return{};let o=typeof e=="string"?{name:e}:e,n=await E(o.name),r=q(n,xe),a=q(n,ve);return{framework:o,builder:r,renderer:a}}var M={next:"Next","react-scripts":"CRA",gatsby:"Gatsby","@nuxtjs/storybook":"nuxt","@nrwl/storybook":"nx","@vue/cli-service":"vue-cli","@sveltejs/kit":"sveltekit"},I=t=>R(t).replace(/\/dist\/.*/,"").replace(/\.[mc]?[tj]?s[x]?$/,"").replace(/\/register$/,"").replace(/\/manager$/,"").replace(/\/preset$/,""),X=async({packageJson:t,mainConfig:e})=>{var F;let o={generatedAt:new Date().getTime(),hasCustomBabel:!1,hasCustomWebpack:!1,hasStaticDirs:!1,hasStorybookEslint:!1,refCount:0},n={...t==null?void 0:t.dependencies,...t==null?void 0:t.devDependencies,...t==null?void 0:t.peerDependencies},r=Object.keys(n).find(s=>!!M[s]);if(r){let{version:s}=await h(r);o.metaFramework={name:M[r],packageName:r,version:s}}let a=H();a&&(o.monorepo=a);try{let s=await(0,S.detect)({cwd:(0,f.getProjectRoot)()}),c=await(0,S.getNpmVersion)(s);o.packageManager={type:s,version:c}}catch{}o.hasCustomBabel=!!e.babel,o.hasCustomWebpack=!!e.webpackFinal,o.hasStaticDirs=!!e.staticDirs,e.typescript&&(o.typescriptOptions=e.typescript);let i=await G(e);e.refs&&(o.refCount=Object.keys(e.refs).length),e.features&&(o.features=e.features);let p={};e.addons&&e.addons.forEach(s=>{let c,L;typeof s=="string"?c=I(s):(L=s.options,c=I(s.name)),p[c]={options:L,version:void 0}}),(await D(p)).forEach(({name:s,version:c})=>{p[s].version=c});let d=Object.keys(p),y=Object.keys(n).filter(s=>s.includes("storybook")&&!d.includes(s)).reduce((s,c)=>({...s,[c]:{version:void 0}}),{});(await D(y)).forEach(({name:s,version:c})=>{y[s].version=c});let fe=n.typescript?"typescript":"javascript",le=!!n["eslint-plugin-storybook"],$=(0,f.getStorybookInfo)(t),de=((F=y[$.frameworkPackage])==null?void 0:F.version)||$.version;return{...o,...i,storybookVersion:de,language:fe,storybookPackages:y,addons:p,hasStorybookEslint:le}},x,N=async t=>{var r;if(x)return x;let{packageJson:e={}}=Q.default.sync({cwd:process.cwd(),normalize:!1})||{},o=(t||(0,f.getStorybookConfiguration)(((r=e==null?void 0:e.scripts)==null?void 0:r.storybook)||"","-c","--config-dir"))??".storybook",n=(0,f.loadMainConfig)({configDir:o});return x=await X({mainConfig:n,packageJson:e}),x};var ie=m(require("isomorphic-unfetch")),ce=m(require("fetch-retry")),A=require("nanoid");var te=m(require("path")),oe=require("child_process"),re=require("@storybook/core-common");var Z=require("crypto"),ee=t=>{let e=(0,Z.createHash)("sha256");return e.update("storybook-telemetry-salt"),e.update(t),e.digest("hex")};var j,ne=()=>{if(j)return j;let t;try{let e=(0,re.getProjectRoot)(),o=te.default.relative(e,process.cwd()),n=(0,oe.execSync)("git config --local --get remote.origin.url",{timeout:1e3,stdio:"pipe"});t=`${String(n).trim()}${o}`,j=ee(t)}catch{}return j};var T=require("@storybook/core-common"),ae=async(t,e)=>{let o=await T.cache.get("lastEvents")||{};o[t]={body:e,timestamp:Date.now()},await T.cache.set("lastEvents",o)};var Se=t=>{let{body:e,timestamp:o}=t;return{timestamp:o,eventType:e==null?void 0:e.eventType,eventId:e==null?void 0:e.eventId,sessionId:e==null?void 0:e.sessionId}},se=async(t,e=void 0)=>{let o=e||await T.cache.get("lastEvents"),r=o==null?void 0:o.init,a=o==null?void 0:o.upgrade;if(a&&(!r||a.timestamp>(r==null?void 0:r.timestamp))&&(r=a),!r)return;let i=o==null?void 0:o[t];return!(i!=null&&i.timestamp)||r.timestamp>i.timestamp?Se(r):void 0};var je=process.env.STORYBOOK_TELEMETRY_URL||"https://storybook.js.org/event-log",Te=(0,ce.default)(ie.default),k=[],De=(0,A.nanoid)();async function pe(t,e={retryDelay:1e3,immediate:!1}){let{eventType:o,payload:n,metadata:r,...a}=t,i=e.stripMetadata?{}:{anonymousId:ne(),inCI:Boolean(process.env.CI)},p=(0,A.nanoid)(),l={...a,eventType:o,eventId:p,sessionId:De,metadata:r,payload:n,context:i},d,y;try{d=Te(je,{method:"POST",body:JSON.stringify(l),headers:{"Content-Type":"application/json"},retries:3,retryOn:[503,504],retryDelay:g=>2**g*(typeof(e==null?void 0:e.retryDelay)=="number"&&!Number.isNaN(e==null?void 0:e.retryDelay)?e.retryDelay:1e3)}),k.push(d),y=ae(o,l),k.push(y),e.immediate?await Promise.all(k):(await d,await y)}catch{}finally{k=k.filter(g=>g!==d&&g!==y)}}var C=m(require("chalk")),V=require("@storybook/core-common"),ye="telemetry-notification-date",u=console,me=async()=>{await V.cache.get(ye,null)||(V.cache.set(ye,Date.now()),u.log(),u.log(`${C.default.magenta.bold("attention")} => Storybook now collects completely anonymous telemetry regarding usage.`),u.log("This information is used to shape Storybook's roadmap and prioritize features."),u.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:"),u.log(C.default.cyan("https://storybook.js.org/telemetry")),u.log())};var Ee=async(t,e={},o={})=>{var r;t!=="boot"&&await me();let n={eventType:t,payload:e};try{o!=null&&o.stripMetadata||(n.metadata=await N(o==null?void 0:o.configDir))}catch(a){n.payload.metadataErrorMessage=v(a).message,o!=null&&o.enableCrashReports&&(n.payload.metadataError=v(a))}finally{let{error:a}=n.payload;a&&(n.payload.error=v(a)),(!n.payload.error||(o==null?void 0:o.enableCrashReports))&&((r=process.env)!=null&&r.STORYBOOK_TELEMETRY_DEBUG&&(B.logger.info(`
2
+ [telemetry]`),B.logger.info(JSON.stringify(n,null,2))),await pe(n,o))}};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 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=>__require(path.join(packageName,"package.json"));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}}var metaFrameworks={next:"Next","react-scripts":"CRA",gatsby:"Gatsby","@nuxtjs/storybook":"nuxt","@nrwl/storybook":"nx","@vue/cli-service":"vue-cli","@sveltejs/kit":"svelte-kit"},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}}),(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||storybookInfo.version;return{...metadata,...frameworkInfo,storybookVersion,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")};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=`${String(originBuffer).trim()}${projectRootPath}`,anonymousProjectId=oneWayHash(unhashedProjectId)}catch{}return anonymousProjectId};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{payload,metadata,...rest}=data,context=options.stripMetadata?{}:{anonymousId:getAnonymousProjectId(),inCI:Boolean(process.env.CI)},eventId=nanoid(),body={...rest,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}catch{}finally{tasks=tasks.filter(task=>task!==request)}}import chalk from"chalk";import{cache}from"@storybook/core-common";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&&(logger2.info(`
2
- [telemetry]`),logger2.info(JSON.stringify(telemetryData,null,2))),await sendTelemetry(telemetryData,options))}};export{computeStorybookMetadata,getStorybookMetadata,metaFrameworks,sanitizeAddonName,telemetry};
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}}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}}),(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||storybookInfo.version;return{...metadata,...frameworkInfo,storybookVersion,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")};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=`${String(originBuffer).trim()}${projectRootPath}`,anonymousProjectId=oneWayHash(unhashedProjectId)}catch{}return anonymousProjectId};import{cache}from"@storybook/core-common";var set=async(eventType,body)=>{let lastEvents=await cache.get("lastEvents")||{};lastEvents[eventType]={body,timestamp:Date.now()},await cache.set("lastEvents",lastEvents)};var upgradeFields=event=>{let{body,timestamp}=event;return{timestamp,eventType:body?.eventType,eventId:body?.eventId,sessionId:body?.sessionId}},getPrecedingUpgrade=async(eventType,events=void 0)=>{let lastEvents=events||await cache.get("lastEvents"),precedingUpgrade=lastEvents?.init,upgrade=lastEvents?.upgrade;if(upgrade&&(!precedingUpgrade||upgrade.timestamp>precedingUpgrade?.timestamp)&&(precedingUpgrade=upgrade),!precedingUpgrade)return;let lastEventOfType=lastEvents?.[eventType];return!lastEventOfType?.timestamp||precedingUpgrade.timestamp>lastEventOfType.timestamp?upgradeFields(precedingUpgrade):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,cache3;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),cache3=set(eventType,body),tasks.push(cache3),options.immediate?await Promise.all(tasks):(await request,await cache3)}catch{}finally{tasks=tasks.filter(task=>task!==request&&task!==cache3)}}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
+ [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-alpha.56",
3
+ "version": "7.0.0-alpha.58",
4
4
  "description": "Telemetry logging for crash reports and usage statistics",
5
5
  "keywords": [
6
6
  "storybook"
@@ -42,8 +42,8 @@
42
42
  "prep": "../../../scripts/prepare/bundle.ts"
43
43
  },
44
44
  "dependencies": {
45
- "@storybook/client-logger": "7.0.0-alpha.56",
46
- "@storybook/core-common": "7.0.0-alpha.56",
45
+ "@storybook/client-logger": "7.0.0-alpha.58",
46
+ "@storybook/core-common": "7.0.0-alpha.58",
47
47
  "chalk": "^4.1.0",
48
48
  "detect-package-manager": "^2.0.1",
49
49
  "fetch-retry": "^5.0.2",
@@ -64,5 +64,5 @@
64
64
  ],
65
65
  "platform": "node"
66
66
  },
67
- "gitHead": "c8e9a862bb83c4a0d6b5975e795b4ca7f7ff7bc2"
67
+ "gitHead": "c7f8e3e8486ab5caf3da0ef016acfd2065f0dc05"
68
68
  }