@storybook/cli 6.4.0-beta.2 → 6.4.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.
Files changed (102) hide show
  1. package/dist/cjs/automigrate/fixes/angular12.js +79 -0
  2. package/dist/cjs/automigrate/fixes/cra5.js +79 -0
  3. package/dist/cjs/automigrate/fixes/index.js +33 -0
  4. package/dist/cjs/automigrate/fixes/mainjsFramework.js +89 -0
  5. package/dist/cjs/automigrate/fixes/webpack5.js +156 -0
  6. package/dist/cjs/automigrate/helpers/getStorybookConfiguration.js +27 -0
  7. package/dist/cjs/automigrate/helpers/getStorybookInfo.js +94 -0
  8. package/dist/cjs/automigrate/index.js +72 -0
  9. package/dist/cjs/automigrate/types.js +1 -0
  10. package/dist/cjs/frameworks/web-components/js/Button.js +1 -1
  11. package/dist/cjs/frameworks/web-components/ts/Button.ts +1 -1
  12. package/dist/cjs/generate.js +11 -2
  13. package/dist/cjs/generators/ANGULAR/index.js +1 -1
  14. package/dist/cjs/generators/AURELIA/index.js +1 -1
  15. package/dist/cjs/generators/REACT_NATIVE/index.js +2 -2
  16. package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/index.js +1 -1
  17. package/dist/cjs/generators/REACT_SCRIPTS/index.js +21 -4
  18. package/dist/cjs/generators/SERVER/index.js +1 -1
  19. package/dist/cjs/generators/baseGenerator.js +6 -2
  20. package/dist/cjs/helpers.js +3 -11
  21. package/dist/cjs/initiate.js +2 -17
  22. package/dist/cjs/project_types.js +1 -10
  23. package/dist/cjs/upgrade.js +37 -5
  24. package/dist/cjs/versions.json +57 -55
  25. package/dist/esm/automigrate/fixes/angular12.js +79 -0
  26. package/dist/esm/automigrate/fixes/cra5.js +79 -0
  27. package/dist/esm/automigrate/fixes/index.js +33 -0
  28. package/dist/esm/automigrate/fixes/mainjsFramework.js +89 -0
  29. package/dist/esm/automigrate/fixes/webpack5.js +156 -0
  30. package/dist/esm/automigrate/helpers/getStorybookConfiguration.js +27 -0
  31. package/dist/esm/automigrate/helpers/getStorybookInfo.js +94 -0
  32. package/dist/esm/automigrate/index.js +72 -0
  33. package/dist/esm/automigrate/types.js +1 -0
  34. package/dist/esm/frameworks/web-components/js/Button.js +1 -1
  35. package/dist/esm/frameworks/web-components/ts/Button.ts +1 -1
  36. package/dist/esm/generate.js +11 -2
  37. package/dist/esm/generators/ANGULAR/index.js +1 -1
  38. package/dist/esm/generators/AURELIA/index.js +1 -1
  39. package/dist/esm/generators/REACT_NATIVE/index.js +2 -2
  40. package/dist/esm/generators/REACT_NATIVE/template-csf/storybook/index.js +1 -1
  41. package/dist/esm/generators/REACT_SCRIPTS/index.js +21 -4
  42. package/dist/esm/generators/SERVER/index.js +1 -1
  43. package/dist/esm/generators/baseGenerator.js +6 -2
  44. package/dist/esm/helpers.js +3 -11
  45. package/dist/esm/initiate.js +2 -17
  46. package/dist/esm/project_types.js +1 -10
  47. package/dist/esm/upgrade.js +37 -5
  48. package/dist/esm/versions.json +57 -55
  49. package/dist/modern/automigrate/fixes/angular12.js +79 -0
  50. package/dist/modern/automigrate/fixes/cra5.js +79 -0
  51. package/dist/modern/automigrate/fixes/index.js +33 -0
  52. package/dist/modern/automigrate/fixes/mainjsFramework.js +89 -0
  53. package/dist/modern/automigrate/fixes/webpack5.js +156 -0
  54. package/dist/modern/automigrate/helpers/getStorybookConfiguration.js +27 -0
  55. package/dist/modern/automigrate/helpers/getStorybookInfo.js +94 -0
  56. package/dist/modern/automigrate/index.js +72 -0
  57. package/dist/modern/automigrate/types.js +1 -0
  58. package/dist/modern/frameworks/web-components/js/Button.js +1 -1
  59. package/dist/modern/generate.js +11 -2
  60. package/dist/modern/generators/ANGULAR/index.js +1 -1
  61. package/dist/modern/generators/AURELIA/index.js +1 -1
  62. package/dist/modern/generators/REACT_NATIVE/index.js +2 -2
  63. package/dist/modern/generators/REACT_NATIVE/template-csf/storybook/index.js +1 -1
  64. package/dist/modern/generators/REACT_SCRIPTS/index.js +21 -4
  65. package/dist/modern/generators/SERVER/index.js +1 -1
  66. package/dist/modern/generators/baseGenerator.js +6 -2
  67. package/dist/modern/helpers.js +3 -11
  68. package/dist/modern/initiate.js +2 -17
  69. package/dist/modern/project_types.js +1 -10
  70. package/dist/modern/upgrade.js +37 -5
  71. package/dist/modern/versions.json +57 -55
  72. package/dist/ts3.4/automigrate/fixes/angular12.d.ts +15 -0
  73. package/dist/ts3.4/automigrate/fixes/cra5.d.ts +15 -0
  74. package/dist/ts3.4/automigrate/fixes/index.d.ts +3 -0
  75. package/dist/ts3.4/automigrate/fixes/mainjsFramework.d.ts +8 -0
  76. package/dist/ts3.4/automigrate/fixes/webpack5.d.ts +26 -0
  77. package/dist/ts3.4/automigrate/helpers/getStorybookConfiguration.d.ts +1 -0
  78. package/dist/ts3.4/automigrate/helpers/getStorybookInfo.d.ts +11 -0
  79. package/dist/ts3.4/automigrate/index.d.ts +7 -0
  80. package/dist/ts3.4/automigrate/types.d.ts +15 -0
  81. package/dist/ts3.4/generators/REACT_NATIVE/index.d.ts +1 -2
  82. package/dist/ts3.4/generators/baseGenerator.d.ts +1 -2
  83. package/dist/ts3.4/helpers.d.ts +2 -2
  84. package/dist/ts3.4/initiate.d.ts +1 -2
  85. package/dist/ts3.4/project_types.d.ts +0 -7
  86. package/dist/ts3.4/upgrade.d.ts +7 -3
  87. package/dist/ts3.9/automigrate/fixes/angular12.d.ts +15 -0
  88. package/dist/ts3.9/automigrate/fixes/cra5.d.ts +15 -0
  89. package/dist/ts3.9/automigrate/fixes/index.d.ts +3 -0
  90. package/dist/ts3.9/automigrate/fixes/mainjsFramework.d.ts +8 -0
  91. package/dist/ts3.9/automigrate/fixes/webpack5.d.ts +26 -0
  92. package/dist/ts3.9/automigrate/helpers/getStorybookConfiguration.d.ts +1 -0
  93. package/dist/ts3.9/automigrate/helpers/getStorybookInfo.d.ts +11 -0
  94. package/dist/ts3.9/automigrate/index.d.ts +7 -0
  95. package/dist/ts3.9/automigrate/types.d.ts +15 -0
  96. package/dist/ts3.9/generators/REACT_NATIVE/index.d.ts +1 -2
  97. package/dist/ts3.9/generators/baseGenerator.d.ts +1 -2
  98. package/dist/ts3.9/helpers.d.ts +2 -2
  99. package/dist/ts3.9/initiate.d.ts +1 -2
  100. package/dist/ts3.9/project_types.d.ts +0 -7
  101. package/dist/ts3.9/upgrade.d.ts +7 -3
  102. package/package.json +7 -6
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.angular12 = void 0;
7
+
8
+ require("core-js/modules/es.promise.js");
9
+
10
+ var _chalk = _interopRequireDefault(require("chalk"));
11
+
12
+ var _tsDedent = _interopRequireDefault(require("ts-dedent"));
13
+
14
+ var _semver = _interopRequireDefault(require("@storybook/semver"));
15
+
16
+ var _webpack = require("./webpack5");
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ /**
21
+ * Is the user upgrading to Angular12?
22
+ *
23
+ * If so:
24
+ * - Run webpack5 fix
25
+ */
26
+ const angular12 = {
27
+ id: 'angular12',
28
+
29
+ async check({
30
+ packageManager
31
+ }) {
32
+ var _semver$coerce;
33
+
34
+ const packageJson = packageManager.retrievePackageJson();
35
+ const {
36
+ dependencies,
37
+ devDependencies
38
+ } = packageJson;
39
+ const angularVersion = dependencies['@angular/core'] || devDependencies['@angular/core'];
40
+ const angularCoerced = (_semver$coerce = _semver.default.coerce(angularVersion)) === null || _semver$coerce === void 0 ? void 0 : _semver$coerce.version;
41
+
42
+ if (!angularCoerced || _semver.default.lt(angularCoerced, '12.0.0')) {
43
+ return null;
44
+ }
45
+
46
+ const builderInfo = await _webpack.webpack5.checkWebpack5Builder(packageJson);
47
+ return builderInfo ? Object.assign({
48
+ angularVersion
49
+ }, builderInfo) : null;
50
+ },
51
+
52
+ prompt({
53
+ angularVersion,
54
+ storybookVersion
55
+ }) {
56
+ const angularFormatted = _chalk.default.cyan(`Angular ${angularVersion}`);
57
+
58
+ const sbFormatted = _chalk.default.cyan(`Storybook ${storybookVersion}`);
59
+
60
+ return (0, _tsDedent.default)`
61
+ We've detected you are running ${angularFormatted} which is powered by webpack5.
62
+ ${sbFormatted} runs webpack4 by default, which is incompatible.
63
+
64
+ In order to work with your version of Angular, we need to install Storybook's ${_chalk.default.cyan('webpack5 builder')}.
65
+
66
+ More info: ${_chalk.default.yellow('https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#angular12-upgrade')}
67
+ `;
68
+ },
69
+
70
+ async run(options) {
71
+ return _webpack.webpack5.run(Object.assign({}, options, {
72
+ result: Object.assign({
73
+ webpackVersion: null
74
+ }, options.result)
75
+ }));
76
+ }
77
+
78
+ };
79
+ exports.angular12 = angular12;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.cra5 = void 0;
7
+
8
+ require("core-js/modules/es.promise.js");
9
+
10
+ var _chalk = _interopRequireDefault(require("chalk"));
11
+
12
+ var _tsDedent = _interopRequireDefault(require("ts-dedent"));
13
+
14
+ var _semver = _interopRequireDefault(require("@storybook/semver"));
15
+
16
+ var _webpack = require("./webpack5");
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ /**
21
+ * Is the user upgrading from CRA4 to CRA5?
22
+ *
23
+ * If so:
24
+ * - Run webpack5 fix
25
+ */
26
+ const cra5 = {
27
+ id: 'cra5',
28
+
29
+ async check({
30
+ packageManager
31
+ }) {
32
+ var _semver$coerce;
33
+
34
+ const packageJson = packageManager.retrievePackageJson();
35
+ const {
36
+ dependencies,
37
+ devDependencies
38
+ } = packageJson;
39
+ const craVersion = dependencies['react-scripts'] || devDependencies['react-scripts'];
40
+ const craCoerced = (_semver$coerce = _semver.default.coerce(craVersion)) === null || _semver$coerce === void 0 ? void 0 : _semver$coerce.version;
41
+
42
+ if (!craCoerced || _semver.default.lt(craCoerced, '5.0.0')) {
43
+ return null;
44
+ }
45
+
46
+ const builderInfo = await _webpack.webpack5.checkWebpack5Builder(packageJson);
47
+ return builderInfo ? Object.assign({
48
+ craVersion
49
+ }, builderInfo) : null;
50
+ },
51
+
52
+ prompt({
53
+ craVersion,
54
+ storybookVersion
55
+ }) {
56
+ const craFormatted = _chalk.default.cyan(`Create React App (CRA) ${craVersion}`);
57
+
58
+ const sbFormatted = _chalk.default.cyan(`Storybook ${storybookVersion}`);
59
+
60
+ return (0, _tsDedent.default)`
61
+ We've detected you are running ${craFormatted} which is powered by webpack5.
62
+ ${sbFormatted} runs webpack4 by default, which is incompatible.
63
+
64
+ In order to work with your version of CRA, we need to install Storybook's ${_chalk.default.cyan('webpack5 builder')}.
65
+
66
+ More info: ${_chalk.default.yellow('https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#cra5-upgrade')}
67
+ `;
68
+ },
69
+
70
+ async run(options) {
71
+ return _webpack.webpack5.run(Object.assign({}, options, {
72
+ result: Object.assign({
73
+ webpackVersion: null
74
+ }, options.result)
75
+ }));
76
+ }
77
+
78
+ };
79
+ exports.cra5 = cra5;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ fixes: true
8
+ };
9
+ exports.fixes = void 0;
10
+
11
+ var _cra = require("./cra5");
12
+
13
+ var _webpack = require("./webpack5");
14
+
15
+ var _angular = require("./angular12");
16
+
17
+ var _mainjsFramework = require("./mainjsFramework");
18
+
19
+ var _types = require("../types");
20
+
21
+ Object.keys(_types).forEach(function (key) {
22
+ if (key === "default" || key === "__esModule") return;
23
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
24
+ if (key in exports && exports[key] === _types[key]) return;
25
+ Object.defineProperty(exports, key, {
26
+ enumerable: true,
27
+ get: function () {
28
+ return _types[key];
29
+ }
30
+ });
31
+ });
32
+ const fixes = [_cra.cra5, _webpack.webpack5, _angular.angular12, _mainjsFramework.mainjsFramework];
33
+ exports.fixes = fixes;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.mainjsFramework = void 0;
7
+
8
+ require("core-js/modules/es.promise.js");
9
+
10
+ var _chalk = _interopRequireDefault(require("chalk"));
11
+
12
+ var _tsDedent = _interopRequireDefault(require("ts-dedent"));
13
+
14
+ var _semver = _interopRequireDefault(require("@storybook/semver"));
15
+
16
+ var _csfTools = require("@storybook/csf-tools");
17
+
18
+ var _getStorybookInfo = require("../helpers/getStorybookInfo");
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ const logger = console;
23
+ const mainjsFramework = {
24
+ id: 'mainjsFramework',
25
+
26
+ async check({
27
+ packageManager
28
+ }) {
29
+ var _semver$coerce;
30
+
31
+ const packageJson = packageManager.retrievePackageJson();
32
+ const {
33
+ mainConfig,
34
+ framework,
35
+ version: storybookVersion
36
+ } = (0, _getStorybookInfo.getStorybookInfo)(packageJson);
37
+ const storybookCoerced = storybookVersion && ((_semver$coerce = _semver.default.coerce(storybookVersion)) === null || _semver$coerce === void 0 ? void 0 : _semver$coerce.version);
38
+
39
+ if (!storybookCoerced) {
40
+ logger.warn((0, _tsDedent.default)`
41
+ ❌ Unable to determine storybook version, skipping ${_chalk.default.cyan('mainjsFramework')} fix.
42
+ 🤔 Are you running automigrate from your project directory?
43
+ `);
44
+ return null;
45
+ }
46
+
47
+ const main = await (0, _csfTools.readConfig)(mainConfig);
48
+ const currentFramework = main.getFieldValue(['framework']);
49
+ const features = main.getFieldValue(['features']);
50
+ if (currentFramework) return null;
51
+ return features !== null && features !== void 0 && features.breakingChangesV7 || features !== null && features !== void 0 && features.storyStoreV7 || _semver.default.gte(storybookCoerced, '7.0.0') ? {
52
+ main,
53
+ framework: `@storybook/${framework}`
54
+ } : null;
55
+ },
56
+
57
+ prompt({
58
+ framework
59
+ }) {
60
+ const frameworkFormatted = _chalk.default.cyan(`framework: '${framework}'`);
61
+
62
+ return (0, _tsDedent.default)`
63
+ We've detected that your main.js configuration file does not specify the
64
+ 'framework' field, which is a requirement in SB7.0 and above. We can add one
65
+ for you automatically:
66
+
67
+ ${frameworkFormatted}
68
+
69
+ More info: ${_chalk.default.yellow('https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#mainjs-framework-field')}
70
+ `;
71
+ },
72
+
73
+ async run({
74
+ result: {
75
+ main,
76
+ framework
77
+ },
78
+ dryRun
79
+ }) {
80
+ logger.info(`✅ Setting 'framework' to '${framework}' in main.js`);
81
+
82
+ if (!dryRun) {
83
+ main.setFieldValue(['framework'], framework);
84
+ await (0, _csfTools.writeConfig)(main);
85
+ }
86
+ }
87
+
88
+ };
89
+ exports.mainjsFramework = mainjsFramework;
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.webpack5 = void 0;
7
+
8
+ require("core-js/modules/es.promise.js");
9
+
10
+ var _chalk = _interopRequireDefault(require("chalk"));
11
+
12
+ var _tsDedent = _interopRequireDefault(require("ts-dedent"));
13
+
14
+ var _semver = _interopRequireDefault(require("@storybook/semver"));
15
+
16
+ var _csfTools = require("@storybook/csf-tools");
17
+
18
+ var _getStorybookInfo = require("../helpers/getStorybookInfo");
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ const logger = console;
23
+
24
+ /**
25
+ * Is the user using webpack5 in their project?
26
+ *
27
+ * If the user is using a version of SB >= 6.3,
28
+ * prompt them to upgrade to webpack5.
29
+ *
30
+ * - Add manager-webpack5 builder-webpack5 as dev dependencies
31
+ * - Add core.builder = 'webpack5' to main.js
32
+ * - Add 'webpack5' as a project dependency
33
+ */
34
+ const webpack5 = {
35
+ id: 'webpack5',
36
+
37
+ async checkWebpack5Builder(packageJson) {
38
+ var _semver$coerce;
39
+
40
+ const {
41
+ mainConfig,
42
+ version: storybookVersion
43
+ } = (0, _getStorybookInfo.getStorybookInfo)(packageJson);
44
+ const storybookCoerced = storybookVersion && ((_semver$coerce = _semver.default.coerce(storybookVersion)) === null || _semver$coerce === void 0 ? void 0 : _semver$coerce.version);
45
+
46
+ if (!storybookCoerced) {
47
+ logger.warn((0, _tsDedent.default)`
48
+ ❌ Unable to determine storybook version, skipping ${_chalk.default.cyan('webpack5')} fix.
49
+ 🤔 Are you running automigrate from your project directory?
50
+ `);
51
+ return null;
52
+ }
53
+
54
+ if (_semver.default.lt(storybookCoerced, '6.3.0')) {
55
+ logger.warn((0, _tsDedent.default)`
56
+ Detected SB 6.3 or below, please upgrade storybook to use webpack5.
57
+
58
+ To upgrade to the latest stable release, run this from your project directory:
59
+
60
+ ${_chalk.default.cyan('npx sb upgrade')}
61
+
62
+ Add the ${_chalk.default.cyan('--prerelease')} flag to get the latest prerelease.
63
+ `.trim());
64
+ return null;
65
+ }
66
+
67
+ if (_semver.default.gte(storybookCoerced, '7.0.0')) {
68
+ return null;
69
+ }
70
+
71
+ if (!mainConfig) {
72
+ logger.warn('Unable to find storybook main.js config');
73
+ return null;
74
+ }
75
+
76
+ const main = await (0, _csfTools.readConfig)(mainConfig);
77
+ const builder = main.getFieldValue(['core', 'builder']);
78
+
79
+ if (builder && builder !== 'webpack4') {
80
+ logger.info(`Found builder ${builder}, skipping`);
81
+ return null;
82
+ }
83
+
84
+ return {
85
+ storybookVersion,
86
+ main
87
+ };
88
+ },
89
+
90
+ async check({
91
+ packageManager
92
+ }) {
93
+ var _semver$coerce2;
94
+
95
+ const packageJson = packageManager.retrievePackageJson();
96
+ const {
97
+ dependencies,
98
+ devDependencies
99
+ } = packageJson;
100
+ const webpackVersion = dependencies.webpack || devDependencies.webpack;
101
+ const webpackCoerced = (_semver$coerce2 = _semver.default.coerce(webpackVersion)) === null || _semver$coerce2 === void 0 ? void 0 : _semver$coerce2.version;
102
+ if (!webpackCoerced || _semver.default.lt(webpackCoerced, '5.0.0') || _semver.default.gte(webpackCoerced, '6.0.0')) return null;
103
+ const builderInfo = await this.checkWebpack5Builder(packageJson);
104
+ return builderInfo ? Object.assign({
105
+ webpackVersion
106
+ }, builderInfo) : null;
107
+ },
108
+
109
+ prompt({
110
+ webpackVersion,
111
+ storybookVersion
112
+ }) {
113
+ const webpackFormatted = _chalk.default.cyan(`webpack ${webpackVersion}`);
114
+
115
+ const sbFormatted = _chalk.default.cyan(`Storybook ${storybookVersion}`);
116
+
117
+ return (0, _tsDedent.default)`
118
+ We've detected you're running ${webpackFormatted}.
119
+ ${sbFormatted} runs webpack4 by default, which may not be compatible.
120
+
121
+ To run Storybook in webpack5-mode, we can install Storybook's ${_chalk.default.cyan('webpack5 builder')} for you.
122
+
123
+ More info: ${_chalk.default.yellow('https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#webpack-5-manager-build')}
124
+ `;
125
+ },
126
+
127
+ async run({
128
+ result: {
129
+ main,
130
+ storybookVersion,
131
+ webpackVersion
132
+ },
133
+ packageManager,
134
+ dryRun
135
+ }) {
136
+ const deps = [`@storybook/manager-webpack5@${storybookVersion}`, `@storybook/builder-webpack5@${storybookVersion}`]; // this also gets called by 'cra5' fix so we need to add
137
+ // webpack5 at the project root so that it gets hoisted
138
+
139
+ if (!webpackVersion) {
140
+ deps.push('webpack@5');
141
+ }
142
+
143
+ logger.info(`✅ Adding dependencies: ${deps}`);
144
+ if (!dryRun) packageManager.addDependencies({
145
+ installAsDevDependencies: true
146
+ }, deps);
147
+ logger.info('✅ Setting `core.builder` to `webpack5` in main.js');
148
+
149
+ if (!dryRun) {
150
+ main.setFieldValue(['core', 'builder'], 'webpack5');
151
+ await (0, _csfTools.writeConfig)(main);
152
+ }
153
+ }
154
+
155
+ };
156
+ exports.webpack5 = webpack5;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getStorybookConfiguration = getStorybookConfiguration;
7
+
8
+ /*
9
+ * Lifted from chromatic-cli
10
+ *
11
+ * This is not exactly clever but it works most of the time
12
+ * we receive the full text of the npm script, and we look if we can find the cli flag
13
+ */
14
+ function getStorybookConfiguration(storybookScript, shortName, longName) {
15
+ const parts = storybookScript.split(/[\s='"]+/);
16
+ let index = parts.indexOf(longName);
17
+
18
+ if (index === -1) {
19
+ index = parts.indexOf(shortName);
20
+ }
21
+
22
+ if (index === -1) {
23
+ return null;
24
+ }
25
+
26
+ return parts[index + 1];
27
+ }
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getStorybookInfo = void 0;
7
+
8
+ var _path = _interopRequireDefault(require("path"));
9
+
10
+ var _fsExtra = _interopRequireDefault(require("fs-extra"));
11
+
12
+ var _getStorybookConfiguration = require("./getStorybookConfiguration");
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ const viewLayers = {
17
+ '@storybook/react': 'react',
18
+ '@storybook/vue': 'vue',
19
+ '@storybook/vue3': 'vue3',
20
+ '@storybook/angular': 'angular',
21
+ '@storybook/html': 'html',
22
+ '@storybook/web-components': 'web-components',
23
+ '@storybook/polymer': 'polymer',
24
+ '@storybook/ember': 'ember',
25
+ '@storybook/marko': 'marko',
26
+ '@storybook/mithril': 'mithril',
27
+ '@storybook/riot': 'riot',
28
+ '@storybook/svelte': 'svelte',
29
+ '@storybook/preact': 'preact',
30
+ '@storybook/rax': 'rax'
31
+ };
32
+ const logger = console;
33
+
34
+ const findDependency = ({
35
+ dependencies,
36
+ devDependencies,
37
+ peerDependencies
38
+ }, predicate) => [Object.entries(dependencies || {}).find(predicate), Object.entries(devDependencies || {}).find(predicate), Object.entries(peerDependencies || {}).find(predicate)];
39
+
40
+ const getFrameworkInfo = packageJson => {
41
+ // Pull the viewlayer from dependencies in package.json
42
+ const [dep, devDep, peerDep] = findDependency(packageJson, ([key]) => viewLayers[key]);
43
+ const [pkg, version] = dep || devDep || peerDep || [];
44
+ const framework = viewLayers[pkg];
45
+
46
+ if (dep && devDep && dep[0] === devDep[0]) {
47
+ logger.warn(`Found "${dep[0]}" in both "dependencies" and "devDependencies". This is probably a mistake.`);
48
+ }
49
+
50
+ if (dep && peerDep && dep[0] === peerDep[0]) {
51
+ logger.warn(`Found "${dep[0]}" in both "dependencies" and "peerDependencies". This is probably a mistake.`);
52
+ }
53
+
54
+ return {
55
+ framework,
56
+ version
57
+ };
58
+ };
59
+
60
+ const validConfigExtensions = ['ts', 'js', 'tsx', 'jsx', 'mjs', 'cjs'];
61
+
62
+ const findConfigFile = (prefix, configDir) => {
63
+ const filePrefix = _path.default.join(configDir, prefix);
64
+
65
+ const extension = validConfigExtensions.find(ext => _fsExtra.default.existsSync(`${filePrefix}.${ext}`));
66
+ return extension ? `${filePrefix}.${extension}` : null;
67
+ };
68
+
69
+ const getConfigInfo = packageJson => {
70
+ var _packageJson$scripts;
71
+
72
+ let configDir = '.storybook';
73
+ const storybookScript = (_packageJson$scripts = packageJson.scripts) === null || _packageJson$scripts === void 0 ? void 0 : _packageJson$scripts.storybook;
74
+
75
+ if (storybookScript) {
76
+ const configParam = (0, _getStorybookConfiguration.getStorybookConfiguration)(storybookScript, '-c', '--config-dir');
77
+ if (configParam) configDir = configParam;
78
+ }
79
+
80
+ return {
81
+ configDir,
82
+ mainConfig: findConfigFile('main', configDir),
83
+ previewConfig: findConfigFile('preview', configDir),
84
+ managerConfig: findConfigFile('manager', configDir)
85
+ };
86
+ };
87
+
88
+ const getStorybookInfo = packageJson => {
89
+ const frameworkInfo = getFrameworkInfo(packageJson);
90
+ const configInfo = getConfigInfo(packageJson);
91
+ return Object.assign({}, frameworkInfo, configInfo);
92
+ };
93
+
94
+ exports.getStorybookInfo = getStorybookInfo;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.automigrate = void 0;
7
+
8
+ require("core-js/modules/es.promise.js");
9
+
10
+ var _prompts = _interopRequireDefault(require("prompts"));
11
+
12
+ var _chalk = _interopRequireDefault(require("chalk"));
13
+
14
+ var _boxen = _interopRequireDefault(require("boxen"));
15
+
16
+ var _jsPackageManager = require("../js-package-manager");
17
+
18
+ var _fixes = require("./fixes");
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ /* eslint-disable no-await-in-loop */
23
+ const logger = console;
24
+
25
+ const automigrate = async ({
26
+ fixId,
27
+ dryRun,
28
+ yes
29
+ }) => {
30
+ const packageManager = _jsPackageManager.JsPackageManagerFactory.getPackageManager();
31
+
32
+ const filtered = fixId ? _fixes.fixes.filter(f => f.id === fixId) : _fixes.fixes;
33
+
34
+ for (let i = 0; i < filtered.length; i += 1) {
35
+ const f = _fixes.fixes[i];
36
+ logger.info(`🔎 checking '${_chalk.default.cyan(f.id)}'`);
37
+ const result = await f.check({
38
+ packageManager
39
+ });
40
+
41
+ if (result) {
42
+ const message = f.prompt(result);
43
+ logger.info((0, _boxen.default)(message, {
44
+ borderStyle: 'round',
45
+ padding: 1,
46
+ borderColor: '#F1618C'
47
+ }));
48
+ const runAnswer = yes || dryRun ? {
49
+ fix: false
50
+ } : await (0, _prompts.default)([{
51
+ type: 'confirm',
52
+ name: 'fix',
53
+ message: `Do you want to run the '${_chalk.default.cyan(f.id)}' fix on your project?`
54
+ }]);
55
+
56
+ if (runAnswer.fix) {
57
+ await f.run({
58
+ result,
59
+ packageManager,
60
+ dryRun
61
+ });
62
+ logger.info(`✅ fixed ${_chalk.default.cyan(f.id)}`);
63
+ } else {
64
+ logger.info(`Skipping the ${_chalk.default.cyan(f.id)} fix.`);
65
+ logger.info();
66
+ logger.info(`If you change your mind, run '${_chalk.default.cyan('npx sb@next fix')}'`);
67
+ }
68
+ }
69
+ }
70
+ };
71
+
72
+ exports.automigrate = automigrate;
@@ -0,0 +1 @@
1
+ "use strict";
@@ -1,5 +1,5 @@
1
1
  import { html } from 'lit-html';
2
- import { styleMap } from 'lit-html/directives/style-map';
2
+ import { styleMap } from 'lit-html/directives/style-map.js';
3
3
  import './button.css';
4
4
 
5
5
  /**
@@ -1,5 +1,5 @@
1
1
  import { html } from 'lit-html';
2
- import { styleMap } from 'lit-html/directives/style-map';
2
+ import { styleMap } from 'lit-html/directives/style-map.js';
3
3
  import './button.css';
4
4
 
5
5
  export interface ButtonProps {