@storybook/builder-webpack5 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.
package/dist/cjs/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.overridePresets = exports.corePresets = exports.build = exports.bail = exports.start = exports.executor = exports.getConfig = void 0;
6
+ exports.start = exports.overridePresets = exports.getConfig = exports.executor = exports.corePresets = exports.build = exports.bail = void 0;
7
7
 
8
8
  require("core-js/modules/es.promise.js");
9
9
 
@@ -19,18 +19,31 @@ var _coreCommon = require("@storybook/core-common");
19
19
 
20
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
21
 
22
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
23
 
24
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
25
 
26
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
26
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
27
27
 
28
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
28
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
29
29
 
30
30
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
31
31
 
32
32
  var compilation;
33
33
  var reject;
34
+ var executor = {
35
+ get: async function (options) {
36
+ var _await$options$preset;
37
+
38
+ var version = (await options.presets.apply('webpackVersion')) || '5';
39
+ var webpackInstance = ((_await$options$preset = await options.presets.apply('webpackInstance')) === null || _await$options$preset === void 0 ? void 0 : _await$options$preset.default) || _webpack.default;
40
+ (0, _coreCommon.checkWebpackVersion)({
41
+ version: version
42
+ }, '5', 'builder-webpack5');
43
+ return webpackInstance;
44
+ }
45
+ };
46
+ exports.executor = executor;
34
47
 
