@storybook/cli 6.5.0-alpha.9 → 6.5.0-beta.2

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.
Files changed (293) hide show
  1. package/bin/index.js +1 -0
  2. package/dist/cjs/add.js +3 -3
  3. package/dist/cjs/automigrate/fixes/builder-vite.js +122 -0
  4. package/dist/cjs/automigrate/fixes/eslint-plugin.js +3 -3
  5. package/dist/cjs/automigrate/fixes/index.js +3 -1
  6. package/dist/cjs/automigrate/fixes/mainjsFramework.js +2 -2
  7. package/dist/cjs/automigrate/fixes/webpack5.js +2 -2
  8. package/dist/cjs/automigrate/types.js +5 -1
  9. package/dist/cjs/babel-config.js +1 -1
  10. package/dist/cjs/detect.js +67 -4
  11. package/dist/cjs/extract.js +7 -2
  12. package/dist/cjs/frameworks/angular/Header.stories.ts +8 -3
  13. package/dist/cjs/frameworks/angular/Page.stories.ts +12 -10
  14. package/dist/cjs/frameworks/angular/header.component.ts +30 -19
  15. package/dist/cjs/frameworks/angular/page.component.ts +13 -27
  16. package/dist/cjs/frameworks/common/header.css +6 -0
  17. package/dist/cjs/frameworks/html/js/Header.js +2 -0
  18. package/dist/cjs/frameworks/html/js/Header.stories.js +8 -1
  19. package/dist/cjs/frameworks/html/js/Page.js +29 -2
  20. package/dist/cjs/frameworks/html/js/Page.stories.js +12 -13
  21. package/dist/cjs/frameworks/html/ts/Header.stories.ts +5 -0
  22. package/dist/cjs/frameworks/html/ts/Header.ts +3 -1
  23. package/dist/cjs/frameworks/html/ts/Page.stories.ts +12 -14
  24. package/dist/cjs/frameworks/html/ts/Page.ts +32 -8
  25. package/dist/cjs/frameworks/preact/Header.jsx +6 -1
  26. package/dist/cjs/frameworks/preact/Header.stories.jsx +7 -1
  27. package/dist/cjs/frameworks/preact/Page.jsx +62 -63
  28. package/dist/cjs/frameworks/preact/Page.stories.jsx +12 -9
  29. package/dist/cjs/frameworks/react/js/Header.jsx +6 -1
  30. package/dist/cjs/frameworks/react/js/Header.stories.jsx +7 -1
  31. package/dist/cjs/frameworks/react/js/Page.jsx +61 -63
  32. package/dist/cjs/frameworks/react/js/Page.stories.jsx +12 -9
  33. package/dist/cjs/frameworks/react/ts/Header.stories.tsx +7 -1
  34. package/dist/cjs/frameworks/react/ts/Header.tsx +11 -2
  35. package/dist/cjs/frameworks/react/ts/Page.stories.tsx +12 -9
  36. package/dist/cjs/frameworks/react/ts/Page.tsx +66 -60
  37. package/dist/cjs/frameworks/svelte/Button.stories.js +51 -0
  38. package/dist/cjs/frameworks/svelte/Header.stories.js +35 -0
  39. package/dist/cjs/frameworks/svelte/Header.svelte +3 -0
  40. package/dist/cjs/frameworks/svelte/Page.stories.js +27 -0
  41. package/dist/cjs/frameworks/svelte/Page.svelte +2 -16
  42. package/dist/cjs/frameworks/vue/Header.stories.js +7 -1
  43. package/dist/cjs/frameworks/vue/Header.vue +1 -0
  44. package/dist/cjs/frameworks/vue/Page.stories.js +15 -13
  45. package/dist/cjs/frameworks/vue/Page.vue +7 -7
  46. package/dist/cjs/frameworks/vue3/Header.stories.js +7 -1
  47. package/dist/cjs/frameworks/vue3/Header.vue +1 -0
  48. package/dist/cjs/frameworks/vue3/Page.stories.js +16 -17
  49. package/dist/cjs/frameworks/vue3/Page.vue +18 -8
  50. package/dist/cjs/frameworks/web-components/js/Page.js +2 -2
  51. package/dist/cjs/frameworks/web-components/ts/Page.ts +2 -2
  52. package/dist/cjs/generate.js +5 -0
  53. package/dist/cjs/generators/ANGULAR/angular-helpers.js +5 -5
  54. package/dist/cjs/generators/ANGULAR/index.js +2 -2
  55. package/dist/cjs/generators/ANGULAR/template-csf/.storybook/tsconfig.json +17 -5
  56. package/dist/cjs/generators/AURELIA/index.js +1 -1
  57. package/dist/cjs/generators/AURELIA/template-csf/.storybook/tsconfig.json +16 -5
  58. package/dist/cjs/generators/EMBER/index.js +1 -1
  59. package/dist/cjs/generators/HTML/index.js +1 -1
  60. package/dist/cjs/generators/METEOR/index.js +1 -1
  61. package/dist/cjs/generators/MITHRIL/index.js +1 -1
  62. package/dist/cjs/generators/PREACT/index.js +1 -1
  63. package/dist/cjs/generators/RAX/index.js +1 -1
  64. package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/addons.js +3 -3
  65. package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/rn-addons.js +2 -2
  66. package/dist/cjs/generators/REACT_SCRIPTS/index.js +9 -1
  67. package/dist/cjs/generators/RIOT/index.js +1 -1
  68. package/dist/cjs/generators/SERVER/index.js +1 -1
  69. package/dist/cjs/generators/SFC_VUE/index.js +1 -1
  70. package/dist/cjs/generators/SVELTE/index.js +0 -1
  71. package/dist/cjs/generators/VUE/index.js +1 -1
  72. package/dist/cjs/generators/VUE3/index.js +1 -1
  73. package/dist/cjs/generators/WEBPACK_REACT/index.js +1 -1
  74. package/dist/cjs/generators/baseGenerator.js +38 -4
  75. package/dist/cjs/generators/configure.js +3 -1
  76. package/dist/cjs/helpers.js +9 -8
  77. package/dist/cjs/initiate.js +44 -34
  78. package/dist/cjs/js-package-manager/JsPackageManager.js +8 -8
  79. package/dist/cjs/js-package-manager/PackageJson.js +5 -1
  80. package/dist/cjs/js-package-manager/PackageJsonHelper.js +1 -1
  81. package/dist/cjs/project_types.js +2 -1
  82. package/dist/cjs/repro-generators/configs.js +51 -8
  83. package/dist/cjs/repro-generators/scripts.js +46 -14
  84. package/dist/cjs/repro.js +3 -2
  85. package/dist/cjs/typings.d.ts +3 -0
  86. package/dist/cjs/upgrade.js +27 -9
  87. package/dist/cjs/versions.js +67 -0
  88. package/dist/cjs/window.d.js +5 -1
  89. package/dist/esm/add.js +3 -3
  90. package/dist/esm/automigrate/fixes/builder-vite.js +122 -0
  91. package/dist/esm/automigrate/fixes/eslint-plugin.js +3 -3
  92. package/dist/esm/automigrate/fixes/index.js +3 -1
  93. package/dist/esm/automigrate/fixes/mainjsFramework.js +2 -2
  94. package/dist/esm/automigrate/fixes/webpack5.js +2 -2
  95. package/dist/esm/automigrate/types.js +5 -1
  96. package/dist/esm/babel-config.js +1 -1
  97. package/dist/esm/detect.js +67 -4
  98. package/dist/esm/extract.js +7 -2
  99. package/dist/esm/frameworks/angular/Header.stories.ts +8 -3
  100. package/dist/esm/frameworks/angular/Page.stories.ts +12 -10
  101. package/dist/esm/frameworks/angular/header.component.ts +30 -19
  102. package/dist/esm/frameworks/angular/page.component.ts +13 -27
  103. package/dist/esm/frameworks/common/header.css +6 -0
  104. package/dist/esm/frameworks/html/js/Header.js +2 -0
  105. package/dist/esm/frameworks/html/js/Header.stories.js +8 -1
  106. package/dist/esm/frameworks/html/js/Page.js +29 -2
  107. package/dist/esm/frameworks/html/js/Page.stories.js +12 -13
  108. package/dist/esm/frameworks/html/ts/Header.stories.ts +5 -0
  109. package/dist/esm/frameworks/html/ts/Header.ts +3 -1
  110. package/dist/esm/frameworks/html/ts/Page.stories.ts +12 -14
  111. package/dist/esm/frameworks/html/ts/Page.ts +32 -8
  112. package/dist/esm/frameworks/preact/Header.jsx +6 -1
  113. package/dist/esm/frameworks/preact/Header.stories.jsx +7 -1
  114. package/dist/esm/frameworks/preact/Page.jsx +62 -63
  115. package/dist/esm/frameworks/preact/Page.stories.jsx +12 -9
  116. package/dist/esm/frameworks/react/js/Header.jsx +6 -1
  117. package/dist/esm/frameworks/react/js/Header.stories.jsx +7 -1
  118. package/dist/esm/frameworks/react/js/Page.jsx +61 -63
  119. package/dist/esm/frameworks/react/js/Page.stories.jsx +12 -9
  120. package/dist/esm/frameworks/react/ts/Header.stories.tsx +7 -1
  121. package/dist/esm/frameworks/react/ts/Header.tsx +11 -2
  122. package/dist/esm/frameworks/react/ts/Page.stories.tsx +12 -9
  123. package/dist/esm/frameworks/react/ts/Page.tsx +66 -60
  124. package/dist/esm/frameworks/svelte/Button.stories.js +51 -0
  125. package/dist/esm/frameworks/svelte/Header.stories.js +35 -0
  126. package/dist/esm/frameworks/svelte/Header.svelte +3 -0
  127. package/dist/esm/frameworks/svelte/Page.stories.js +27 -0
  128. package/dist/esm/frameworks/svelte/Page.svelte +2 -16
  129. package/dist/esm/frameworks/vue/Header.stories.js +7 -1
  130. package/dist/esm/frameworks/vue/Header.vue +1 -0
  131. package/dist/esm/frameworks/vue/Page.stories.js +15 -13
  132. package/dist/esm/frameworks/vue/Page.vue +7 -7
  133. package/dist/esm/frameworks/vue3/Header.stories.js +7 -1
  134. package/dist/esm/frameworks/vue3/Header.vue +1 -0
  135. package/dist/esm/frameworks/vue3/Page.stories.js +16 -17
  136. package/dist/esm/frameworks/vue3/Page.vue +18 -8
  137. package/dist/esm/frameworks/web-components/js/Page.js +2 -2
  138. package/dist/esm/frameworks/web-components/ts/Page.ts +2 -2
  139. package/dist/esm/generate.js +5 -0
  140. package/dist/esm/generators/ANGULAR/angular-helpers.js +5 -5
  141. package/dist/esm/generators/ANGULAR/index.js +2 -2
  142. package/dist/esm/generators/ANGULAR/template-csf/.storybook/tsconfig.json +17 -5
  143. package/dist/esm/generators/AURELIA/index.js +1 -1
  144. package/dist/esm/generators/AURELIA/template-csf/.storybook/tsconfig.json +16 -5
  145. package/dist/esm/generators/EMBER/index.js +1 -1
  146. package/dist/esm/generators/HTML/index.js +1 -1
  147. package/dist/esm/generators/METEOR/index.js +1 -1
  148. package/dist/esm/generators/MITHRIL/index.js +1 -1
  149. package/dist/esm/generators/PREACT/index.js +1 -1
  150. package/dist/esm/generators/RAX/index.js +1 -1
  151. package/dist/esm/generators/REACT_NATIVE/template-csf/storybook/addons.js +3 -3
  152. package/dist/esm/generators/REACT_NATIVE/template-csf/storybook/rn-addons.js +2 -2
  153. package/dist/esm/generators/REACT_SCRIPTS/index.js +9 -1
  154. package/dist/esm/generators/RIOT/index.js +1 -1
  155. package/dist/esm/generators/SERVER/index.js +1 -1
  156. package/dist/esm/generators/SFC_VUE/index.js +1 -1
  157. package/dist/esm/generators/SVELTE/index.js +0 -1
  158. package/dist/esm/generators/VUE/index.js +1 -1
  159. package/dist/esm/generators/VUE3/index.js +1 -1
  160. package/dist/esm/generators/WEBPACK_REACT/index.js +1 -1
  161. package/dist/esm/generators/baseGenerator.js +38 -4
  162. package/dist/esm/generators/configure.js +3 -1
  163. package/dist/esm/helpers.js +9 -8
  164. package/dist/esm/initiate.js +44 -34
  165. package/dist/esm/js-package-manager/JsPackageManager.js +8 -8
  166. package/dist/esm/js-package-manager/PackageJson.js +5 -1
  167. package/dist/esm/js-package-manager/PackageJsonHelper.js +1 -1
  168. package/dist/esm/project_types.js +2 -1
  169. package/dist/esm/repro-generators/configs.js +51 -8
  170. package/dist/esm/repro-generators/scripts.js +46 -14
  171. package/dist/esm/repro.js +3 -2
  172. package/dist/esm/typings.d.ts +3 -0
  173. package/dist/esm/upgrade.js +27 -9
  174. package/dist/esm/versions.js +67 -0
  175. package/dist/esm/window.d.js +5 -1
  176. package/dist/modern/add.js +3 -3
  177. package/dist/modern/automigrate/fixes/builder-vite.js +122 -0
  178. package/dist/modern/automigrate/fixes/eslint-plugin.js +3 -3
  179. package/dist/modern/automigrate/fixes/index.js +3 -1
  180. package/dist/modern/automigrate/fixes/mainjsFramework.js +2 -2
  181. package/dist/modern/automigrate/fixes/webpack5.js +2 -2
  182. package/dist/modern/automigrate/types.js +5 -1
  183. package/dist/modern/babel-config.js +1 -1
  184. package/dist/modern/detect.js +67 -4
  185. package/dist/modern/extract.js +7 -2
  186. package/dist/modern/frameworks/common/header.css +6 -0
  187. package/dist/modern/frameworks/html/js/Header.js +2 -0
  188. package/dist/modern/frameworks/html/js/Header.stories.js +8 -1
  189. package/dist/modern/frameworks/html/js/Page.js +29 -2
  190. package/dist/modern/frameworks/html/js/Page.stories.js +12 -13
  191. package/dist/modern/frameworks/preact/Header.jsx +6 -1
  192. package/dist/modern/frameworks/preact/Header.stories.jsx +7 -1
  193. package/dist/modern/frameworks/preact/Page.jsx +62 -63
  194. package/dist/modern/frameworks/preact/Page.stories.jsx +12 -9
  195. package/dist/modern/frameworks/react/js/Header.jsx +6 -1
  196. package/dist/modern/frameworks/react/js/Header.stories.jsx +7 -1
  197. package/dist/modern/frameworks/react/js/Page.jsx +61 -63
  198. package/dist/modern/frameworks/react/js/Page.stories.jsx +12 -9
  199. package/dist/modern/frameworks/svelte/Button.stories.js +51 -0
  200. package/dist/modern/frameworks/svelte/Header.stories.js +35 -0
  201. package/dist/modern/frameworks/svelte/Header.svelte +3 -0
  202. package/dist/modern/frameworks/svelte/Page.stories.js +27 -0
  203. package/dist/modern/frameworks/svelte/Page.svelte +2 -16
  204. package/dist/modern/frameworks/vue/Header.stories.js +7 -1
  205. package/dist/modern/frameworks/vue/Header.vue +1 -0
  206. package/dist/modern/frameworks/vue/Page.stories.js +15 -13
  207. package/dist/modern/frameworks/vue/Page.vue +7 -7
  208. package/dist/modern/frameworks/vue3/Header.stories.js +7 -1
  209. package/dist/modern/frameworks/vue3/Header.vue +1 -0
  210. package/dist/modern/frameworks/vue3/Page.stories.js +16 -17
  211. package/dist/modern/frameworks/vue3/Page.vue +18 -8
  212. package/dist/modern/frameworks/web-components/js/Page.js +2 -2
  213. package/dist/modern/generate.js +5 -0
  214. package/dist/modern/generators/ANGULAR/angular-helpers.js +5 -5
  215. package/dist/modern/generators/ANGULAR/index.js +2 -2
  216. package/dist/modern/generators/ANGULAR/template-csf/.storybook/tsconfig.json +17 -5
  217. package/dist/modern/generators/AURELIA/index.js +1 -1
  218. package/dist/modern/generators/AURELIA/template-csf/.storybook/tsconfig.json +16 -5
  219. package/dist/modern/generators/EMBER/index.js +1 -1
  220. package/dist/modern/generators/HTML/index.js +1 -1
  221. package/dist/modern/generators/METEOR/index.js +1 -1
  222. package/dist/modern/generators/MITHRIL/index.js +1 -1
  223. package/dist/modern/generators/PREACT/index.js +1 -1
  224. package/dist/modern/generators/RAX/index.js +1 -1
  225. package/dist/modern/generators/REACT_NATIVE/template-csf/storybook/addons.js +3 -3
  226. package/dist/modern/generators/REACT_NATIVE/template-csf/storybook/rn-addons.js +2 -2
  227. package/dist/modern/generators/REACT_SCRIPTS/index.js +9 -1
  228. package/dist/modern/generators/RIOT/index.js +1 -1
  229. package/dist/modern/generators/SERVER/index.js +1 -1
  230. package/dist/modern/generators/SFC_VUE/index.js +1 -1
  231. package/dist/modern/generators/SVELTE/index.js +0 -1
  232. package/dist/modern/generators/VUE/index.js +1 -1
  233. package/dist/modern/generators/VUE3/index.js +1 -1
  234. package/dist/modern/generators/WEBPACK_REACT/index.js +1 -1
  235. package/dist/modern/generators/baseGenerator.js +38 -4
  236. package/dist/modern/generators/configure.js +3 -1
  237. package/dist/modern/helpers.js +9 -8
  238. package/dist/modern/initiate.js +44 -34
  239. package/dist/modern/js-package-manager/JsPackageManager.js +8 -8
  240. package/dist/modern/js-package-manager/PackageJson.js +5 -1
  241. package/dist/modern/js-package-manager/PackageJsonHelper.js +1 -1
  242. package/dist/modern/project_types.js +2 -1
  243. package/dist/modern/repro-generators/configs.js +51 -8
  244. package/dist/modern/repro-generators/scripts.js +46 -14
  245. package/dist/modern/repro.js +3 -2
  246. package/dist/modern/typings.d.ts +3 -0
  247. package/dist/modern/upgrade.js +27 -9
  248. package/dist/modern/versions.js +67 -0
  249. package/dist/modern/window.d.js +5 -1
  250. package/dist/ts3.4/automigrate/fixes/builder-vite.d.ts +19 -0
  251. package/dist/ts3.4/detect.d.ts +10 -3
  252. package/dist/ts3.4/initiate.d.ts +1 -0
  253. package/dist/ts3.4/js-package-manager/PackageJson.d.ts +2 -8
  254. package/dist/ts3.4/js-package-manager/PackageJsonHelper.d.ts +2 -2
  255. package/dist/ts3.4/project_types.d.ts +2 -1
  256. package/dist/ts3.4/repro-generators/configs.d.ts +8 -0
  257. package/dist/ts3.4/upgrade.d.ts +2 -1
  258. package/dist/ts3.4/versions.d.ts +60 -0
  259. package/dist/ts3.9/automigrate/fixes/builder-vite.d.ts +19 -0
  260. package/dist/ts3.9/detect.d.ts +10 -3
  261. package/dist/ts3.9/initiate.d.ts +1 -0
  262. package/dist/ts3.9/js-package-manager/PackageJson.d.ts +2 -8
  263. package/dist/ts3.9/js-package-manager/PackageJsonHelper.d.ts +2 -2
  264. package/dist/ts3.9/project_types.d.ts +2 -1
  265. package/dist/ts3.9/repro-generators/configs.d.ts +9 -1
  266. package/dist/ts3.9/upgrade.d.ts +2 -1
  267. package/dist/ts3.9/versions.d.ts +60 -0
  268. package/package.json +12 -12
  269. package/dist/cjs/automigrate/helpers/getStorybookConfiguration.js +0 -27
  270. package/dist/cjs/automigrate/helpers/getStorybookInfo.js +0 -94
  271. package/dist/cjs/frameworks/svelte/Button.stories.svelte +0 -57
  272. package/dist/cjs/frameworks/svelte/Header.stories.svelte +0 -32
  273. package/dist/cjs/frameworks/svelte/Page.stories.svelte +0 -32
  274. package/dist/cjs/typings.d.js +0 -1
  275. package/dist/cjs/versions.json +0 -59
  276. package/dist/esm/automigrate/helpers/getStorybookConfiguration.js +0 -27
  277. package/dist/esm/automigrate/helpers/getStorybookInfo.js +0 -94
  278. package/dist/esm/frameworks/svelte/Button.stories.svelte +0 -57
  279. package/dist/esm/frameworks/svelte/Header.stories.svelte +0 -32
  280. package/dist/esm/frameworks/svelte/Page.stories.svelte +0 -32
  281. package/dist/esm/typings.d.js +0 -1
  282. package/dist/esm/versions.json +0 -59
  283. package/dist/modern/automigrate/helpers/getStorybookConfiguration.js +0 -27
  284. package/dist/modern/automigrate/helpers/getStorybookInfo.js +0 -94
  285. package/dist/modern/frameworks/svelte/Button.stories.svelte +0 -57
  286. package/dist/modern/frameworks/svelte/Header.stories.svelte +0 -32
  287. package/dist/modern/frameworks/svelte/Page.stories.svelte +0 -32
  288. package/dist/modern/typings.d.js +0 -1
  289. package/dist/modern/versions.json +0 -59
  290. package/dist/ts3.4/automigrate/helpers/getStorybookConfiguration.d.ts +0 -1
  291. package/dist/ts3.4/automigrate/helpers/getStorybookInfo.d.ts +0 -11
  292. package/dist/ts3.9/automigrate/helpers/getStorybookConfiguration.d.ts +0 -1
  293. package/dist/ts3.9/automigrate/helpers/getStorybookInfo.d.ts +0 -11
