@storybook/core-server 6.4.0-beta.3 → 6.4.0-beta.33
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/build-dev.js +1 -0
- package/dist/cjs/build-static.js +28 -4
- package/dist/cjs/cli/prod.js +1 -1
- package/dist/cjs/cli/utils.js +21 -3
- package/dist/cjs/dev-server.js +4 -1
- package/dist/cjs/presets/common-preset.js +2 -1
- package/dist/cjs/utils/StoryIndexGenerator.js +117 -41
- package/dist/cjs/utils/__mockdata__/E.stories.js +13 -0
- package/dist/cjs/utils/__mockdata__/deeply/nested/single/File.stories.js +12 -0
- package/dist/cjs/utils/__mockdata__/preview.js +8 -0
- package/dist/cjs/utils/__mockdata__/src/A.stories.js +13 -0
- package/dist/cjs/utils/__mockdata__/src/B.stories.js +13 -0
- package/dist/cjs/utils/__mockdata__/src/C.js +8 -0
- package/dist/cjs/utils/__mockdata__/src/D.stories.js +13 -0
- package/dist/cjs/utils/__mockdata__/src/NoMeta.stories.js +12 -0
- package/dist/cjs/utils/__mockdata__/src/nested/Button.js +8 -0
- package/dist/cjs/utils/__mockdata__/src/nested/Button.stories.js +13 -0
- package/dist/cjs/utils/__mockdata__/src/nested/Page.mdx +1 -0
- package/dist/cjs/utils/__mockdata__/src/nested/Page.stories.mdx +5 -0
- package/dist/cjs/utils/__mockdata__/src/second-nested/F.stories.js +13 -0
- package/dist/cjs/utils/copy-all-static-files.js +33 -0
- package/dist/cjs/utils/get-server-channel.js +56 -0
- package/dist/cjs/utils/server-address.js +10 -2
- package/dist/cjs/utils/server-statics.js +37 -4
- package/dist/cjs/utils/stories-json.js +46 -9
- package/dist/cjs/utils/watch-story-specifiers.js +112 -0
- package/dist/esm/build-dev.js +2 -1
- package/dist/esm/build-static.js +28 -5
- package/dist/esm/cli/prod.js +1 -1
- package/dist/esm/cli/utils.js +22 -3
- package/dist/esm/dev-server.js +3 -1
- package/dist/esm/presets/common-preset.js +2 -1
- package/dist/esm/utils/StoryIndexGenerator.js +112 -39
- package/dist/esm/utils/__mockdata__/E.stories.js +5 -0
- package/dist/esm/utils/__mockdata__/deeply/nested/single/File.stories.js +4 -0
- package/dist/esm/utils/__mockdata__/preview.js +1 -0
- package/dist/esm/utils/__mockdata__/src/A.stories.js +5 -0
- package/dist/esm/utils/__mockdata__/src/B.stories.js +5 -0
- package/dist/esm/utils/__mockdata__/src/C.js +1 -0
- package/dist/esm/utils/__mockdata__/src/D.stories.js +5 -0
- package/dist/esm/utils/__mockdata__/src/NoMeta.stories.js +4 -0
- package/dist/esm/utils/__mockdata__/src/nested/Button.js +1 -0
- package/dist/esm/utils/__mockdata__/src/nested/Button.stories.js +5 -0
- package/dist/esm/utils/__mockdata__/src/nested/Page.mdx +1 -0
- package/dist/esm/utils/__mockdata__/src/nested/Page.stories.mdx +5 -0
- package/dist/esm/utils/__mockdata__/src/second-nested/F.stories.js +5 -0
- package/dist/esm/utils/copy-all-static-files.js +27 -0
- package/dist/esm/utils/get-server-channel.js +39 -0
- package/dist/esm/utils/server-address.js +5 -0
- package/dist/esm/utils/server-statics.js +35 -4
- package/dist/esm/utils/stories-json.js +40 -9
- package/dist/esm/utils/watch-story-specifiers.js +97 -0
- package/dist/modern/build-dev.js +2 -1
- package/dist/modern/build-static.js +28 -5
- package/dist/modern/cli/prod.js +1 -1
- package/dist/modern/cli/utils.js +22 -3
- package/dist/modern/dev-server.js +3 -1
- package/dist/modern/presets/common-preset.js +2 -1
- package/dist/modern/utils/StoryIndexGenerator.js +112 -39
- package/dist/modern/utils/__mockdata__/E.stories.js +5 -0
- package/dist/modern/utils/__mockdata__/deeply/nested/single/File.stories.js +4 -0
- package/dist/modern/utils/__mockdata__/preview.js +1 -0
- package/dist/modern/utils/__mockdata__/src/A.stories.js +5 -0
- package/dist/modern/utils/__mockdata__/src/B.stories.js +5 -0
- package/dist/modern/utils/__mockdata__/src/C.js +1 -0
- package/dist/modern/utils/__mockdata__/src/D.stories.js +5 -0
- package/dist/modern/utils/__mockdata__/src/NoMeta.stories.js +4 -0
- package/dist/modern/utils/__mockdata__/src/nested/Button.js +1 -0
- package/dist/modern/utils/__mockdata__/src/nested/Button.stories.js +5 -0
- package/dist/modern/utils/__mockdata__/src/nested/Page.mdx +1 -0
- package/dist/modern/utils/__mockdata__/src/nested/Page.stories.mdx +5 -0
- package/dist/modern/utils/__mockdata__/src/second-nested/F.stories.js +5 -0
- package/dist/modern/utils/copy-all-static-files.js +27 -0
- package/dist/modern/utils/get-server-channel.js +39 -0
- package/dist/modern/utils/server-address.js +5 -0
- package/dist/modern/utils/server-statics.js +35 -4
- package/dist/modern/utils/stories-json.js +40 -9
- package/dist/modern/utils/watch-story-specifiers.js +97 -0
- package/dist/ts3.4/cli/prod.d.ts +2 -16
- package/dist/ts3.4/cli/utils.d.ts +3 -5
- package/dist/ts3.4/presets/common-preset.d.ts +1 -0
- package/dist/ts3.4/utils/StoryIndexGenerator.d.ts +17 -9
- package/dist/ts3.4/utils/__mockdata__/E.stories.d.ts +5 -0
- package/dist/ts3.4/utils/__mockdata__/deeply/nested/single/File.stories.d.ts +5 -0
- package/dist/ts3.4/utils/__mockdata__/src/B.stories.d.ts +5 -0
- package/dist/ts3.4/utils/__mockdata__/src/NoMeta.stories.d.ts +1 -0
- package/dist/ts3.4/utils/__mockdata__/src/nested/Button.d.ts +1 -0
- package/dist/ts3.4/utils/__mockdata__/src/nested/Button.stories.d.ts +5 -0
- package/dist/ts3.4/utils/__mockdata__/src/second-nested/F.stories.d.ts +5 -0
- package/dist/ts3.4/utils/copy-all-static-files.d.ts +1 -0
- package/dist/ts3.4/utils/get-server-channel.d.ts +9 -0
- package/dist/ts3.4/utils/server-address.d.ts +3 -0
- package/dist/ts3.4/utils/server-statics.d.ts +2 -3
- package/dist/ts3.4/utils/stories-json.d.ts +9 -2
- package/dist/ts3.4/utils/watch-story-specifiers.d.ts +5 -0
- package/dist/ts3.9/cli/prod.d.ts +2 -16
- package/dist/ts3.9/cli/utils.d.ts +3 -5
- package/dist/ts3.9/presets/common-preset.d.ts +1 -0
- package/dist/ts3.9/utils/StoryIndexGenerator.d.ts +17 -9
- package/dist/ts3.9/utils/__mockdata__/E.stories.d.ts +5 -0
- package/dist/ts3.9/utils/__mockdata__/deeply/nested/single/File.stories.d.ts +5 -0
- package/dist/ts3.9/utils/__mockdata__/src/B.stories.d.ts +5 -0
- package/dist/ts3.9/utils/__mockdata__/src/NoMeta.stories.d.ts +1 -0
- package/dist/ts3.9/utils/__mockdata__/src/nested/Button.d.ts +1 -0
- package/dist/ts3.9/utils/__mockdata__/src/nested/Button.stories.d.ts +5 -0
- package/dist/ts3.9/utils/__mockdata__/src/second-nested/F.stories.d.ts +5 -0
- package/dist/ts3.9/utils/copy-all-static-files.d.ts +1 -0
- package/dist/ts3.9/utils/get-server-channel.d.ts +9 -0
- package/dist/ts3.9/utils/server-address.d.ts +3 -0
- package/dist/ts3.9/utils/server-statics.d.ts +2 -3
- package/dist/ts3.9/utils/stories-json.d.ts +9 -2
- package/dist/ts3.9/utils/watch-story-specifiers.d.ts +5 -0
- package/package.json +21 -13
- package/typings.d.ts +1 -0
package/dist/cjs/build-dev.js
CHANGED
|
@@ -96,6 +96,7 @@ async function buildDevStandalone(options) {
|
|
|
96
96
|
options.configType = 'DEVELOPMENT';
|
|
97
97
|
options.configDir = _path.default.resolve(options.configDir);
|
|
98
98
|
options.outputDir = options.smokeTest ? (0, _coreCommon.resolvePathInStorybookCache)('public') : _path.default.resolve(options.outputDir || (0, _coreCommon.resolvePathInStorybookCache)('public'));
|
|
99
|
+
options.serverChannelUrl = (0, _serverAddress.getServerChannelUrl)(port, options);
|
|
99
100
|
/* eslint-enable no-param-reassign */
|
|
100
101
|
|
|
101
102
|
var previewBuilder = await (0, _getPreviewBuilder.getPreviewBuilder)(options.configDir);
|
package/dist/cjs/build-static.js
CHANGED
|
@@ -18,6 +18,8 @@ var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
|
18
18
|
|
|
19
19
|
var _path = _interopRequireDefault(require("path"));
|
|
20
20
|
|
|
21
|
+
var _tsDedent = _interopRequireDefault(require("ts-dedent"));
|
|
22
|
+
|
|
21
23
|
var _nodeLogger = require("@storybook/node-logger");
|
|
22
24
|
|
|
23
25
|
var _coreCommon = require("@storybook/core-common");
|
|
@@ -90,21 +92,43 @@ async function buildStaticStandalone(options) {
|
|
|
90
92
|
|
|
91
93
|
await _fsExtra.default.emptyDir(options.outputDir);
|
|
92
94
|
await (0, _cpy.default)(defaultFavIcon, options.outputDir);
|
|
93
|
-
await (0, _copyAllStaticFiles.copyAllStaticFiles)(options.staticDir, options.outputDir);
|
|
94
95
|
var previewBuilder = await (0, _getPreviewBuilder.getPreviewBuilder)(options.configDir);
|
|
95
96
|
var managerBuilder = await (0, _getManagerBuilder.getManagerBuilder)(options.configDir);
|
|
96
97
|
var presets = (0, _coreCommon.loadAllPresets)(_objectSpread({
|
|
97
98
|
corePresets: [require.resolve('./presets/common-preset'), ...managerBuilder.corePresets, ...previewBuilder.corePresets, require.resolve('./presets/babel-cache-preset')],
|
|
98
99
|
overridePresets: previewBuilder.overridePresets
|
|
99
100
|
}, options));
|
|
101
|
+
var staticDirs = await presets.apply('staticDirs');
|
|
102
|
+
|
|
103
|
+
if (staticDirs && options.staticDir) {
|
|
104
|
+
throw new Error((0, _tsDedent.default)`
|
|
105
|
+
Conflict when trying to read staticDirs:
|
|
106
|
+
* Storybook's configuration option: 'staticDirs'
|
|
107
|
+
* Storybook's CLI flag: '--staticDir' or '-s'
|
|
108
|
+
|
|
109
|
+
Choose one of them, but not both.
|
|
110
|
+
`);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (staticDirs) {
|
|
114
|
+
await (0, _copyAllStaticFiles.copyAllStaticFilesRelativeToMain)(staticDirs, options.outputDir, options.configDir);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (options.staticDir) {
|
|
118
|
+
await (0, _copyAllStaticFiles.copyAllStaticFiles)(options.staticDir, options.outputDir);
|
|
119
|
+
}
|
|
120
|
+
|
|
100
121
|
var features = await presets.apply('features');
|
|
101
122
|
|
|
102
123
|
if (features !== null && features !== void 0 && features.buildStoriesJson || features !== null && features !== void 0 && features.storyStoreV7) {
|
|
103
|
-
var
|
|
124
|
+
var directories = {
|
|
104
125
|
configDir: options.configDir,
|
|
105
126
|
workingDir: process.cwd()
|
|
106
|
-
}
|
|
107
|
-
|
|
127
|
+
};
|
|
128
|
+
var stories = (0, _coreCommon.normalizeStories)(await presets.apply('stories'), directories);
|
|
129
|
+
await (0, _storiesJson.extractStoriesJson)(_path.default.join(options.outputDir, 'stories.json'), stories, _objectSpread(_objectSpread({}, directories), {}, {
|
|
130
|
+
storiesV2Compatibility: !(features !== null && features !== void 0 && features.breakingChangesV7) && !(features !== null && features !== void 0 && features.storyStoreV7)
|
|
131
|
+
}));
|
|
108
132
|
}
|
|
109
133
|
|
|
110
134
|
var fullOptions = _objectSpread(_objectSpread({}, options), {}, {
|
package/dist/cjs/cli/prod.js
CHANGED
|
@@ -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('
|
|
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
|
|
package/dist/cjs/cli/utils.js
CHANGED
|
@@ -32,14 +32,32 @@ function getEnvConfig(program, configEnv) {
|
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
var
|
|
35
|
+
var warnDeprecatedFlag = function (message) {
|
|
36
|
+
return (0, _utilDeprecate.default)(function () {}, (0, _tsDedent.default)(message));
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
var warnDLLsDeprecated = warnDeprecatedFlag(`
|
|
36
40
|
DLL-related CLI flags are deprecated, see:
|
|
37
41
|
|
|
38
42
|
https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#deprecated-dll-flags
|
|
39
43
|
`);
|
|
44
|
+
var warnStaticDirDeprecated = warnDeprecatedFlag(`
|
|
45
|
+
--static-dir CLI flag is deprecated, see:
|
|
46
|
+
|
|
47
|
+
https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#deprecated-static-dir-flag
|
|
48
|
+
`);
|
|
40
49
|
|
|
41
|
-
function checkDeprecatedFlags(
|
|
42
|
-
|
|
50
|
+
function checkDeprecatedFlags({
|
|
51
|
+
dll: dll,
|
|
52
|
+
uiDll: uiDll,
|
|
53
|
+
docsDll: docsDll,
|
|
54
|
+
staticDir: staticDir
|
|
55
|
+
}) {
|
|
56
|
+
if (!dll || uiDll || docsDll) {
|
|
43
57
|
warnDLLsDeprecated();
|
|
44
58
|
}
|
|
59
|
+
|
|
60
|
+
if (staticDir) {
|
|
61
|
+
warnStaticDirDeprecated();
|
|
62
|
+
}
|
|
45
63
|
}
|
package/dist/cjs/dev-server.js
CHANGED
|
@@ -26,6 +26,8 @@ var _serverStatics = require("./utils/server-statics");
|
|
|
26
26
|
|
|
27
27
|
var _storiesJson = require("./utils/stories-json");
|
|
28
28
|
|
|
29
|
+
var _getServerChannel = require("./utils/get-server-channel");
|
|
30
|
+
|
|
29
31
|
var _openInBrowser = require("./utils/open-in-browser");
|
|
30
32
|
|
|
31
33
|
var _getPreviewBuilder = require("./utils/get-preview-builder");
|
|
@@ -58,6 +60,7 @@ async function storybookDevServer(options) {
|
|
|
58
60
|
var startTime = process.hrtime();
|
|
59
61
|
var app = (0, _express.default)();
|
|
60
62
|
var server = await (0, _serverInit.getServer)(app, options);
|
|
63
|
+
var serverChannel = (0, _getServerChannel.getServerChannel)(server);
|
|
61
64
|
app.use((0, _compression.default)({
|
|
62
65
|
level: 1
|
|
63
66
|
}));
|
|
@@ -76,7 +79,7 @@ async function storybookDevServer(options) {
|
|
|
76
79
|
var features = await options.presets.apply('features');
|
|
77
80
|
|
|
78
81
|
if (features !== null && features !== void 0 && features.buildStoriesJson || features !== null && features !== void 0 && features.storyStoreV7) {
|
|
79
|
-
await (0, _storiesJson.useStoriesJson)(router, options);
|
|
82
|
+
await (0, _storiesJson.useStoriesJson)(router, serverChannel, options);
|
|
80
83
|
}
|
|
81
84
|
|
|
82
85
|
(0, _middleware.getMiddleware)(options.configDir)(router);
|
|
@@ -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
|
});
|
|
@@ -17,6 +19,8 @@ var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
|
17
19
|
|
|
18
20
|
var _globby = _interopRequireDefault(require("globby"));
|
|
19
21
|
|
|
22
|
+
var _slash = _interopRequireDefault(require("slash"));
|
|
23
|
+
|
|
20
24
|
var _store = require("@storybook/store");
|
|
21
25
|
|
|
22
26
|
var _nodeLogger = require("@storybook/node-logger");
|
|
@@ -25,6 +29,24 @@ var _csfTools = require("@storybook/csf-tools");
|
|
|
25
29
|
|
|
26
30
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
31
|
|
|
32
|
+
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; }
|
|
33
|
+
|
|
34
|
+
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; }
|
|
35
|
+
|
|
36
|
+
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; }
|
|
37
|
+
|
|
38
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
39
|
+
|
|
40
|
+
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."); }
|
|
41
|
+
|
|
42
|
+
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); }
|
|
43
|
+
|
|
44
|
+
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; }
|
|
45
|
+
|
|
46
|
+
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; }
|
|
47
|
+
|
|
48
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
49
|
+
|
|
28
50
|
function sortExtractedStories(stories, storySortParameter, fileNameOrder) {
|
|
29
51
|
var sortableStories = Object.values(stories);
|
|
30
52
|
(0, _store.sortStoriesV7)(sortableStories, storySortParameter, fileNameOrder);
|
|
@@ -37,10 +59,14 @@ function sortExtractedStories(stories, storySortParameter, fileNameOrder) {
|
|
|
37
59
|
class StoryIndexGenerator {
|
|
38
60
|
// An internal cache mapping specifiers to a set of path=><set of stories>
|
|
39
61
|
// Later, we'll combine each of these subsets together to form the full index
|
|
40
|
-
|
|
62
|
+
// Cache the last value of `getStoryIndex`. We invalidate (by unsetting) when:
|
|
63
|
+
// - any file changes, including deletions
|
|
64
|
+
// - the preview changes [not yet implemented]
|
|
65
|
+
constructor(specifiers, options) {
|
|
41
66
|
this.specifiers = specifiers;
|
|
42
|
-
this.
|
|
67
|
+
this.options = options;
|
|
43
68
|
this.storyIndexEntries = void 0;
|
|
69
|
+
this.lastIndex = void 0;
|
|
44
70
|
this.storyIndexEntries = new Map();
|
|
45
71
|
}
|
|
46
72
|
|
|
@@ -50,9 +76,20 @@ class StoryIndexGenerator {
|
|
|
50
76
|
// Find all matching paths for each specifier
|
|
51
77
|
await Promise.all(this.specifiers.map(async function (specifier) {
|
|
52
78
|
var pathToSubIndex = {};
|
|
53
|
-
var
|
|
54
|
-
files
|
|
55
|
-
|
|
79
|
+
var fullGlob = (0, _slash.default)(_path.default.join(_this.options.workingDir, specifier.directory, specifier.files));
|
|
80
|
+
var files = await (0, _globby.default)(fullGlob);
|
|
81
|
+
files.forEach(function (absolutePath) {
|
|
82
|
+
var ext = _path.default.extname(absolutePath);
|
|
83
|
+
|
|
84
|
+
var relativePath = _path.default.relative(_this.options.workingDir, absolutePath);
|
|
85
|
+
|
|
86
|
+
if (!['.js', '.jsx', '.ts', '.tsx', '.mdx'].includes(ext)) {
|
|
87
|
+
_nodeLogger.logger.info(`Skipping ${ext} file ${relativePath}`);
|
|
88
|
+
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
pathToSubIndex[absolutePath] = false;
|
|
56
93
|
});
|
|
57
94
|
|
|
58
95
|
_this.storyIndexEntries.set(specifier, pathToSubIndex);
|
|
@@ -64,30 +101,23 @@ class StoryIndexGenerator {
|
|
|
64
101
|
async ensureExtracted() {
|
|
65
102
|
var _this2 = this;
|
|
66
103
|
|
|
67
|
-
await Promise.all(this.specifiers.map(async function (specifier) {
|
|
104
|
+
return (await Promise.all(this.specifiers.map(async function (specifier) {
|
|
68
105
|
var entry = _this2.storyIndexEntries.get(specifier);
|
|
69
106
|
|
|
70
|
-
|
|
71
|
-
|
|
107
|
+
return Promise.all(Object.keys(entry).map(async function (absolutePath) {
|
|
108
|
+
return entry[absolutePath] || _this2.extractStories(specifier, absolutePath);
|
|
72
109
|
}));
|
|
73
|
-
}));
|
|
110
|
+
}))).flat();
|
|
74
111
|
}
|
|
75
112
|
|
|
76
113
|
async extractStories(specifier, absolutePath) {
|
|
77
|
-
var
|
|
78
|
-
|
|
79
|
-
var relativePath = _path.default.relative(this.configDir, absolutePath);
|
|
114
|
+
var relativePath = _path.default.relative(this.options.workingDir, absolutePath);
|
|
80
115
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
116
|
+
var fileStories = {};
|
|
117
|
+
var entry = this.storyIndexEntries.get(specifier);
|
|
86
118
|
|
|
87
119
|
try {
|
|
88
|
-
var
|
|
89
|
-
var fileStories = {};
|
|
90
|
-
var importPath = relativePath[0] === '.' ? relativePath : `./${relativePath}`;
|
|
120
|
+
var importPath = (0, _slash.default)(relativePath[0] === '.' ? relativePath : `./${relativePath}`);
|
|
91
121
|
var defaultTitle = (0, _store.autoTitleFromSpecifier)(importPath, specifier);
|
|
92
122
|
var csf = (await (0, _csfTools.readCsfOrMdx)(absolutePath, {
|
|
93
123
|
defaultTitle: defaultTitle
|
|
@@ -103,41 +133,87 @@ class StoryIndexGenerator {
|
|
|
103
133
|
importPath: importPath
|
|
104
134
|
};
|
|
105
135
|
});
|
|
106
|
-
entry[absolutePath] = fileStories;
|
|
107
136
|
} catch (err) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
137
|
+
if (err.name === 'NoMetaError') {
|
|
138
|
+
_nodeLogger.logger.info(`💡 Skipping ${relativePath}: ${err}`);
|
|
139
|
+
} else {
|
|
140
|
+
_nodeLogger.logger.warn(`🚨 Extraction error on ${relativePath}: ${err}`);
|
|
111
141
|
|
|
112
|
-
|
|
142
|
+
throw err;
|
|
143
|
+
}
|
|
113
144
|
}
|
|
114
|
-
}
|
|
115
145
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
// Extract any entries that are currently missing
|
|
120
|
-
await this.ensureExtracted();
|
|
121
|
-
var stories = {}; // Check each entry and compose into stories, extracting if needed
|
|
146
|
+
entry[absolutePath] = fileStories;
|
|
147
|
+
return fileStories;
|
|
148
|
+
}
|
|
122
149
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
150
|
+
async sortStories(storiesList) {
|
|
151
|
+
var stories = {};
|
|
152
|
+
storiesList.forEach(function (subStories) {
|
|
153
|
+
Object.assign(stories, subStories);
|
|
127
154
|
});
|
|
128
155
|
var storySortParameter = await this.getStorySortParameter();
|
|
129
|
-
|
|
130
|
-
|
|
156
|
+
return sortExtractedStories(stories, storySortParameter, this.storyFileNames());
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
async getIndex() {
|
|
160
|
+
if (this.lastIndex) return this.lastIndex; // Extract any entries that are currently missing
|
|
161
|
+
// Pull out each file's stories into a list of stories, to be composed and sorted
|
|
162
|
+
|
|
163
|
+
var storiesList = await this.ensureExtracted();
|
|
164
|
+
var sorted = await this.sortStories(storiesList);
|
|
165
|
+
var compat = sorted;
|
|
166
|
+
|
|
167
|
+
if (this.options.storiesV2Compatibility) {
|
|
168
|
+
var titleToStoryCount = Object.values(sorted).reduce(function (acc, story) {
|
|
169
|
+
acc[story.title] = (acc[story.title] || 0) + 1;
|
|
170
|
+
return acc;
|
|
171
|
+
}, {});
|
|
172
|
+
compat = Object.entries(sorted).reduce(function (acc, entry) {
|
|
173
|
+
var _entry = _slicedToArray(entry, 2),
|
|
174
|
+
id = _entry[0],
|
|
175
|
+
story = _entry[1];
|
|
176
|
+
|
|
177
|
+
acc[id] = _objectSpread(_objectSpread({}, story), {}, {
|
|
178
|
+
id: id,
|
|
179
|
+
kind: story.title,
|
|
180
|
+
story: story.name,
|
|
181
|
+
parameters: {
|
|
182
|
+
__id: story.id,
|
|
183
|
+
docsOnly: titleToStoryCount[story.title] === 1 && story.name === 'Page',
|
|
184
|
+
fileName: story.importPath
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
return acc;
|
|
188
|
+
}, {});
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
this.lastIndex = {
|
|
131
192
|
v: 3,
|
|
132
|
-
stories:
|
|
193
|
+
stories: compat
|
|
133
194
|
};
|
|
195
|
+
return this.lastIndex;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
invalidate(specifier, importPath, removed) {
|
|
199
|
+
var absolutePath = _path.default.resolve(this.options.workingDir, importPath);
|
|
200
|
+
|
|
201
|
+
var pathToEntries = this.storyIndexEntries.get(specifier);
|
|
202
|
+
|
|
203
|
+
if (removed) {
|
|
204
|
+
delete pathToEntries[absolutePath];
|
|
205
|
+
} else {
|
|
206
|
+
pathToEntries[absolutePath] = false;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
this.lastIndex = null;
|
|
134
210
|
}
|
|
135
211
|
|
|
136
212
|
async getStorySortParameter() {
|
|
137
|
-
var
|
|
213
|
+
var _this3 = this;
|
|
138
214
|
|
|
139
215
|
var previewFile = ['js', 'jsx', 'ts', 'tsx'].map(function (ext) {
|
|
140
|
-
return _path.default.join(
|
|
216
|
+
return _path.default.join(_this3.options.configDir, `preview.${ext}`);
|
|
141
217
|
}).find(function (fname) {
|
|
142
218
|
return _fsExtra.default.existsSync(fname);
|
|
143
219
|
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.StoryOne = exports.default = void 0;
|
|
7
|
+
var component = {};
|
|
8
|
+
var _default = {
|
|
9
|
+
component: component
|
|
10
|
+
};
|
|
11
|
+
exports.default = _default;
|
|
12
|
+
var StoryOne = {};
|
|
13
|
+
exports.StoryOne = StoryOne;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.StoryOne = exports.default = void 0;
|
|
7
|
+
var component = {};
|
|
8
|
+
var _default = {
|
|
9
|
+
component: component
|
|
10
|
+
};
|
|
11
|
+
exports.default = _default;
|
|
12
|
+
var StoryOne = {};
|
|
13
|
+
exports.StoryOne = StoryOne;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.StoryOne = exports.default = void 0;
|
|
7
|
+
var component = {};
|
|
8
|
+
var _default = {
|
|
9
|
+
component: component
|
|
10
|
+
};
|
|
11
|
+
exports.default = _default;
|
|
12
|
+
var StoryOne = {};
|
|
13
|
+
exports.StoryOne = StoryOne;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.StoryOne = exports.default = void 0;
|
|
7
|
+
var component = {};
|
|
8
|
+
var _default = {
|
|
9
|
+
component: component
|
|
10
|
+
};
|
|
11
|
+
exports.default = _default;
|
|
12
|
+
var StoryOne = {};
|
|
13
|
+
exports.StoryOne = StoryOne;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.StoryOne = void 0;
|
|
7
|
+
|
|
8
|
+
/* eslint-disable storybook/default-exports */
|
|
9
|
+
// no default export
|
|
10
|
+
// e.g. https://github.com/storybookjs/storybook/issues/16421
|
|
11
|
+
var StoryOne = {};
|
|
12
|
+
exports.StoryOne = StoryOne;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.StoryOne = exports.default = void 0;
|
|
7
|
+
var component = {};
|
|
8
|
+
var _default = {
|
|
9
|
+
component: component
|
|
10
|
+
};
|
|
11
|
+
exports.default = _default;
|
|
12
|
+
var StoryOne = {};
|
|
13
|
+
exports.StoryOne = StoryOne;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<h1>Some MDX</h1>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.StoryOne = exports.default = void 0;
|
|
7
|
+
var component = {};
|
|
8
|
+
var _default = {
|
|
9
|
+
component: component
|
|
10
|
+
};
|
|
11
|
+
exports.default = _default;
|
|
12
|
+
var StoryOne = {};
|
|
13
|
+
exports.StoryOne = StoryOne;
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.copyAllStaticFiles = copyAllStaticFiles;
|
|
7
|
+
exports.copyAllStaticFilesRelativeToMain = copyAllStaticFilesRelativeToMain;
|
|
7
8
|
|
|
8
9
|
require("core-js/modules/es.promise.js");
|
|
9
10
|
|
|
@@ -15,6 +16,8 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
15
16
|
|
|
16
17
|
var _nodeLogger = require("@storybook/node-logger");
|
|
17
18
|
|
|
19
|
+
var _coreCommon = require("@storybook/core-common");
|
|
20
|
+
|
|
18
21
|
var _serverStatics = require("./server-statics");
|
|
19
22
|
|
|
20
23
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -50,4 +53,34 @@ async function copyAllStaticFiles(staticDirs, outputDir) {
|
|
|
50
53
|
}
|
|
51
54
|
}));
|
|
52
55
|
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async function copyAllStaticFilesRelativeToMain(staticDirs, outputDir, configDir) {
|
|
59
|
+
staticDirs.forEach(async function (dir) {
|
|
60
|
+
var staticDirAndTarget = typeof dir === 'string' ? dir : `${dir.from}:${dir.to}`;
|
|
61
|
+
|
|
62
|
+
var _await$parseStaticDir2 = await (0, _serverStatics.parseStaticDir)((0, _coreCommon.getDirectoryFromWorkingDir)({
|
|
63
|
+
configDir: configDir,
|
|
64
|
+
workingDir: process.cwd(),
|
|
65
|
+
directory: staticDirAndTarget
|
|
66
|
+
})),
|
|
67
|
+
from = _await$parseStaticDir2.staticPath,
|
|
68
|
+
to = _await$parseStaticDir2.targetEndpoint;
|
|
69
|
+
|
|
70
|
+
var targetPath = _path.default.join(outputDir, to);
|
|
71
|
+
|
|
72
|
+
var skipPaths = ['index.html', 'iframe.html'].map(function (f) {
|
|
73
|
+
return _path.default.join(targetPath, f);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
_nodeLogger.logger.info((0, _chalk.default)`=> Copying static files: {cyan ${from}} at {cyan ${targetPath}}`);
|
|
77
|
+
|
|
78
|
+
await _fsExtra.default.copy(from, targetPath, {
|
|
79
|
+
dereference: true,
|
|
80
|
+
preserveTimestamps: true,
|
|
81
|
+
filter: function (_, dest) {
|
|
82
|
+
return !skipPaths.includes(dest);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
});
|
|
53
86
|
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getServerChannel = getServerChannel;
|
|
7
|
+
exports.ServerChannel = void 0;
|
|
8
|
+
|
|
9
|
+
var _ws = _interopRequireWildcard(require("ws"));
|
|
10
|
+
|
|
11
|
+
var _telejson = require("telejson");
|
|
12
|
+
|
|
13
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
14
|
+
|
|
15
|
+
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; }
|
|
16
|
+
|
|
17
|
+
class ServerChannel {
|
|
18
|
+
constructor(server) {
|
|
19
|
+
var _this = this;
|
|
20
|
+
|
|
21
|
+
this.webSocketServer = void 0;
|
|
22
|
+
this.webSocketServer = new _ws.WebSocketServer({
|
|
23
|
+
noServer: true
|
|
24
|
+
});
|
|
25
|
+
server.on('upgrade', function (request, socket, head) {
|
|
26
|
+
if (request.url === '/storybook-server-channel') {
|
|
27
|
+
_this.webSocketServer.handleUpgrade(request, socket, head, function (ws) {
|
|
28
|
+
_this.webSocketServer.emit('connection', ws, request);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
emit(type, args = []) {
|
|
35
|
+
var event = {
|
|
36
|
+
type: type,
|
|
37
|
+
args: args
|
|
38
|
+
};
|
|
39
|
+
var data = (0, _telejson.stringify)(event, {
|
|
40
|
+
maxDepth: 15,
|
|
41
|
+
allowFunction: true
|
|
42
|
+
});
|
|
43
|
+
Array.from(this.webSocketServer.clients).filter(function (c) {
|
|
44
|
+
return c.readyState === _ws.default.OPEN;
|
|
45
|
+
}).forEach(function (client) {
|
|
46
|
+
return client.send(data);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
exports.ServerChannel = ServerChannel;
|
|
53
|
+
|
|
54
|
+
function getServerChannel(server) {
|
|
55
|
+
return new ServerChannel(server);
|
|
56
|
+
}
|