35
48
  var getConfig = async function (options) {
36
49
  var presets = options.presets;
@@ -47,21 +60,51 @@ var getConfig = async function (options) {
47
60
  };
48
61
 
49
62
  exports.getConfig = getConfig;
50
- var executor = {
51
- get: async function (options) {
52
- var _await$options$preset;
63
+ var asyncIterator;
53
64
 
54
- var version = (await options.presets.apply('webpackVersion')) || '5';
55
- var webpackInstance = ((_await$options$preset = await options.presets.apply('webpackInstance')) === null || _await$options$preset === void 0 ? void 0 : _await$options$preset.default) || _webpack.default;
56
- (0, _coreCommon.checkWebpackVersion)({
57
- version: version
58
- }, '5', 'builder-webpack5');
59
- return webpackInstance;
65
+ var bail = async function () {
66
+ if (asyncIterator) {
67
+ try {
68
+ // we tell the builder (that started) to stop ASAP and wait
69
+ await asyncIterator.throw(new Error());
70
+ } catch (e) {//
71
+ }
60
72
  }
73
+
74
+ if (reject) {
75
+ reject();
76
+ } // we wait for the compiler to finish it's work, so it's command-line output doesn't interfere
77
+
78
+
79
+ return new Promise(function (res, rej) {
80
+ if (process && compilation) {
81
+ try {
82
+ compilation.close(function () {
83
+ return res();
84
+ });
85
+
86
+ _nodeLogger.logger.warn('Force closed preview build');
87
+ } catch (err) {
88
+ _nodeLogger.logger.warn('Unable to close preview build!');
89
+
90
+ res();
91
+ }
92
+ } else {
93
+ res();
94
+ }
95
+ });
61
96
  };
62
- exports.executor = executor;
97
+ /**
98
+ * This function is a generator so that we can abort it mid process
99
+ * in case of failure coming from other processes e.g. preview builder
100
+ *
101
+ * I am sorry for making you read about generators today :')
102
+ */
103
+
63
104
 
64
- var start = async function ({
105
+ exports.bail = bail;
106
+
107
+ var starter = async function* starterGeneratorFn({
65
108
  startTime: startTime,
66
109
  options: options,
67
110
  router: router
@@ -69,7 +112,9 @@ var start = async function ({
69
112
  var _config$output;
70
113
 
71
114
  var webpackInstance = await executor.get(options);
115
+ yield;
72
116
  var config = await getConfig(options);
117
+ yield;
73
118
  var compiler = webpackInstance(config);
74
119
 
75
120
  if (!compiler) {
@@ -101,6 +146,7 @@ var start = async function ({
101
146
  handler = _await$useProgressRep.handler,
102
147
  modulesCount = _await$useProgressRep.modulesCount;
103
148
 
149
+ yield;
104
150
  new _webpack.ProgressPlugin({
105
151
  handler: handler,
106
152
  modulesCount: modulesCount
@@ -116,6 +162,7 @@ var start = async function ({
116
162
  compilation.waitUntilValid(ready);
117
163
  reject = stop;
118
164
  });
165
+ yield;
119
166
 
120
167
  if (!stats) {
121
168
  throw new Error('no stats after building preview');
@@ -131,38 +178,25 @@ var start = async function ({
131
178
  totalTime: process.hrtime(startTime)
132
179
  };
133
180
  };
181
+ /**
182
+ * This function is a generator so that we can abort it mid process
183
+ * in case of failure coming from other processes e.g. manager builder
184
+ *
185
+ * I am sorry for making you read about generators today :')
186
+ */
134
187
 
135
- exports.start = start;
136
-
137
- var bail = function (e) {
138
- if (reject) {
139
- reject();
140
- }
141
-
142
- if (process) {
143
- try {
144
- compilation.close();
145
-
146
- _nodeLogger.logger.warn('Force closed preview build');
147
- } catch (err) {
148
- _nodeLogger.logger.warn('Unable to close preview build!');
149
- }
150
- }
151
-
152
- throw e;
153
- };
154
-
155
- exports.bail = bail;
156
188
 
157
- var build = async function ({
158
- options: options,
159
- startTime: startTime
189
+ var builder = async function* builderGeneratorFn({
190
+ startTime: startTime,
191
+ options: options
160
192
  }) {
161
193
  var webpackInstance = await executor.get(options);
194
+ yield;
162
195
 
163
196
  _nodeLogger.logger.info('=> Compiling preview..');
164
197
 
165
198
  var config = await getConfig(options);
199
+ yield;
166
200
  return new Promise(function (succeed, fail) {
167
201
  var compiler = webpackInstance(config);
168
202
  compiler.run(function (error, stats) {
@@ -181,10 +215,10 @@ var build = async function ({
181
215
  }
182
216
 
183
217
  if (stats && (stats.hasErrors() || stats.hasWarnings())) {
184
- var _stats$toJson = stats.toJson({
218
+ var _stats$toJson = stats.toJson(typeof config.stats === 'string' ? config.stats : _objectSpread({
185
219
  warnings: true,
186
220
  errors: true
187
- }),
221
+ }, config.stats)),
188
222
  _stats$toJson$warning = _stats$toJson.warnings,
189
223
  warnings = _stats$toJson$warning === void 0 ? [] : _stats$toJson$warning,
190
224
  _stats$toJson$errors = _stats$toJson.errors,
@@ -229,6 +263,32 @@ var build = async function ({
229
263
  });
230
264
  };
231
265
 
266
+ var start = async function (options) {
267
+ asyncIterator = starter(options);
268
+ var result;
269
+
270
+ do {
271
+ // eslint-disable-next-line no-await-in-loop
272
+ result = await asyncIterator.next();
273
+ } while (!result.done);
274
+
275
+ return result.value;
276
+ };
277
+
278
+ exports.start = start;
279
+
280
+ var build = async function (options) {
281
+ asyncIterator = builder(options);
282
+ var result;
283
+
284
+ do {
285
+ // eslint-disable-next-line no-await-in-loop
286
+ result = await asyncIterator.next();
287
+ } while (!result.done);
288
+
289
+ return result.value;
290
+ };
291
+
232
292
  exports.build = build;
233
293
  var corePresets = [require.resolve('./presets/preview-preset.js')];
234
294
  exports.corePresets = corePresets;
@@ -22,9 +22,9 @@ var _baseWebpack = require("../preview/base-webpack.config");
22
22
 
23
23
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
24
 
25
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
25
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
26
26
 
27
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
28
28
 
29
29
  async function webpack(config, options) {
30
30
  // @ts-ignore
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.entries = exports.webpack = void 0;
6
+ exports.webpack = exports.entries = exports.babel = void 0;
7
7
 
8
8
  require("core-js/modules/es.promise.js");
9
9
 
@@ -30,4 +30,12 @@ var entries = async function (_, options) {
30
30
  return result;
31
31
  };
32
32
 
33
- exports.entries = entries;
33
+ exports.entries = entries;
34
+
35
+ var babel = async function (config, options) {
36
+ // FIXME: Add this to overrides to only apply to story files
37
+ config.plugins.push('babel-plugin-named-exports-order');
38
+ return config;
39
+ };
40
+
41
+ exports.babel = babel;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createBabelLoader = exports.useBaseTsSupport = void 0;
6
+ exports.useBaseTsSupport = exports.createBabelLoader = void 0;
7
7
 
8
8
  var _coreCommon = require("@storybook/core-common");
9
9
 
@@ -9,14 +9,14 @@ require("core-js/modules/es.promise.js");
9
9
 
10
10
  var _nodeLogger = require("@storybook/node-logger");
11
11
 
12
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
12
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
13
13
 
14
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
14
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
15
15
 
16
16
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
17
 
18
18
  async function createDefaultWebpackConfig(storybookBaseConfig, options) {
19
- var _options, _storybookBaseConfig$;
19
+ var _storybookBaseConfig$;
20
20
 
21
21
  if (options.presetsList.some(function (preset) {
22
22
  return /@storybook(\/|\\)preset-create-react-app/.test(typeof preset === 'string' ? preset : preset.name);
@@ -50,12 +50,18 @@ async function createDefaultWebpackConfig(storybookBaseConfig, options) {
50
50
 
51
51
  var isProd = storybookBaseConfig.mode !== 'development';
52
52
  var coreOptions = await options.presets.apply('core');
53
- var cacheConfig = (_options = coreOptions.builder.options) !== null && _options !== void 0 && _options.fsCache ? {
53
+ var builderOptions = coreOptions.builder.options;
54
+ var cacheConfig = builderOptions !== null && builderOptions !== void 0 && builderOptions.fsCache ? {
54
55
  cache: {
55
56
  type: 'filesystem'
56
57
  }
57
58
  } : {};
58
- return _objectSpread(_objectSpread({}, storybookBaseConfig), {}, {
59
+ var lazyCompilationConfig = builderOptions !== null && builderOptions !== void 0 && builderOptions.lazyCompilation && !isProd ? {
60
+ lazyCompilation: {
61
+ entries: false
62
+ }
63
+ } : {};
64
+ return _objectSpread(_objectSpread(_objectSpread({}, storybookBaseConfig), {}, {
59
65
  module: _objectSpread(_objectSpread({}, storybookBaseConfig.module), {}, {
60
66
  rules: [...storybookBaseConfig.module.rules, cssLoaders, {
61
67
  test: /\.(svg|ico|jpg|jpeg|png|apng|gif|eot|otf|webp|ttf|woff|woff2|cur|ani|pdf)(\?.*)?$/,
@@ -82,5 +88,7 @@ async function createDefaultWebpackConfig(storybookBaseConfig, options) {
82
88
  assert: false
83
89
  })
84
90
  })
85
- }, cacheConfig);
91
+ }, cacheConfig), {}, {
92
+ experiments: _objectSpread(_objectSpread({}, storybookBaseConfig.experiments), lazyCompilationConfig)
93
+ });
86
94
  }
@@ -31,9 +31,9 @@ var _useBaseTsSupport = require("./useBaseTsSupport");
31
31
 
32
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
33
 
34
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
34
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
35
35
 
36
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
36
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
37
37
 
38
38
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
39
39
 
@@ -85,7 +85,7 @@ var _default = async function _default(options) {
85
85
 
86
86
  var configEntryPath = _path.default.resolve(_path.default.join(workingDir, 'storybook-config-entry.js'));
87
87
 
88
- virtualModuleMapping[configEntryPath] = (0, _coreCommon.handlebars)(await (0, _coreCommon.readTemplate)(_path.default.join(__dirname, 'virtualModuleModernEntry.js.handlebars')), {
88
+ virtualModuleMapping[configEntryPath] = (0, _coreCommon.handlebars)(await (0, _coreCommon.readTemplate)(require.resolve('@storybook/builder-webpack5/templates/virtualModuleModernEntry.js.handlebars')), {
89
89
  storiesFilename: storiesFilename,
90
90
  configs: configs
91
91
  } // We need to double escape `\` for webpack. We may have some in windows paths
@@ -100,7 +100,9 @@ var _default = async function _default(options) {
100
100
  var entryTemplate = await (0, _coreCommon.readTemplate)(_path.default.join(__dirname, 'virtualModuleEntry.template.js'));
101
101
  configs.forEach(function (configFilename) {
102
102
  var clientApi = storybookPaths['@storybook/client-api'];
103
- var clientLogger = storybookPaths['@storybook/client-logger'];
103
+ var clientLogger = storybookPaths['@storybook/client-logger']; // NOTE: although this file is also from the `dist/cjs` directory, it is actually a ESM
104
+ // file, see https://github.com/storybookjs/storybook/pull/16727#issuecomment-986485173
105
+
104
106
  virtualModuleMapping[`${configFilename}-generated-config-entry.js`] = (0, _coreCommon.interpolate)(entryTemplate, {
105
107
  configFilename: configFilename,
106
108
  clientApi: clientApi,
@@ -110,9 +112,11 @@ var _default = async function _default(options) {
110
112
  });
111
113
 
112
114
  if (stories.length > 0) {
113
- var storyTemplate = await (0, _coreCommon.readTemplate)(_path.default.join(__dirname, 'virtualModuleStory.template.js'));
115
+ var storyTemplate = await (0, _coreCommon.readTemplate)(_path.default.join(__dirname, 'virtualModuleStory.template.js')); // NOTE: this file has a `.cjs` extension as it is a CJS file (from `dist/cjs`) and runs
116
+ // in the user's webpack mode, which may be strict about the use of require/import.
117
+ // See https://github.com/storybookjs/storybook/issues/14877
114
118
 
115
- var _storiesFilename = _path.default.resolve(_path.default.join(workingDir, `generated-stories-entry.js`));
119
+ var _storiesFilename = _path.default.resolve(_path.default.join(workingDir, `generated-stories-entry.cjs`));
116
120
 
117
121
  virtualModuleMapping[_storiesFilename] = (0, _coreCommon.interpolate)(storyTemplate, {
118
122
  frameworkImportPath: frameworkImportPath
@@ -182,7 +186,7 @@ var _default = async function _default(options) {
182
186
  }), new _webpack.DefinePlugin(_objectSpread(_objectSpread({}, (0, _coreCommon.stringifyProcessEnvs)(envs)), {}, {
183
187
  NODE_ENV: JSON.stringify(process.env.NODE_ENV)
184
188
  })), new _webpack.ProvidePlugin({
185
- process: 'process/browser.js'
189
+ process: require.resolve('process/browser.js')
186
190
  }), isProd ? null : new _webpack.HotModuleReplacementPlugin(), new _caseSensitivePathsWebpackPlugin.default(), quiet ? null : new _webpack.ProgressPlugin({}), shouldCheckTs ? new _forkTsCheckerWebpackPlugin.default(tsCheckOptions) : null].filter(Boolean),
187
191
  module: {
188
192
  rules: [babelLoader, (0, _coreCommon.es6Transpiler)(), {
@@ -199,7 +203,8 @@ var _default = async function _default(options) {
199
203
  'react-dom': _path.default.dirname(require.resolve('react-dom/package.json'))
200
204
  }),
201
205
  fallback: {
202
- path: require.resolve('path-browserify')
206
+ path: require.resolve('path-browserify'),
207
+ assert: require.resolve('browser-assert')
203
208
  }
204
209
  },
205
210
  optimization: {
@@ -208,7 +213,7 @@ var _default = async function _default(options) {
208
213
  },
209
214
  runtimeChunk: true,
210
215
  sideEffects: true,
211
- usedExports: true,
216
+ usedExports: isProd,
212
217
  moduleIds: 'named',
213
218
  minimizer: isProd ? [new _terserWebpackPlugin.default({
214
219
  parallel: true,
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
@@ -67,6 +67,7 @@ Object.keys(config).forEach(function (key) {
67
67
  return addParameters(v, false);
68
68
  }
69
69
 
70
+ case '__namedExportsOrder':
70
71
  case 'decorateStory':
71
72
  case 'renderToDOM':
72
73
  {
package/dist/esm/index.js CHANGED
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
@@ -12,6 +12,18 @@ import { logger } from '@storybook/node-logger';
12
12
  import { useProgressReporting, checkWebpackVersion } from '@storybook/core-common';
13
13
  var compilation;
14
14
  var reject;
15
+ export var executor = {
16
+ get: async function (options) {
17
+ var _await$options$preset;
18
+
19
+ var version = (await options.presets.apply('webpackVersion')) || '5';
20
+ var webpackInstance = ((_await$options$preset = await options.presets.apply('webpackInstance')) === null || _await$options$preset === void 0 ? void 0 : _await$options$preset.default) || webpack;
21
+ checkWebpackVersion({
22
+ version: version
23
+ }, '5', 'builder-webpack5');
24
+ return webpackInstance;
25
+ }
26
+ };
15
27
  export var getConfig = async function (options) {
16
28
  var presets = options.presets;
17
29
  var typescriptOptions = await presets.apply('typescript', {}, options);
@@ -25,19 +37,45 @@ export var getConfig = async function (options) {
25
37
  [`${options.framework}Options`]: frameworkOptions
26
38
  }));
27
39
  };
28
- export var executor = {
29
- get: async function (options) {
30
- var _await$options$preset;
31
-
32
- var version = (await options.presets.apply('webpackVersion')) || '5';
33
- var webpackInstance = ((_await$options$preset = await options.presets.apply('webpackInstance')) === null || _await$options$preset === void 0 ? void 0 : _await$options$preset.default) || webpack;
34
- checkWebpackVersion({
35
- version: version
36
- }, '5', 'builder-webpack5');
37
- return webpackInstance;
40
+ var asyncIterator;
41
+ export var bail = async function () {
42
+ if (asyncIterator) {
43
+ try {
44
+ // we tell the builder (that started) to stop ASAP and wait
45
+ await asyncIterator.throw(new Error());
46
+ } catch (e) {//
47
+ }
38
48
  }
49
+
50
+ if (reject) {
51
+ reject();
52
+ } // we wait for the compiler to finish it's work, so it's command-line output doesn't interfere
53
+
54
+
55
+ return new Promise(function (res, rej) {
56
+ if (process && compilation) {
57
+ try {
58
+ compilation.close(function () {
59
+ return res();
60
+ });
61
+ logger.warn('Force closed preview build');
62
+ } catch (err) {
63
+ logger.warn('Unable to close preview build!');
64
+ res();
65
+ }
66
+ } else {
67
+ res();
68
+ }
69
+ });
39
70
  };
40
- export var start = async function ({
71
+ /**
72
+ * This function is a generator so that we can abort it mid process
73
+ * in case of failure coming from other processes e.g. preview builder
74
+ *
75
+ * I am sorry for making you read about generators today :')
76
+ */
77
+
78
+ var starter = async function* starterGeneratorFn({
41
79
  startTime: startTime,
42
80
  options: options,
43
81
  router: router
@@ -45,7 +83,9 @@ export var start = async function ({
45
83
  var _config$output;
46
84
 
47
85
  var webpackInstance = await executor.get(options);
86
+ yield;
48
87
  var config = await getConfig(options);
88
+ yield;
49
89
  var compiler = webpackInstance(config);
50
90
 
51
91
  if (!compiler) {
@@ -75,6 +115,7 @@ export var start = async function ({
75
115
  handler = _await$useProgressRep.handler,
76
116
  modulesCount = _await$useProgressRep.modulesCount;
77
117
 
118
+ yield;
78
119
  new ProgressPlugin({
79
120
  handler: handler,
80
121
  modulesCount: modulesCount
@@ -90,6 +131,7 @@ export var start = async function ({
90
131
  compilation.waitUntilValid(ready);
91
132
  reject = stop;
92
133
  });
134
+ yield;
93
135
 
94
136
  if (!stats) {
95
137
  throw new Error('no stats after building preview');
@@ -105,29 +147,23 @@ export var start = async function ({
105
147
  totalTime: process.hrtime(startTime)
106
148
  };
107
149
  };
108
- export var bail = function (e) {
109
- if (reject) {
110
- reject();
111
- }
150
+ /**
151
+ * This function is a generator so that we can abort it mid process
152
+ * in case of failure coming from other processes e.g. manager builder
153
+ *
154
+ * I am sorry for making you read about generators today :')
155
+ */
112
156
 
113
- if (process) {
114
- try {
115
- compilation.close();
116
- logger.warn('Force closed preview build');
117
- } catch (err) {
118
- logger.warn('Unable to close preview build!');
119
- }
120
- }
121
157
 
122
- throw e;
123
- };
124
- export var build = async function ({
125
- options: options,
126
- startTime: startTime
158
+ var builder = async function* builderGeneratorFn({
159
+ startTime: startTime,
160
+ options: options
127
161
  }) {
128
162
  var webpackInstance = await executor.get(options);
163
+ yield;
129
164
  logger.info('=> Compiling preview..');
130
165
  var config = await getConfig(options);
166
+ yield;
131
167
  return new Promise(function (succeed, fail) {
132
168
  var compiler = webpackInstance(config);
133
169
  compiler.run(function (error, stats) {
@@ -144,10 +180,10 @@ export var build = async function ({
144
180
  }
145
181
 
146
182
  if (stats && (stats.hasErrors() || stats.hasWarnings())) {
147
- var _stats$toJson = stats.toJson({
183
+ var _stats$toJson = stats.toJson(typeof config.stats === 'string' ? config.stats : _objectSpread({
148
184
  warnings: true,
149
185
  errors: true
150
- }),
186
+ }, config.stats)),
151
187
  _stats$toJson$warning = _stats$toJson.warnings,
152
188
  warnings = _stats$toJson$warning === void 0 ? [] : _stats$toJson$warning,
153
189
  _stats$toJson$errors = _stats$toJson.errors,
@@ -191,5 +227,28 @@ export var build = async function ({
191
227
  });
192
228
  });
193
229
  };
230
+
231
+ export var start = async function (options) {
232
+ asyncIterator = starter(options);
233
+ var result;
234
+
235
+ do {
236
+ // eslint-disable-next-line no-await-in-loop
237
+ result = await asyncIterator.next();
238
+ } while (!result.done);
239
+
240
+ return result.value;
241
+ };
242
+ export var build = async function (options) {
243
+ asyncIterator = builder(options);
244
+ var result;
245
+
246
+ do {
247
+ // eslint-disable-next-line no-await-in-loop
248
+ result = await asyncIterator.next();
249
+ } while (!result.done);
250
+
251
+ return result.value;
252
+ };
194
253
  export var corePresets = [require.resolve('./presets/preview-preset.js')];
195
254
  export var overridePresets = [require.resolve('./presets/custom-webpack-preset.js')];
@@ -14,4 +14,9 @@ export var entries = async function (_, options) {
14
14
  }
15
15
 
16
16
  return result;
17
+ };
18
+ export var babel = async function (config, options) {
19
+ // FIXME: Add this to overrides to only apply to story files
20
+ config.plugins.push('babel-plugin-named-exports-order');
21
+ return config;
17
22
  };