@@ -3,15 +3,18 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.detect = detect;
7
+ exports.detectBuilder = detectBuilder;
6
8
  exports.detectFrameworkPreset = detectFrameworkPreset;
7
- exports.isStorybookInstalled = isStorybookInstalled;
8
9
  exports.detectLanguage = detectLanguage;
9
- exports.detect = detect;
10
+ exports.isStorybookInstalled = isStorybookInstalled;
10
11
 
11
12
  var _path = _interopRequireDefault(require("path"));
12
13
 
13
14
  var _fs = _interopRequireDefault(require("fs"));
14
15
 
16
+ var _findUp = _interopRequireDefault(require("find-up"));
17
+
15
18
  var _project_types = require("./project_types");
16
19
 
17
20
  var _helpers = require("./helpers");
@@ -20,6 +23,8 @@ var _jsPackageManager = require("./js-package-manager");
20
23
 
21
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
25
 
26
+ const viteConfigFiles = ['vite.config.ts', 'vite.config.js', 'vite.config.mjs'];
27
+
23
28
  const hasDependency = (packageJson, name, matcher) => {
24
29
  var _packageJson$dependen, _packageJson$devDepen;
25
30
 
@@ -96,6 +101,52 @@ function detectFrameworkPreset(packageJson = {}) {
96
101
  });
