@storybook/core-server 6.4.0-beta.1 → 6.4.0-beta.5

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.
@@ -104,7 +104,7 @@ async function buildStaticStandalone(options) {
104
104
  configDir: options.configDir,
105
105
  workingDir: process.cwd()
106
106
  });
107
- await (0, _storiesJson.extractStoriesJson)(_path.default.join(options.outputDir, 'stories.json'), stories, options.configDir);
107
+ await (0, _storiesJson.extractStoriesJson)(_path.default.join(options.outputDir, 'stories.json'), stories, options.configDir, !(features !== null && features !== void 0 && features.breakingChangesV7) && !(features !== null && features !== void 0 && features.storyStoreV7));
108
108
  }
109
109
 
110
110
  var fullOptions = _objectSpread(_objectSpread({}, options), {}, {
@@ -24,7 +24,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
24
24
  function getProdCli(packageJson) {
25
25
  process.env.NODE_ENV = process.env.NODE_ENV || 'production';
26
26
 
27
- _commander.default.version(packageJson.version).option('-s, --static-dir <dir-names>', 'Directory where to load static files from', _utils.parseList).option('-o, --output-dir <dir-name>', 'Directory where to store built files').option('-c, --config-dir <dir-name>', 'Directory where to load Storybook configurations from').option('-w, --watch', 'Enable watch mode').option('--quiet', 'Suppress verbose build output').option('--loglevel <level>', 'Control level of logging during build').option('--no-dll', 'Do not use dll reference (no-op)').option('--docs-dll', 'Use Docs dll reference (legacy)').option('--ui-dll', 'Use UI dll reference (legacy)').option('--debug-webpack', 'Display final webpack configurations for debugging purposes').option('--webpack-stats-json [directory]', 'Write Webpack Stats JSON to disk').option('--preview-url <string>', 'Disables the default storybook preview and lets your use your own').option('--force-build-preview', 'Build the preview iframe even if you are using --preview-url').option('--docs', 'Build a documentation-only site using addon-docs').option('--modern', 'Use modern browser modules').parse(process.argv);
27
+ _commander.default.version(packageJson.version).option('-s, --static-dir <dir-names>', 'Directory where to load static files from', _utils.parseList).option('-o, --output-dir <dir-name>', 'Directory where to store built files').option('-c, --config-dir <dir-name>', 'Directory where to load Storybook configurations from').option('--quiet', 'Suppress verbose build output').option('--loglevel <level>', 'Control level of logging during build').option('--no-dll', 'Do not use dll reference (no-op)').option('--docs-dll', 'Use Docs dll reference (legacy)').option('--ui-dll', 'Use UI dll reference (legacy)').option('--debug-webpack', 'Display final webpack configurations for debugging purposes').option('--webpack-stats-json [directory]', 'Write Webpack Stats JSON to disk').option('--preview-url <string>', 'Disables the default storybook preview and lets your use your own').option('--force-build-preview', 'Build the preview iframe even if you are using --preview-url').option('--docs', 'Build a documentation-only site using addon-docs').option('--modern', 'Use modern browser modules').parse(process.argv);
28
28
 
29
29
  _nodeLogger.logger.setLevel(_commander.default.loglevel);
30
30
 
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ require("core-js/modules/es.symbol.description.js");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
@@ -25,6 +27,24 @@ var _csfTools = require("@storybook/csf-tools");
25
27
 
26
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
29
 
30
+ 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; }
31
+
32
+ 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; }
33
+
34
+ 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; }
35
+
36
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
37
+
38
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
39
+
40
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
41
+
42
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
43
+
44
+ function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
45
+
46
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
47
+
28
48
  function sortExtractedStories(stories, storySortParameter, fileNameOrder) {
29
49
  var sortableStories = Object.values(stories);
30
50
  (0, _store.sortStoriesV7)(sortableStories, storySortParameter, fileNameOrder);
@@ -37,9 +57,10 @@ function sortExtractedStories(stories, storySortParameter, fileNameOrder) {
37
57
  class StoryIndexGenerator {
38
58
  // An internal cache mapping specifiers to a set of path=><set of stories>
39
59
  // Later, we'll combine each of these subsets together to form the full index
40
- constructor(specifiers, configDir) {
60
+ constructor(specifiers, configDir, storiesV2Compatibility) {
41
61
  this.specifiers = specifiers;
42
62
  this.configDir = configDir;
63
+ this.storiesV2Compatibility = storiesV2Compatibility;
43
64
  this.storyIndexEntries = void 0;
44
65
  this.storyIndexEntries = new Map();
45
66
  }
@@ -107,8 +128,6 @@ class StoryIndexGenerator {
107
128
  } catch (err) {
108
129
  _nodeLogger.logger.warn(`🚨 Extraction error on ${relativePath}: ${err}`);
109
130
 
110
- _nodeLogger.logger.warn(`🚨 ${err.stack}`);
111
-
112
131
  throw err;
113
132
  }
114
133
  }
@@ -127,9 +146,35 @@ class StoryIndexGenerator {
127
146
  });
128
147
  var storySortParameter = await this.getStorySortParameter();
129
148
  var sorted = sortExtractedStories(stories, storySortParameter, this.storyFileNames());
149
+ var compat = sorted;
150
+
151
+ if (this.storiesV2Compatibility) {
152
+ var titleToStoryCount = Object.values(sorted).reduce(function (acc, story) {
153
+ acc[story.title] = (acc[story.title] || 0) + 1;
154
+ return acc;
155
+ }, {});
156
+ compat = Object.entries(sorted).reduce(function (acc, entry) {
157
+ var _entry = _slicedToArray(entry, 2),
158
+ id = _entry[0],
159
+ story = _entry[1];
160
+
161
+ acc[id] = _objectSpread(_objectSpread({}, story), {}, {
162
+ id: id,
163
+ kind: story.title,
164
+ story: story.name,
165
+ parameters: {
166
+ __id: story.id,
167
+ docsOnly: titleToStoryCount[story.title] === 1 && story.name === 'Page',
168
+ fileName: story.importPath
169
+ }
170
+ });
171
+ return acc;
172
+ }, {});
173
+ }
174
+
130
175
  return {
131
176
  v: 3,
132
- stories: sorted
177
+ stories: compat
133
178
  };
134
179
  }
135
180
 
@@ -16,8 +16,8 @@ var _StoryIndexGenerator = require("./StoryIndexGenerator");
16
16
 
17
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
 
19
- async function extractStoriesJson(outputFile, normalizedStories, configDir) {
20
- var generator = new _StoryIndexGenerator.StoryIndexGenerator(normalizedStories, configDir);
19
+ async function extractStoriesJson(outputFile, normalizedStories, configDir, v2compatibility) {
20
+ var generator = new _StoryIndexGenerator.StoryIndexGenerator(normalizedStories, configDir, v2compatibility);
21
21
  await generator.initialize();
22
22
  var index = await generator.getIndex();
23
23
  await _fsExtra.default.writeJson(outputFile, index);
@@ -28,8 +28,9 @@ async function useStoriesJson(router, options) {
28
28
  configDir: options.configDir,
29
29
  workingDir: process.cwd()
30
30
  });
31
+ var features = await options.presets.apply('features');
31
32
  router.use('/stories.json', async function (_req, res) {
32
- var generator = new _StoryIndexGenerator.StoryIndexGenerator(normalized, options.configDir);
33
+ var generator = new _StoryIndexGenerator.StoryIndexGenerator(normalized, options.configDir, !(features !== null && features !== void 0 && features.breakingChangesV7) && !(features !== null && features !== void 0 && features.storyStoreV7));
33
34
  await generator.initialize();
34
35
 
35
36
  try {
@@ -76,7 +76,7 @@ export async function buildStaticStandalone(options) {
76
76
  configDir: options.configDir,
77
77
  workingDir: process.cwd()
78
78
  });
79
- await extractStoriesJson(path.join(options.outputDir, 'stories.json'), stories, options.configDir);
79
+ await extractStoriesJson(path.join(options.outputDir, 'stories.json'), stories, options.configDir, !(features !== null && features !== void 0 && features.breakingChangesV7) && !(features !== null && features !== void 0 && features.storyStoreV7));
80
80
  }
81
81
 
82
82
  var fullOptions = _objectSpread(_objectSpread({}, options), {}, {
@@ -10,7 +10,7 @@ import { logger } from '@storybook/node-logger';
10
10
  import { parseList, getEnvConfig, checkDeprecatedFlags } from './utils';
11
11
  export function getProdCli(packageJson) {
12
12
  process.env.NODE_ENV = process.env.NODE_ENV || 'production';
13
- program.version(packageJson.version).option('-s, --static-dir <dir-names>', 'Directory where to load static files from', parseList).option('-o, --output-dir <dir-name>', 'Directory where to store built files').option('-c, --config-dir <dir-name>', 'Directory where to load Storybook configurations from').option('-w, --watch', 'Enable watch mode').option('--quiet', 'Suppress verbose build output').option('--loglevel <level>', 'Control level of logging during build').option('--no-dll', 'Do not use dll reference (no-op)').option('--docs-dll', 'Use Docs dll reference (legacy)').option('--ui-dll', 'Use UI dll reference (legacy)').option('--debug-webpack', 'Display final webpack configurations for debugging purposes').option('--webpack-stats-json [directory]', 'Write Webpack Stats JSON to disk').option('--preview-url <string>', 'Disables the default storybook preview and lets your use your own').option('--force-build-preview', 'Build the preview iframe even if you are using --preview-url').option('--docs', 'Build a documentation-only site using addon-docs').option('--modern', 'Use modern browser modules').parse(process.argv);
13
+ program.version(packageJson.version).option('-s, --static-dir <dir-names>', 'Directory where to load static files from', parseList).option('-o, --output-dir <dir-name>', 'Directory where to store built files').option('-c, --config-dir <dir-name>', 'Directory where to load Storybook configurations from').option('--quiet', 'Suppress verbose build output').option('--loglevel <level>', 'Control level of logging during build').option('--no-dll', 'Do not use dll reference (no-op)').option('--docs-dll', 'Use Docs dll reference (legacy)').option('--ui-dll', 'Use UI dll reference (legacy)').option('--debug-webpack', 'Display final webpack configurations for debugging purposes').option('--webpack-stats-json [directory]', 'Write Webpack Stats JSON to disk').option('--preview-url <string>', 'Disables the default storybook preview and lets your use your own').option('--force-build-preview', 'Build the preview iframe even if you are using --preview-url').option('--docs', 'Build a documentation-only site using addon-docs').option('--modern', 'Use modern browser modules').parse(process.argv);
14
14
  logger.setLevel(program.loglevel);
15
15
  logger.info(chalk.bold(`${packageJson.name} v${packageJson.version}\n`)); // The key is the field created in `program` variable for
16
16
  // each command line argument. Value is the env variable.
@@ -1,6 +1,25 @@
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; }
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; }
4
+
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
+
7
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
+
9
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
+
11
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
12
+
13
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
14
+
15
+ function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
16
+
17
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
18
+
1
19
  import "core-js/modules/es.promise.js";
2
20
  import "core-js/modules/es.array.flat-map.js";
3
21
  import "core-js/modules/es.array.unscopables.flat-map.js";
22
+ import "core-js/modules/es.symbol.description.js";
4
23
  import path from 'path';
5
24
  import fs from 'fs-extra';
6
25
  import glob from 'globby';
@@ -20,9 +39,10 @@ function sortExtractedStories(stories, storySortParameter, fileNameOrder) {
20
39
  export class StoryIndexGenerator {
21
40
  // An internal cache mapping specifiers to a set of path=><set of stories>
22
41
  // Later, we'll combine each of these subsets together to form the full index
23
- constructor(specifiers, configDir) {
42
+ constructor(specifiers, configDir, storiesV2Compatibility) {
24
43
  this.specifiers = specifiers;
25
44
  this.configDir = configDir;
45
+ this.storiesV2Compatibility = storiesV2Compatibility;
26
46
  this.storyIndexEntries = void 0;
27
47
  this.storyIndexEntries = new Map();
28
48
  }
@@ -87,7 +107,6 @@ export class StoryIndexGenerator {
87
107
  entry[absolutePath] = fileStories;
88
108
  } catch (err) {
89
109
  logger.warn(`🚨 Extraction error on ${relativePath}: ${err}`);
90
- logger.warn(`🚨 ${err.stack}`);
91
110
  throw err;
92
111
  }
93
112
  }
@@ -106,9 +125,35 @@ export class StoryIndexGenerator {
106
125
  });
107
126
  var storySortParameter = await this.getStorySortParameter();
108
127
  var sorted = sortExtractedStories(stories, storySortParameter, this.storyFileNames());
128
+ var compat = sorted;
129
+
130
+ if (this.storiesV2Compatibility) {
131
+ var titleToStoryCount = Object.values(sorted).reduce(function (acc, story) {
132
+ acc[story.title] = (acc[story.title] || 0) + 1;
133
+ return acc;
134
+ }, {});
135
+ compat = Object.entries(sorted).reduce(function (acc, entry) {
136
+ var _entry = _slicedToArray(entry, 2),
137
+ id = _entry[0],
138
+ story = _entry[1];
139
+
140
+ acc[id] = _objectSpread(_objectSpread({}, story), {}, {
141
+ id: id,
142
+ kind: story.title,
143
+ story: story.name,
144
+ parameters: {
145
+ __id: story.id,
146
+ docsOnly: titleToStoryCount[story.title] === 1 && story.name === 'Page',
147
+ fileName: story.importPath
148
+ }
149
+ });
150
+ return acc;
151
+ }, {});
152
+ }
153
+
109
154
  return {
110
155
  v: 3,
111
- stories: sorted
156
+ stories: compat
112
157
  };
113
158
  }
114
159
 
@@ -2,8 +2,8 @@ import "core-js/modules/es.promise.js";
2
2
  import fs from 'fs-extra';
3
3
  import { normalizeStories } from '@storybook/core-common';
4
4
  import { StoryIndexGenerator } from './StoryIndexGenerator';
5
- export async function extractStoriesJson(outputFile, normalizedStories, configDir) {
6
- var generator = new StoryIndexGenerator(normalizedStories, configDir);
5
+ export async function extractStoriesJson(outputFile, normalizedStories, configDir, v2compatibility) {
6
+ var generator = new StoryIndexGenerator(normalizedStories, configDir, v2compatibility);
7
7
  await generator.initialize();
8
8
  var index = await generator.getIndex();
9
9
  await fs.writeJson(outputFile, index);
@@ -13,8 +13,9 @@ export async function useStoriesJson(router, options) {
13
13
  configDir: options.configDir,
14
14
  workingDir: process.cwd()
15
15
  });
16
+ var features = await options.presets.apply('features');
16
17
  router.use('/stories.json', async function (_req, res) {
17
- var generator = new StoryIndexGenerator(normalized, options.configDir);
18
+ var generator = new StoryIndexGenerator(normalized, options.configDir, !(features !== null && features !== void 0 && features.breakingChangesV7) && !(features !== null && features !== void 0 && features.storyStoreV7));
18
19
  await generator.initialize();
19
20
 
20
21
  try {
@@ -76,7 +76,7 @@ export async function buildStaticStandalone(options) {
76
76
  configDir: options.configDir,
77
77
  workingDir: process.cwd()
78
78
  });
79
- await extractStoriesJson(path.join(options.outputDir, 'stories.json'), stories, options.configDir);
79
+ await extractStoriesJson(path.join(options.outputDir, 'stories.json'), stories, options.configDir, !(features !== null && features !== void 0 && features.breakingChangesV7) && !(features !== null && features !== void 0 && features.storyStoreV7));
80
80
  }
81
81
 
82
82
  var fullOptions = _objectSpread(_objectSpread({}, options), {}, {
@@ -10,7 +10,7 @@ import { logger } from '@storybook/node-logger';
10
10
  import { parseList, getEnvConfig, checkDeprecatedFlags } from './utils';
11
11
  export function getProdCli(packageJson) {
12
12
  process.env.NODE_ENV = process.env.NODE_ENV || 'production';
13
- program.version(packageJson.version).option('-s, --static-dir <dir-names>', 'Directory where to load static files from', parseList).option('-o, --output-dir <dir-name>', 'Directory where to store built files').option('-c, --config-dir <dir-name>', 'Directory where to load Storybook configurations from').option('-w, --watch', 'Enable watch mode').option('--quiet', 'Suppress verbose build output').option('--loglevel <level>', 'Control level of logging during build').option('--no-dll', 'Do not use dll reference (no-op)').option('--docs-dll', 'Use Docs dll reference (legacy)').option('--ui-dll', 'Use UI dll reference (legacy)').option('--debug-webpack', 'Display final webpack configurations for debugging purposes').option('--webpack-stats-json [directory]', 'Write Webpack Stats JSON to disk').option('--preview-url <string>', 'Disables the default storybook preview and lets your use your own').option('--force-build-preview', 'Build the preview iframe even if you are using --preview-url').option('--docs', 'Build a documentation-only site using addon-docs').option('--modern', 'Use modern browser modules').parse(process.argv);
13
+ program.version(packageJson.version).option('-s, --static-dir <dir-names>', 'Directory where to load static files from', parseList).option('-o, --output-dir <dir-name>', 'Directory where to store built files').option('-c, --config-dir <dir-name>', 'Directory where to load Storybook configurations from').option('--quiet', 'Suppress verbose build output').option('--loglevel <level>', 'Control level of logging during build').option('--no-dll', 'Do not use dll reference (no-op)').option('--docs-dll', 'Use Docs dll reference (legacy)').option('--ui-dll', 'Use UI dll reference (legacy)').option('--debug-webpack', 'Display final webpack configurations for debugging purposes').option('--webpack-stats-json [directory]', 'Write Webpack Stats JSON to disk').option('--preview-url <string>', 'Disables the default storybook preview and lets your use your own').option('--force-build-preview', 'Build the preview iframe even if you are using --preview-url').option('--docs', 'Build a documentation-only site using addon-docs').option('--modern', 'Use modern browser modules').parse(process.argv);
14
14
  logger.setLevel(program.loglevel);
15
15
  logger.info(chalk.bold(`${packageJson.name} v${packageJson.version}\n`)); // The key is the field created in `program` variable for
16
16
  // each command line argument. Value is the env variable.
@@ -1,6 +1,25 @@
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; }
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; }
4
+
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
+
7
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
+
9
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
+
11
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
12
+
13
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
14
+
15
+ function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
16
+
17
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
18
+
1
19
  import "core-js/modules/es.promise.js";
2
20
  import "core-js/modules/es.array.flat-map.js";
3
21
  import "core-js/modules/es.array.unscopables.flat-map.js";
22
+ import "core-js/modules/es.symbol.description.js";
4
23
  import path from 'path';
5
24
  import fs from 'fs-extra';
6
25
  import glob from 'globby';
@@ -20,9 +39,10 @@ function sortExtractedStories(stories, storySortParameter, fileNameOrder) {
20
39
  export class StoryIndexGenerator {
21
40
  // An internal cache mapping specifiers to a set of path=><set of stories>
22
41
  // Later, we'll combine each of these subsets together to form the full index
23
- constructor(specifiers, configDir) {
42
+ constructor(specifiers, configDir, storiesV2Compatibility) {
24
43
  this.specifiers = specifiers;
25
44
  this.configDir = configDir;
45
+ this.storiesV2Compatibility = storiesV2Compatibility;
26
46
  this.storyIndexEntries = void 0;
27
47
  this.storyIndexEntries = new Map();
28
48
  }
@@ -87,7 +107,6 @@ export class StoryIndexGenerator {
87
107
  entry[absolutePath] = fileStories;
88
108
  } catch (err) {
89
109
  logger.warn(`🚨 Extraction error on ${relativePath}: ${err}`);
90
- logger.warn(`🚨 ${err.stack}`);
91
110
  throw err;
92
111
  }
93
112
  }
@@ -106,9 +125,35 @@ export class StoryIndexGenerator {
106
125
  });
107
126
  var storySortParameter = await this.getStorySortParameter();
108
127
  var sorted = sortExtractedStories(stories, storySortParameter, this.storyFileNames());
128
+ var compat = sorted;
129
+
130
+ if (this.storiesV2Compatibility) {
131
+ var titleToStoryCount = Object.values(sorted).reduce(function (acc, story) {
132
+ acc[story.title] = (acc[story.title] || 0) + 1;
133
+ return acc;
134
+ }, {});
135
+ compat = Object.entries(sorted).reduce(function (acc, entry) {
136
+ var _entry = _slicedToArray(entry, 2),
137
+ id = _entry[0],
138
+ story = _entry[1];
139
+
140
+ acc[id] = _objectSpread(_objectSpread({}, story), {}, {
141
+ id: id,
142
+ kind: story.title,
143
+ story: story.name,
144
+ parameters: {
145
+ __id: story.id,
146
+ docsOnly: titleToStoryCount[story.title] === 1 && story.name === 'Page',
147
+ fileName: story.importPath
148
+ }
149
+ });
150
+ return acc;
151
+ }, {});
152
+ }
153
+
109
154
  return {
110
155
  v: 3,
111
- stories: sorted
156
+ stories: compat
112
157
  };
113
158
  }
114
159
 
@@ -2,8 +2,8 @@ import "core-js/modules/es.promise.js";
2
2
  import fs from 'fs-extra';
3
3
  import { normalizeStories } from '@storybook/core-common';
4
4
  import { StoryIndexGenerator } from './StoryIndexGenerator';
5
- export async function extractStoriesJson(outputFile, normalizedStories, configDir) {
6
- var generator = new StoryIndexGenerator(normalizedStories, configDir);
5
+ export async function extractStoriesJson(outputFile, normalizedStories, configDir, v2compatibility) {
6
+ var generator = new StoryIndexGenerator(normalizedStories, configDir, v2compatibility);
7
7
  await generator.initialize();
8
8
  var index = await generator.getIndex();
9
9
  await fs.writeJson(outputFile, index);
@@ -13,8 +13,9 @@ export async function useStoriesJson(router, options) {
13
13
  configDir: options.configDir,
14
14
  workingDir: process.cwd()
15
15
  });
16
+ var features = await options.presets.apply('features');
16
17
  router.use('/stories.json', async function (_req, res) {
17
- var generator = new StoryIndexGenerator(normalized, options.configDir);
18
+ var generator = new StoryIndexGenerator(normalized, options.configDir, !(features !== null && features !== void 0 && features.breakingChangesV7) && !(features !== null && features !== void 0 && features.storyStoreV7));
18
19
  await generator.initialize();
19
20
 
20
21
  try {
@@ -3,7 +3,6 @@ export interface ProdCliOptions {
3
3
  staticDir?: string[];
4
4
  outputDir?: string;
5
5
  configDir?: string;
6
- watch?: boolean;
7
6
  quiet?: boolean;
8
7
  loglevel?: string;
9
8
  dll?: boolean;
@@ -1,16 +1,17 @@
1
- import { Path } from '@storybook/store';
1
+ import { Path, StoryIndexEntry } from '@storybook/store';
2
2
  import { NormalizedStoriesSpecifier } from '@storybook/core-common';
3
3
  export declare class StoryIndexGenerator {
4
4
  readonly specifiers: NormalizedStoriesSpecifier[];
5
5
  readonly configDir: Path;
6
+ readonly storiesV2Compatibility: boolean;
6
7
  private storyIndexEntries;
7
- constructor(specifiers: NormalizedStoriesSpecifier[], configDir: Path);
8
+ constructor(specifiers: NormalizedStoriesSpecifier[], configDir: Path, storiesV2Compatibility: boolean);
8
9
  initialize(): Promise<void>;
9
10
  ensureExtracted(): Promise<void>;
10
11
  extractStories(specifier: NormalizedStoriesSpecifier, absolutePath: Path): Promise<void>;
11
12
  getIndex(): Promise<{
12
13
  v: number;
13
- stories: Record<string, import("@storybook/store").StoryIndexEntry>;
14
+ stories: Record<string, StoryIndexEntry>;
14
15
  }>;
15
16
  getStorySortParameter(): Promise<any>;
16
17
  storyFileNames(): string[];
@@ -1,3 +1,3 @@
1
1
  import { Options, NormalizedStoriesSpecifier } from '@storybook/core-common';
2
- export declare function extractStoriesJson(outputFile: string, normalizedStories: NormalizedStoriesSpecifier[], configDir: string): Promise<void>;
2
+ export declare function extractStoriesJson(outputFile: string, normalizedStories: NormalizedStoriesSpecifier[], configDir: string, v2compatibility: boolean): Promise<void>;
3
3
  export declare function useStoriesJson(router: any, options: Options): Promise<void>;
@@ -3,7 +3,6 @@ export interface ProdCliOptions {
3
3
  staticDir?: string[];
4
4
  outputDir?: string;
5
5
  configDir?: string;
6
- watch?: boolean;
7
6
  quiet?: boolean;
8
7
  loglevel?: string;
9
8
  dll?: boolean;
@@ -1,16 +1,17 @@
1
- import { Path } from '@storybook/store';
1
+ import { Path, StoryIndexEntry } from '@storybook/store';
2
2
  import { NormalizedStoriesSpecifier } from '@storybook/core-common';
3
3
  export declare class StoryIndexGenerator {
4
4
  readonly specifiers: NormalizedStoriesSpecifier[];
5
5
  readonly configDir: Path;
6
+ readonly storiesV2Compatibility: boolean;
6
7
  private storyIndexEntries;
7
- constructor(specifiers: NormalizedStoriesSpecifier[], configDir: Path);
8
+ constructor(specifiers: NormalizedStoriesSpecifier[], configDir: Path, storiesV2Compatibility: boolean);
8
9
  initialize(): Promise<void>;
9
10
  ensureExtracted(): Promise<void>;
10
11
  extractStories(specifier: NormalizedStoriesSpecifier, absolutePath: Path): Promise<void>;
11
12
  getIndex(): Promise<{
12
13
  v: number;
13
- stories: Record<string, import("@storybook/store").StoryIndexEntry>;
14
+ stories: Record<string, StoryIndexEntry>;
14
15
  }>;
15
16
  getStorySortParameter(): Promise<any>;
16
17
  storyFileNames(): string[];
@@ -1,3 +1,3 @@
1
1
  import { Options, NormalizedStoriesSpecifier } from '@storybook/core-common';
2
- export declare function extractStoriesJson(outputFile: string, normalizedStories: NormalizedStoriesSpecifier[], configDir: string): Promise<void>;
2
+ export declare function extractStoriesJson(outputFile: string, normalizedStories: NormalizedStoriesSpecifier[], configDir: string, v2compatibility: boolean): Promise<void>;
3
3
  export declare function useStoriesJson(router: any, options: Options): Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/core-server",
3
- "version": "6.4.0-beta.1",
3
+ "version": "6.4.0-beta.5",
4
4
  "description": "Storybook framework-agnostic API",
5
5
  "keywords": [
6
6
  "storybook"
@@ -41,20 +41,21 @@
41
41
  },
42
42
  "dependencies": {
43
43
  "@discoveryjs/json-ext": "^0.5.3",
44
- "@storybook/builder-webpack4": "6.4.0-beta.1",
45
- "@storybook/core-client": "6.4.0-beta.1",
46
- "@storybook/core-common": "6.4.0-beta.1",
47
- "@storybook/csf-tools": "6.4.0-beta.1",
48
- "@storybook/manager-webpack4": "6.4.0-beta.1",
49
- "@storybook/node-logger": "6.4.0-beta.1",
44
+ "@storybook/builder-webpack4": "6.4.0-beta.5",
45
+ "@storybook/core-client": "6.4.0-beta.5",
46
+ "@storybook/core-common": "6.4.0-beta.5",
47
+ "@storybook/csf": "0.0.2--canary.6aca495.0",
48
+ "@storybook/csf-tools": "6.4.0-beta.5",
49
+ "@storybook/manager-webpack4": "6.4.0-beta.5",
50
+ "@storybook/node-logger": "6.4.0-beta.5",
50
51
  "@storybook/semver": "^7.3.2",
51
- "@storybook/store": "6.4.0-beta.1",
52
+ "@storybook/store": "6.4.0-beta.5",
52
53
  "@types/node": "^14.0.10",
53
54
  "@types/node-fetch": "^2.5.7",
54
55
  "@types/pretty-hrtime": "^1.0.0",
55
56
  "@types/webpack": "^4.41.26",
56
57
  "better-opn": "^2.1.1",
57
- "boxen": "^4.2.0",
58
+ "boxen": "^5.1.2",
58
59
  "chalk": "^4.1.0",
59
60
  "cli-table3": "0.6.0",
60
61
  "commander": "^6.2.1",
@@ -77,15 +78,15 @@
77
78
  "webpack": "4"
78
79
  },
79
80
  "devDependencies": {
80
- "@storybook/builder-webpack5": "6.4.0-beta.1",
81
+ "@storybook/builder-webpack5": "6.4.0-beta.5",
81
82
  "@types/compression": "^1.7.0",
82
83
  "@types/ip": "^1.1.0",
83
84
  "@types/serve-favicon": "^2.5.2",
84
85
  "jest-specific-snapshot": "^4.0.0"
85
86
  },
86
87
  "peerDependencies": {
87
- "@storybook/builder-webpack5": "6.4.0-beta.1",
88
- "@storybook/manager-webpack5": "6.4.0-beta.1",
88
+ "@storybook/builder-webpack5": "6.4.0-beta.5",
89
+ "@storybook/manager-webpack5": "6.4.0-beta.5",
89
90
  "react": "^16.8.0 || ^17.0.0",
90
91
  "react-dom": "^16.8.0 || ^17.0.0"
91
92
  },
@@ -103,6 +104,6 @@
103
104
  "publishConfig": {
104
105
  "access": "public"
105
106
  },
106
- "gitHead": "000a73948b4b91aa6bf84828b42ccdb7064f72bd",
107
+ "gitHead": "c1e5c8344c29e7e06236f088faeb380257fd3dea",
107
108
  "sbmodern": "dist/modern/index.js"
108
109
  }