97
102
  return result ? result.preset : _project_types.ProjectType.UNDETECTED;
98
103
  }
104
+ /**
105
+ * Attempts to detect which builder to use, by searching for a vite config file. If one is found, the vite builder
106
+ * will be used, otherwise, webpack4 is the default.
107
+ *
108
+ * @returns CoreBuilder
109
+ */
110
+
111
+
112
+ function detectBuilder(packageManager) {
113
+ const viteConfig = _findUp.default.sync(viteConfigFiles);
114
+
115
+ if (viteConfig) {
116
+ (0, _helpers.paddedLog)('Detected vite project, setting builder to @storybook/builder-vite');
117
+ return _project_types.CoreBuilder.Vite;
118
+ }
119
+
120
+ try {
121
+ let out = '';
122
+
123
+ if (packageManager.type === 'npm') {
124
+ try {
125
+ // npm <= v7
126
+ out = packageManager.executeCommand('npm', ['ls', 'webpack']);
127
+ } catch (e2) {
128
+ // npm >= v8
129
+ out = packageManager.executeCommand('npm', ['why', 'webpack']);
130
+ }
131
+ } else {
132
+ out = packageManager.executeCommand('yarn', ['why', 'webpack']);
133
+ } // if the user has BOTH webpack 4 and 5 installed already, we'll pick the safest options (4)
134
+
135
+
136
+ if (out.includes('webpack@4') || out.includes('webpack@npm:4')) {
137
+ return _project_types.CoreBuilder.Webpack5;
138
+ } // the user has webpack 4 installed, but not 5
139
+
140
+
141
+ if (out.includes('webpack@5') || out.includes('webpack@npm:5')) {
142
+ return _project_types.CoreBuilder.Webpack5;
143
+ }
144
+ } catch (err) {//
145
+ } // Fallback to webpack4
146
+
147
+
148
+ return _project_types.CoreBuilder.Webpack4;
149
+ }
99
150
 
100
151
  function isStorybookInstalled(dependencies, force) {
101
152
  if (!dependencies) {
@@ -117,7 +168,13 @@ function isStorybookInstalled(dependencies, force) {
117
168
 
118
169
  function detectLanguage() {
119
170
  let language = _project_types.SupportedLanguage.JAVASCRIPT;
120
- const packageJson = (0, _jsPackageManager.readPackageJson)();
171
+ let packageJson;
172
+
173
+ try {
174
+ packageJson = (0, _jsPackageManager.readPackageJson)();
175
+ } catch (err) {//
176
+ }
177
+
121
178
  const bowerJson = (0, _helpers.getBowerJson)();
122
179
 
123
180
  if (!packageJson && !bowerJson) {
@@ -132,7 +189,13 @@ function detectLanguage() {
132
189
  }
133
190
 
134
191
  function detect(options = {}) {
135
- const packageJson = (0, _jsPackageManager.readPackageJson)();
192
+ let packageJson;
193
+
194
+ try {
195
+ packageJson = (0, _jsPackageManager.readPackageJson)();
196
+ } catch (err) {//
197
+ }
198
+
136
199
  const bowerJson = (0, _helpers.getBowerJson)();
137
200
 
138
201
  if (!packageJson && !bowerJson) {
@@ -24,8 +24,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
24
24
  const read = async url => {
25
25
  const browser = await usePuppeteerBrowser();
26
26
  const page = await browser.newPage();
27
- await page.goto(url);
28
- await page.waitForFunction('window.__STORYBOOK_STORY_STORE__ && window.__STORYBOOK_STORY_STORE__.extract && window.__STORYBOOK_STORY_STORE__.extract()');
27
+ await page.goto(url); // we don't know whether we are running against a new or old storybook
28
+ // FIXME: add tests for both
29
+
30
+ await page.waitForFunction(`
31
+ (window.__STORYBOOK_PREVIEW__ && window.__STORYBOOK_PREVIEW__.extract && window.__STORYBOOK_PREVIEW__.extract()) ||
32
+ (window.__STORYBOOK_STORY_STORE__ && window.__STORYBOOK_STORY_STORE__.extract && window.__STORYBOOK_STORY_STORE__.extract())
33
+ `);
29
34
  const data = JSON.parse(await page.evaluate(async () => {
30
35
  // eslint-disable-next-line no-undef
31
36
  return JSON.stringify(window.__STORYBOOK_STORY_STORE__.getStoriesJsonData(), null, 2);
@@ -1,7 +1,6 @@
1
1
  import { moduleMetadata } from '@storybook/angular';
2
2
  import { CommonModule } from '@angular/common';
3
- // also exported from '@storybook/angular' if you can deal with breaking changes in 6.1
4
- import { Story, Meta } from '@storybook/angular/types-6-0';
3
+ import type { Story, Meta } from '@storybook/angular';
5
4
 
6
5
  import Button from './button.component';
7
6
  import Header from './header.component';
@@ -15,6 +14,10 @@ export default {
15
14
  imports: [CommonModule],
16
15
  }),
17
16
  ],
17
+ parameters: {
18
+ // More on Story layout: https://storybook.js.org/docs/angular/configure/story-layout
19
+ layout: 'fullscreen',
20
+ },
18
21
  } as Meta;
19
22
 
20
23
  const Template: Story<Header> = (args: Header) => ({
@@ -23,7 +26,9 @@ const Template: Story<Header> = (args: Header) => ({
23
26
 
24
27
  export const LoggedIn = Template.bind({});
25
28
  LoggedIn.args = {
26
- user: {},
29
+ user: {
30
+ name: 'Jane Doe',
31
+ },
27
32
  };
28
33
 
29
34
  export const LoggedOut = Template.bind({});
@@ -1,15 +1,18 @@
1
1
  import { moduleMetadata, Story, Meta } from '@storybook/angular';
2
+ import { within, userEvent } from '@storybook/testing-library';
2
3
  import { CommonModule } from '@angular/common';
3
4
 
4
5
  import Button from './button.component';
5
6
  import Header from './header.component';
6
7
  import Page from './page.component';
7
8
 
8
- import * as HeaderStories from './Header.stories';
9
-
10
9
  export default {
11
10
  title: 'Example/Page',
12
11
  component: Page,
12
+ parameters: {
13
+ // More on Story layout: https://storybook.js.org/docs/angular/configure/story-layout
14
+ layout: 'fullscreen',
15
+ },
13
16
  decorators: [
14
17
  moduleMetadata({
15
18
  declarations: [Button, Header],
@@ -22,13 +25,12 @@ const Template: Story<Page> = (args: Page) => ({
22
25
  props: args,
23
26
  });
24
27
 
25
- export const LoggedIn = Template.bind({});
26
- LoggedIn.args = {
27
- // More on composing args: https://storybook.js.org/docs/angular/writing-stories/args#args-composition
28
- ...HeaderStories.LoggedIn.args,
29
- };
30
-
31
28
  export const LoggedOut = Template.bind({});
32
- LoggedOut.args = {
33
- ...HeaderStories.LoggedOut.args,
29
+
30
+ // More on interaction testing: https://storybook.js.org/docs/angular/writing-tests/interaction-testing
31
+ export const LoggedIn = Template.bind({});
32
+ LoggedIn.play = async ({ canvasElement }) => {
33
+ const canvas = within(canvasElement);
34
+ const loginButton = await canvas.getByRole('button', { name: /Log in/i });
35
+ await userEvent.click(loginButton);
34
36
  };
@@ -25,25 +25,36 @@ import { User } from './User';
25
25
  <h1>Acme</h1>
26
26
  </div>
27
27
  <div>
28
- <storybook-button
29
- *ngIf="user"
30
- size="small"
31
- (onClick)="onLogout.emit($event)"
32
- label="Log out"
33
- ></storybook-button>
34
- <storybook-button
35
- *ngIf="!user"
36
- size="small"
37
- (onClick)="onLogin.emit($event)"
38
- label="Log in"
39
- ></storybook-button>
40
- <storybook-button
41
- *ngIf="!user"
42
- primary
43
- size="small"
44
- (onClick)="onCreateAccount.emit($event)"
45
- label="Sign up"
46
- ></storybook-button>
28
+ <div *ngIf="user">
29
+ <span class="welcome">
30
+ Welcome, <b>{{ user.name }}</b
31
+ >!
32
+ </span>
33
+ <storybook-button
34
+ *ngIf="user"
35
+ size="small"
36
+ (onClick)="onLogout.emit($event)"
37
+ label="Log out"
38
+ ></storybook-button>
39
+ </div>
40
+ <div *ngIf="!user">
41
+ <storybook-button
42
+ *ngIf="!user"
43
+ size="small"
44
+ class="margin-left"
45
+ (onClick)="onLogin.emit($event)"
46
+ label="Log in"
47
+ ></storybook-button>
48
+ <storybook-button
49
+ *ngIf="!user"
50
+ primary
51
+ size="small"
52
+ primary="true"
53
+ class="margin-left"
54
+ (onClick)="onCreateAccount.emit($event)"
55
+ label="Sign up"
56
+ ></storybook-button>
57
+ </div>
47
58
  </div>
48
59
  </div>
49
60
  </header>`,
@@ -1,4 +1,4 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
1
+ import { Component } from '@angular/core';
2
2
  import { User } from './User';
3
3
 
4
4
  @Component({
@@ -6,9 +6,9 @@ import { User } from './User';
6
6
  template: `<article>
7
7
  <storybook-header
8
8
  [user]="user"
9
- (onLogout)="onLogout.emit($event)"
10
- (onLogin)="onLogin.emit($event)"
11
- (onCreateAccount)="onCreateAccount.emit($event)"
9
+ (onLogout)="doLogout()"
10
+ (onLogin)="doLogin()"
11
+ (onCreateAccount)="doCreateAccount()"
12
12
  ></storybook-header>
13
13
  <section>
14
14
  <h2>Pages in Storybook</h2>
@@ -61,31 +61,17 @@ import { User } from './User';
61
61
  styleUrls: ['./page.css'],
62
62
  })
63
63
  export default class PageComponent {
64
- @Input()
65
64
  user: User | null = null;
66
65
 
67
- @Output()
68
- onLogin = new EventEmitter<Event>();
66
+ doLogout() {
67
+ this.user = null;
68
+ }
69
69
 
70
- @Output()
71
- onLogout = new EventEmitter<Event>();
70
+ doLogin() {
71
+ this.user = { name: 'Jane Doe' };
72
+ }
72
73
 
73
- @Output()
74
- onCreateAccount = new EventEmitter<Event>();
74
+ doCreateAccount() {
75
+ this.user = { name: 'Jane Doe' };
76
+ }
75
77
  }
76
-
77
- // export const Page = ({ user, onLogin, onLogout, onCreateAccount }) => (
78
- // <article>
79
- // <Header user={user} onLogin={onLogin} onLogout={onLogout} onCreateAccount={onCreateAccount} />
80
-
81
- // );
82
- // Page.propTypes = {
83
- // user: PropTypes.shape({}),
84
- // onLogin: PropTypes.func.isRequired,
85
- // onLogout: PropTypes.func.isRequired,
86
- // onCreateAccount: PropTypes.func.isRequired,
87
- // };
88
-
89
- // Page.defaultProps = {
90
- // user: null,
91
- // };
@@ -24,3 +24,9 @@ h1 {
24
24
  button + button {
25
25
  margin-left: 10px;
26
26
  }
27
+
28
+ .welcome {
29
+ color: #333;
30
+ font-size: 14px;
31
+ margin-right: 10px;
32
+ }
@@ -26,6 +26,8 @@ export const createHeader = ({ user, onLogout, onLogin, onCreateAccount }) => {
26
26
 
27
27
  const account = document.createElement('div');
28
28
  if (user) {
29
+ const welcomeMessage = `<span class="welcome">Welcome, <b>${user.name}</b>!</span>`;
30
+ account.innerHTML = welcomeMessage;
29
31
  account.appendChild(createButton({ size: 'small', label: 'Log out', onClick: onLogout }));
30
32
  } else {
31
33
  account.appendChild(createButton({ size: 'small', label: 'Log in', onClick: onLogin }));
@@ -2,6 +2,11 @@ import { createHeader } from './Header';
2
2
 
3
3
  export default {
4
4
  title: 'Example/Header',
5
+ parameters: {
6
+ // More on Story layout: https://storybook.js.org/docs/html/configure/story-layout
7
+ layout: 'fullscreen',
8
+ },
9
+ // More on argTypes: https://storybook.js.org/docs/html/api/argtypes
5
10
  argTypes: {
6
11
  onLogin: { action: 'onLogin' },
7
12
  onLogout: { action: 'onLogout' },
@@ -13,7 +18,9 @@ const Template = (args) => createHeader(args);
13
18
 
14
19
  export const LoggedIn = Template.bind({});
15
20
  LoggedIn.args = {
16
- user: {},
21
+ user: {
22
+ name: 'Jane Doe',
23
+ },
17
24
  };
18
25
 
19
26
  export const LoggedOut = Template.bind({});
@@ -1,11 +1,38 @@
1
1
  import './page.css';
2
2
  import { createHeader } from './Header';
3
3
 
4
- export const createPage = ({ user, onLogout, onLogin, onCreateAccount }) => {
4
+ export const createPage = () => {
5
5
  const article = document.createElement('article');
6
+ let user = null;
7
+ let header = null;
6
8
 
7
- const header = createHeader({ onLogin, onLogout, onCreateAccount, user });
9
+ const rerenderHeader = () => {
10
+ const wrapper = document.getElementsByTagName('article')[0];
11
+ wrapper.replaceChild(createHeaderElement(), wrapper.firstChild);
12
+ };
13
+
14
+ const onLogin = () => {
15
+ user = { name: 'Jane Doe' };
16
+ rerenderHeader();
17
+ };
18
+
19
+ const onLogout = () => {
20
+ user = null;
21
+ rerenderHeader();
22
+ };
23
+
24
+ const onCreateAccount = () => {
25
+ user = { name: 'Jane Doe' };
26
+ rerenderHeader();
27
+ };
28
+
29
+ const createHeaderElement = () => {
30
+ return createHeader({ onLogin, onLogout, onCreateAccount, user });
31
+ };
32
+
33
+ header = createHeaderElement();
8
34
  article.appendChild(header);
35
+
9
36
  const section = `
10
37
  <section>
11
38
  <h2>Pages in Storybook</h2>
@@ -1,24 +1,23 @@
1
+ import { within, userEvent } from '@storybook/testing-library';
1
2
  import { createPage } from './Page';
2
- import * as HeaderStories from './Header.stories';
3
3
 
4
4
  export default {
5
5
  title: 'Example/Page',
6
- argTypes: {
7
- onLogin: { action: 'onLogin' },
8
- onLogout: { action: 'onLogout' },
9
- onCreateAccount: { action: 'onCreateAccount' },
6
+ parameters: {
7
+ // More on Story layout: https://storybook.js.org/docs/html/configure/story-layout
8
+ layout: 'fullscreen',
10
9
  },
11
10
  };
12
11
 
13
- const Template = (args) => createPage(args);
12
+ const Template = () => createPage();
13
+
14
+ export const LoggedOut = Template.bind({});
14
15
 
15
16
  export const LoggedIn = Template.bind({});
16
- LoggedIn.args = {
17
- // More on composing args: https://storybook.js.org/docs/html/writing-stories/args#args-composition
18
- ...HeaderStories.LoggedIn.args,
19
- };
20
17
 
21
- export const LoggedOut = Template.bind({});
22
- LoggedOut.args = {
23
- ...HeaderStories.LoggedOut.args,
18
+ // More on interaction testing: https://storybook.js.org/docs/html/writing-tests/interaction-testing
19
+ LoggedIn.play = async ({ canvasElement }) => {
20
+ const canvas = within(canvasElement);
21
+ const loginButton = await canvas.getByRole('button', { name: /Log in/i });
22
+ await userEvent.click(loginButton);
24
23
  };
@@ -3,6 +3,11 @@ import { createHeader, HeaderProps } from './Header';
3
3
 
4
4
  export default {
5
5
  title: 'Example/Header',
6
+ parameters: {
7
+ // More on Story layout: https://storybook.js.org/docs/html/configure/story-layout
8
+ layout: 'fullscreen',
9
+ },
10
+ // More on argTypes: https://storybook.js.org/docs/html/api/argtypes
6
11
  argTypes: {
7
12
  onLogin: { action: 'onLogin' },
8
13
  onLogout: { action: 'onLogout' },
@@ -2,7 +2,7 @@ import './header.css';
2
2
  import { createButton } from './Button';
3
3
 
4
4
  export interface HeaderProps {
5
- user?: {};
5
+ user?: { name: string };
6
6
  onLogin: () => void;
7
7
  onLogout: () => void;
8
8
  onCreateAccount: () => void;
@@ -33,6 +33,8 @@ export const createHeader = ({ user, onLogout, onLogin, onCreateAccount }: Heade
33
33
 
34
34
  const account = document.createElement('div');
35
35
  if (user) {
36
+ const welcomeMessage = `<span class="welcome">Welcome, <b>${user.name}</b>!</span>`;
37
+ account.innerHTML = welcomeMessage;
36
38
  account.appendChild(createButton({ size: 'small', label: 'Log out', onClick: onLogout }));
37
39
  } else {
38
40
  account.appendChild(createButton({ size: 'small', label: 'Log in', onClick: onLogin }));
@@ -1,26 +1,24 @@
1
+ import { within, userEvent } from '@storybook/testing-library';
1
2
  import { Story, Meta } from '@storybook/html';
2
3
  import { createPage } from './Page';
3
- import * as HeaderStories from './Header.stories';
4
- import { HeaderProps } from './Header';
5
4
 
6
5
  export default {
7
6
  title: 'Example/Page',
8
- argTypes: {
9
- onLogin: { action: 'onLogin' },
10
- onLogout: { action: 'onLogout' },
11
- onCreateAccount: { action: 'onCreateAccount' },
7
+ parameters: {
8
+ // More on Story layout: https://storybook.js.org/docs/html/configure/story-layout
9
+ layout: 'fullscreen',
12
10
  },
13
11
  } as Meta;
14
12
 
15
- const Template: Story<HeaderProps> = (args) => createPage(args);
13
+ const Template: Story = () => createPage();
14
+
15
+ export const LoggedOut = Template.bind({});
16
16
 
17
17
  export const LoggedIn = Template.bind({});
18
- LoggedIn.args = {
19
- // More on composing args: https://storybook.js.org/docs/html/writing-stories/args#args-composition
20
- ...HeaderStories.LoggedIn.args,
21
- };
22
18
 
23
- export const LoggedOut = Template.bind({});
24
- LoggedOut.args = {
25
- ...HeaderStories.LoggedOut.args,
19
+ // More on interaction testing: https://storybook.js.org/docs/html/writing-tests/interaction-testing
20
+ LoggedIn.play = async ({ canvasElement }) => {
21
+ const canvas = within(canvasElement);
22
+ const loginButton = await canvas.getByRole('button', { name: /Log in/i });
23
+ await userEvent.click(loginButton);
26
24
  };
@@ -1,18 +1,42 @@
1
1
  import './page.css';
2
2
  import { createHeader } from './Header';
3
3
 
4
- export interface PageProps {
5
- user?: {};
6
- onLogin: () => void;
7
- onLogout: () => void;
8
- onCreateAccount: () => void;
9
- }
4
+ type User = {
5
+ name: string;
6
+ };
10
7
 
11
- export const createPage = ({ user, onLogout, onLogin, onCreateAccount }: PageProps) => {
8
+ export const createPage = () => {
12
9
  const article = document.createElement('article');
10
+ let user: User = null;
11
+ let header = null;
12
+
13
+ const rerenderHeader = () => {
14
+ const wrapper = document.getElementsByTagName('article')[0];
15
+ wrapper.replaceChild(createHeaderElement(), wrapper.firstChild);
16
+ };
17
+
18
+ const onLogin = () => {
19
+ user = { name: 'Jane Doe' };
20
+ rerenderHeader();
21
+ };
22
+
23
+ const onLogout = () => {
24
+ user = null;
25
+ rerenderHeader();
26
+ };
13
27
 
14
- const header = createHeader({ onLogin, onLogout, onCreateAccount, user });
28
+ const onCreateAccount = () => {
29
+ user = { name: 'Jane Doe' };
30
+ rerenderHeader();
31
+ };
32
+
33
+ const createHeaderElement = () => {
34
+ return createHeader({ onLogin, onLogout, onCreateAccount, user });
35
+ };
36
+
37
+ header = createHeaderElement();
15
38
  article.appendChild(header);
39
+
16
40
  const section = `
17
41
  <section>
18
42
  <h2>Pages in Storybook</h2>
@@ -29,7 +29,12 @@ export const Header = ({ user, onLogin, onLogout, onCreateAccount }) => (
29
29
  </div>
30
30
  <div>
31
31
  {user ? (
32
- <Button size="small" onClick={onLogout} label="Log out" />
32
+ <Fragment>
33
+ <span className="welcome">
34
+ Welcome, <b>{user.name}</b>!
35
+ </span>
36
+ <Button size="small" onClick={onLogout} label="Log out" />
37
+ </Fragment>
33
38
  ) : (
34
39
  <Fragment>
35
40
  <Button size="small" onClick={onLogin} label="Log in" />
@@ -5,6 +5,10 @@ import { Header } from './Header';
5
5
  export default {
6
6
  title: 'Example/Header',
7
7
  component: Header,
8
+ parameters: {
9
+ // More on Story layout: https://storybook.js.org/docs/preact/configure/story-layout
10
+ layout: 'fullscreen',
11
+ },
8
12
  argTypes: {
9
13
  onLogin: { action: 'onLogin' },
10
14
  onLogout: { action: 'onLogout' },
@@ -16,7 +20,9 @@ const Template = (args) => <Header {...args} />;
16
20
 
17
21
  export const LoggedIn = Template.bind({});
18
22
  LoggedIn.args = {
19
- user: {},
23
+ user: {
24
+ name: 'Jane Doe',
25
+ },
20
26
  };
21
27
 
22
28
  export const LoggedOut = Template.bind({});