@storybook/core-server 6.5.7 → 7.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +0 -1
  2. package/dist/cjs/build-dev.js +55 -140
  3. package/dist/cjs/build-static.js +45 -75
  4. package/dist/cjs/dev-server.js +10 -7
  5. package/dist/cjs/presets/babel-cache-preset.js +2 -4
  6. package/dist/cjs/presets/common-preset.js +32 -16
  7. package/dist/cjs/standalone.js +9 -1
  8. package/dist/cjs/utils/StoryIndexGenerator.js +16 -4
  9. package/dist/cjs/utils/{get-manager-builder.js → get-builders.js} +31 -25
  10. package/dist/esm/build-dev.js +53 -130
  11. package/dist/esm/build-static.js +40 -64
  12. package/dist/esm/dev-server.js +10 -6
  13. package/dist/esm/presets/babel-cache-preset.js +1 -2
  14. package/dist/esm/presets/common-preset.js +24 -15
  15. package/dist/esm/standalone.js +8 -1
  16. package/dist/esm/utils/StoryIndexGenerator.js +17 -5
  17. package/dist/esm/utils/get-builders.js +36 -0
  18. package/dist/types/build-dev.d.ts +2 -0
  19. package/dist/{ts3.9 → types}/build-static.d.ts +0 -1
  20. package/dist/{ts3.9 → types}/dev-server.d.ts +0 -0
  21. package/dist/{ts3.9 → types}/index.d.ts +0 -0
  22. package/dist/types/presets/babel-cache-preset.d.ts +1 -0
  23. package/dist/{ts3.4 → types}/presets/common-preset.d.ts +29 -31
  24. package/dist/{ts3.9 → types}/standalone.d.ts +0 -0
  25. package/dist/{ts3.9 → types}/utils/StoryIndexGenerator.d.ts +4 -1
  26. package/dist/{ts3.9 → types}/utils/__mockdata__/E.stories.d.ts +0 -0
  27. package/dist/{ts3.9 → types}/utils/__mockdata__/deeply/nested/single/File.stories.d.ts +0 -0
  28. package/dist/{ts3.9 → types}/utils/__mockdata__/src/B.stories.d.ts +0 -0
  29. package/dist/{ts3.9 → types}/utils/__mockdata__/src/NoMeta.stories.d.ts +0 -0
  30. package/dist/{ts3.9 → types}/utils/__mockdata__/src/nested/Button.d.ts +0 -0
  31. package/dist/{ts3.9 → types}/utils/__mockdata__/src/nested/Button.stories.d.ts +0 -0
  32. package/dist/{ts3.9 → types}/utils/__mockdata__/src/second-nested/G.stories.d.ts +0 -0
  33. package/dist/{ts3.9 → types}/utils/copy-all-static-files.d.ts +0 -0
  34. package/dist/types/utils/get-builders.d.ts +2 -0
  35. package/dist/{ts3.9 → types}/utils/get-server-channel.d.ts +0 -0
  36. package/dist/{ts3.9 → types}/utils/metadata.d.ts +0 -0
  37. package/dist/{ts3.9 → types}/utils/middleware.d.ts +0 -0
  38. package/dist/{ts3.9 → types}/utils/open-in-browser.d.ts +0 -0
  39. package/dist/{ts3.9 → types}/utils/output-startup-information.d.ts +0 -0
  40. package/dist/{ts3.4 → types}/utils/output-stats.d.ts +3 -3
  41. package/dist/{ts3.9 → types}/utils/release-notes.d.ts +0 -0
  42. package/dist/{ts3.9 → types}/utils/server-address.d.ts +0 -0
  43. package/dist/{ts3.9 → types}/utils/server-init.d.ts +0 -0
  44. package/dist/{ts3.9 → types}/utils/server-statics.d.ts +0 -0
  45. package/dist/{ts3.9 → types}/utils/stories-json.d.ts +0 -0
  46. package/dist/{ts3.9 → types}/utils/update-check.d.ts +0 -0
  47. package/dist/{ts3.9 → types}/utils/watch-story-specifiers.d.ts +0 -0
  48. package/package.json +14 -23
  49. package/dist/cjs/cli/dev.js +0 -63
  50. package/dist/cjs/cli/index.js +0 -31
  51. package/dist/cjs/cli/prod.js +0 -43
  52. package/dist/cjs/cli/utils.js +0 -63
  53. package/dist/cjs/utils/get-preview-builder.js +0 -47
  54. package/dist/esm/cli/dev.js +0 -44
  55. package/dist/esm/cli/index.js +0 -2
  56. package/dist/esm/cli/prod.js +0 -26
  57. package/dist/esm/cli/utils.js +0 -48
  58. package/dist/esm/utils/get-manager-builder.js +0 -26
  59. package/dist/esm/utils/get-preview-builder.js +0 -28
  60. package/dist/modern/build-dev.js +0 -232
  61. package/dist/modern/build-static.js +0 -237
  62. package/dist/modern/cli/dev.js +0 -44
  63. package/dist/modern/cli/index.js +0 -2
  64. package/dist/modern/cli/prod.js +0 -26
  65. package/dist/modern/cli/utils.js +0 -48
  66. package/dist/modern/dev-server.js +0 -200
  67. package/dist/modern/index.js +0 -4
  68. package/dist/modern/presets/babel-cache-preset.js +0 -18
  69. package/dist/modern/presets/common-preset.js +0 -124
  70. package/dist/modern/standalone.js +0 -30
  71. package/dist/modern/utils/StoryIndexGenerator.js +0 -222
  72. package/dist/modern/utils/__mockdata__/E.stories.js +0 -5
  73. package/dist/modern/utils/__mockdata__/deeply/nested/single/File.stories.js +0 -4
  74. package/dist/modern/utils/__mockdata__/preview.js +0 -1
  75. package/dist/modern/utils/__mockdata__/src/A.stories.js +0 -5
  76. package/dist/modern/utils/__mockdata__/src/B.stories.js +0 -5
  77. package/dist/modern/utils/__mockdata__/src/C.js +0 -1
  78. package/dist/modern/utils/__mockdata__/src/D.stories.js +0 -5
  79. package/dist/modern/utils/__mockdata__/src/NoMeta.stories.js +0 -4
  80. package/dist/modern/utils/__mockdata__/src/first-nested/deeply/F.stories.js +0 -5
  81. package/dist/modern/utils/__mockdata__/src/nested/Button.js +0 -1
  82. package/dist/modern/utils/__mockdata__/src/nested/Button.stories.js +0 -5
  83. package/dist/modern/utils/__mockdata__/src/second-nested/G.stories.js +0 -5
  84. package/dist/modern/utils/copy-all-static-files.js +0 -62
  85. package/dist/modern/utils/get-manager-builder.js +0 -26
  86. package/dist/modern/utils/get-preview-builder.js +0 -28
  87. package/dist/modern/utils/get-server-channel.js +0 -39
  88. package/dist/modern/utils/metadata.js +0 -14
  89. package/dist/modern/utils/middleware.js +0 -27
  90. package/dist/modern/utils/open-in-browser.js +0 -26
  91. package/dist/modern/utils/output-startup-information.js +0 -54
  92. package/dist/modern/utils/output-stats.js +0 -37
  93. package/dist/modern/utils/release-notes.js +0 -63
  94. package/dist/modern/utils/server-address.js +0 -20
  95. package/dist/modern/utils/server-init.js +0 -29
  96. package/dist/modern/utils/server-statics.js +0 -97
  97. package/dist/modern/utils/stories-json.js +0 -42
  98. package/dist/modern/utils/update-check.js +0 -65
  99. package/dist/modern/utils/watch-story-specifiers.js +0 -99
  100. package/dist/ts3.4/build-dev.d.ts +0 -3
  101. package/dist/ts3.4/build-static.d.ts +0 -3
  102. package/dist/ts3.4/cli/dev.d.ts +0 -6
  103. package/dist/ts3.4/cli/index.d.ts +0 -2
  104. package/dist/ts3.4/cli/prod.d.ts +0 -7
  105. package/dist/ts3.4/cli/utils.d.ts +0 -5
  106. package/dist/ts3.4/dev-server.d.ts +0 -24
  107. package/dist/ts3.4/index.d.ts +0 -4
  108. package/dist/ts3.4/presets/babel-cache-preset.d.ts +0 -2
  109. package/dist/ts3.4/standalone.d.ts +0 -2
  110. package/dist/ts3.4/utils/StoryIndexGenerator.d.ts +0 -27
  111. package/dist/ts3.4/utils/__mockdata__/E.stories.d.ts +0 -5
  112. package/dist/ts3.4/utils/__mockdata__/deeply/nested/single/File.stories.d.ts +0 -5
  113. package/dist/ts3.4/utils/__mockdata__/src/B.stories.d.ts +0 -5
  114. package/dist/ts3.4/utils/__mockdata__/src/NoMeta.stories.d.ts +0 -1
  115. package/dist/ts3.4/utils/__mockdata__/src/nested/Button.d.ts +0 -1
  116. package/dist/ts3.4/utils/__mockdata__/src/nested/Button.stories.d.ts +0 -5
  117. package/dist/ts3.4/utils/__mockdata__/src/second-nested/G.stories.d.ts +0 -5
  118. package/dist/ts3.4/utils/copy-all-static-files.d.ts +0 -2
  119. package/dist/ts3.4/utils/get-manager-builder.d.ts +0 -2
  120. package/dist/ts3.4/utils/get-preview-builder.d.ts +0 -2
  121. package/dist/ts3.4/utils/get-server-channel.d.ts +0 -9
  122. package/dist/ts3.4/utils/metadata.d.ts +0 -3
  123. package/dist/ts3.4/utils/middleware.d.ts +0 -1
  124. package/dist/ts3.4/utils/open-in-browser.d.ts +0 -1
  125. package/dist/ts3.4/utils/output-startup-information.d.ts +0 -16
  126. package/dist/ts3.4/utils/release-notes.d.ts +0 -8
  127. package/dist/ts3.4/utils/server-address.d.ts +0 -8
  128. package/dist/ts3.4/utils/server-init.d.ts +0 -10
  129. package/dist/ts3.4/utils/server-statics.d.ts +0 -8
  130. package/dist/ts3.4/utils/stories-json.d.ts +0 -13
  131. package/dist/ts3.4/utils/update-check.d.ts +0 -3
  132. package/dist/ts3.4/utils/watch-story-specifiers.d.ts +0 -5
  133. package/dist/ts3.9/build-dev.d.ts +0 -3
  134. package/dist/ts3.9/cli/dev.d.ts +0 -6
  135. package/dist/ts3.9/cli/index.d.ts +0 -2
  136. package/dist/ts3.9/cli/prod.d.ts +0 -7
  137. package/dist/ts3.9/cli/utils.d.ts +0 -5
  138. package/dist/ts3.9/presets/babel-cache-preset.d.ts +0 -2
  139. package/dist/ts3.9/presets/common-preset.d.ts +0 -31
  140. package/dist/ts3.9/utils/get-manager-builder.d.ts +0 -2
  141. package/dist/ts3.9/utils/get-preview-builder.d.ts +0 -2
  142. package/dist/ts3.9/utils/output-stats.d.ts +0 -3
@@ -1,222 +0,0 @@
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
-
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
-
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) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_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
-
19
- import "core-js/modules/es.promise.js";
20
- import "core-js/modules/es.array.sort.js";
21
- import "core-js/modules/es.array.flat.js";
22
- import "core-js/modules/es.array.unscopables.flat.js";
23
- import "core-js/modules/es.array.flat-map.js";
24
- import "core-js/modules/es.array.unscopables.flat-map.js";
25
- import "core-js/modules/es.symbol.description.js";
26
- import path from 'path';
27
- import fs from 'fs-extra';
28
- import glob from 'globby';
29
- import slash from 'slash';
30
- import { userOrAutoTitleFromSpecifier, sortStoriesV7 } from '@storybook/store';
31
- import { normalizeStoryPath } from '@storybook/core-common';
32
- import { logger } from '@storybook/node-logger';
33
- import { readCsfOrMdx, getStorySortParameter } from '@storybook/csf-tools';
34
- export class StoryIndexGenerator {
35
- // An internal cache mapping specifiers to a set of path=><set of stories>
36
- // Later, we'll combine each of these subsets together to form the full index
37
- // Cache the last value of `getStoryIndex`. We invalidate (by unsetting) when:
38
- // - any file changes, including deletions
39
- // - the preview changes [not yet implemented]
40
- constructor(specifiers, options) {
41
- this.specifiers = specifiers;
42
- this.options = options;
43
- this.storyIndexEntries = void 0;
44
- this.lastIndex = void 0;
45
- this.storyIndexEntries = new Map();
46
- }
47
-
48
- async initialize() {
49
- var _this = this;
50
-
51
- // Find all matching paths for each specifier
52
- await Promise.all(this.specifiers.map(async function (specifier) {
53
- var pathToSubIndex = {};
54
- var fullGlob = slash(path.join(_this.options.workingDir, specifier.directory, specifier.files));
55
- var files = await glob(fullGlob);
56
- files.sort().forEach(function (absolutePath) {
57
- var ext = path.extname(absolutePath);
58
- var relativePath = path.relative(_this.options.workingDir, absolutePath);
59
-
60
- if (!['.js', '.jsx', '.ts', '.tsx', '.mdx'].includes(ext)) {
61
- logger.info(`Skipping ${ext} file ${relativePath}`);
62
- return;
63
- }
64
-
65
- pathToSubIndex[absolutePath] = false;
66
- });
67
-
68
- _this.storyIndexEntries.set(specifier, pathToSubIndex);
69
- })); // Extract stories for each file
70
-
71
- await this.ensureExtracted();
72
- }
73
-
74
- async ensureExtracted() {
75
- var _this2 = this;
76
-
77
- return (await Promise.all(this.specifiers.map(async function (specifier) {
78
- var entry = _this2.storyIndexEntries.get(specifier);
79
-
80
- return Promise.all(Object.keys(entry).map(async function (absolutePath) {
81
- return entry[absolutePath] || _this2.extractStories(specifier, absolutePath);
82
- }));
83
- }))).flat();
84
- }
85
-
86
- async extractStories(specifier, absolutePath) {
87
- var relativePath = path.relative(this.options.workingDir, absolutePath);
88
- var fileStories = {};
89
- var entry = this.storyIndexEntries.get(specifier);
90
-
91
- try {
92
- var importPath = slash(normalizeStoryPath(relativePath));
93
-
94
- var makeTitle = function (userTitle) {
95
- return userOrAutoTitleFromSpecifier(importPath, specifier, userTitle);
96
- };
97
-
98
- var csf = (await readCsfOrMdx(absolutePath, {
99
- makeTitle: makeTitle
100
- })).parse();
101
- csf.stories.forEach(function ({
102
- id: id,
103
- name: name
104
- }) {
105
- fileStories[id] = {
106
- id: id,
107
- title: csf.meta.title,
108
- name: name,
109
- importPath: importPath
110
- };
111
- });
112
- } catch (err) {
113
- if (err.name === 'NoMetaError') {
114
- logger.info(`💡 Skipping ${relativePath}: ${err}`);
115
- } else {
116
- logger.warn(`🚨 Extraction error on ${relativePath}: ${err}`);
117
- throw err;
118
- }
119
- }
120
-
121
- entry[absolutePath] = fileStories;
122
- return fileStories;
123
- }
124
-
125
- async sortStories(storiesList) {
126
- var stories = {};
127
- storiesList.forEach(function (subStories) {
128
- Object.assign(stories, subStories);
129
- });
130
- var sortableStories = Object.values(stories); // Skip sorting if we're in v6 mode because we don't have
131
- // all the info we need here
132
-
133
- if (this.options.storyStoreV7) {
134
- var storySortParameter = await this.getStorySortParameter();
135
- var fileNameOrder = this.storyFileNames();
136
- sortStoriesV7(sortableStories, storySortParameter, fileNameOrder);
137
- }
138
-
139
- return sortableStories.reduce(function (acc, item) {
140
- acc[item.id] = item;
141
- return acc;
142
- }, {});
143
- }
144
-
145
- async getIndex() {
146
- if (this.lastIndex) return this.lastIndex; // Extract any entries that are currently missing
147
- // Pull out each file's stories into a list of stories, to be composed and sorted
148
-
149
- var storiesList = await this.ensureExtracted();
150
- var sorted = await this.sortStories(storiesList);
151
- var compat = sorted;
152
-
153
- if (this.options.storiesV2Compatibility) {
154
- var titleToStoryCount = Object.values(sorted).reduce(function (acc, story) {
155
- acc[story.title] = (acc[story.title] || 0) + 1;
156
- return acc;
157
- }, {});
158
- compat = Object.entries(sorted).reduce(function (acc, entry) {
159
- var _entry = _slicedToArray(entry, 2),
160
- id = _entry[0],
161
- story = _entry[1];
162
-
163
- acc[id] = _objectSpread(_objectSpread({}, story), {}, {
164
- id: id,
165
- kind: story.title,
166
- story: story.name,
167
- parameters: {
168
- __id: story.id,
169
- docsOnly: titleToStoryCount[story.title] === 1 && story.name === 'Page',
170
- fileName: story.importPath
171
- }
172
- });
173
- return acc;
174
- }, {});
175
- }
176
-
177
- this.lastIndex = {
178
- v: 3,
179
- stories: compat
180
- };
181
- return this.lastIndex;
182
- }
183
-
184
- invalidate(specifier, importPath, removed) {
185
- var absolutePath = slash(path.resolve(this.options.workingDir, importPath));
186
- var pathToEntries = this.storyIndexEntries.get(specifier);
187
-
188
- if (removed) {
189
- delete pathToEntries[absolutePath];
190
- } else {
191
- pathToEntries[absolutePath] = false;
192
- }
193
-
194
- this.lastIndex = null;
195
- }
196
-
197
- async getStorySortParameter() {
198
- var _this3 = this;
199
-
200
- var previewFile = ['js', 'jsx', 'ts', 'tsx'].map(function (ext) {
201
- return path.join(_this3.options.configDir, `preview.${ext}`);
202
- }).find(function (fname) {
203
- return fs.existsSync(fname);
204
- });
205
- var storySortParameter;
206
-
207
- if (previewFile) {
208
- var previewCode = (await fs.readFile(previewFile, 'utf-8')).toString();
209
- storySortParameter = await getStorySortParameter(previewCode);
210
- }
211
-
212
- return storySortParameter;
213
- } // Get the story file names in "imported order"
214
-
215
-
216
- storyFileNames() {
217
- return Array.from(this.storyIndexEntries.values()).flatMap(function (r) {
218
- return Object.keys(r);
219
- });
220
- }
221
-
222
- }
@@ -1,5 +0,0 @@
1
- var component = {};
2
- export default {
3
- component: component
4
- };
5
- export var StoryOne = {};
@@ -1,4 +0,0 @@
1
- export default {
2
- component: {}
3
- };
4
- export var StoryOne = {};
@@ -1 +0,0 @@
1
- export var parameters = {};
@@ -1,5 +0,0 @@
1
- var component = {};
2
- export default {
3
- component: component
4
- };
5
- export var StoryOne = {};
@@ -1,5 +0,0 @@
1
- var component = {};
2
- export default {
3
- component: component
4
- };
5
- export var StoryOne = {};
@@ -1 +0,0 @@
1
- export var C = {};
@@ -1,5 +0,0 @@
1
- var component = {};
2
- export default {
3
- component: component
4
- };
5
- export var StoryOne = {};
@@ -1,4 +0,0 @@
1
- /* eslint-disable storybook/default-exports */
2
- // no default export
3
- // e.g. https://github.com/storybookjs/storybook/issues/16421
4
- export var StoryOne = {};
@@ -1,5 +0,0 @@
1
- var component = {};
2
- export default {
3
- component: component
4
- };
5
- export var StoryOne = {};
@@ -1 +0,0 @@
1
- export var Button = {};
@@ -1,5 +0,0 @@
1
- var component = {};
2
- export default {
3
- component: component
4
- };
5
- export var StoryOne = {};
@@ -1,5 +0,0 @@
1
- var component = {};
2
- export default {
3
- component: component
4
- };
5
- export var StoryOne = {};
@@ -1,62 +0,0 @@
1
- import "core-js/modules/es.promise.js";
2
- import chalk from 'chalk';
3
- import fs from 'fs-extra';
4
- import path from 'path';
5
- import { logger } from '@storybook/node-logger';
6
- import { getDirectoryFromWorkingDir } from '@storybook/core-common';
7
- import { parseStaticDir } from './server-statics';
8
- export async function copyAllStaticFiles(staticDirs, outputDir) {
9
- if (staticDirs && staticDirs.length > 0) {
10
- await Promise.all(staticDirs.map(async function (dir) {
11
- try {
12
- var _await$parseStaticDir = await parseStaticDir(dir),
13
- staticDir = _await$parseStaticDir.staticDir,
14
- staticPath = _await$parseStaticDir.staticPath,
15
- targetDir = _await$parseStaticDir.targetDir;
16
-
17
- var targetPath = path.join(outputDir, targetDir);
18
- logger.info(chalk`=> Copying static files: {cyan ${staticDir}} => {cyan ${targetDir}}`); // Storybook's own files should not be overwritten, so we skip such files if we find them
19
-
20
- var skipPaths = ['index.html', 'iframe.html'].map(function (f) {
21
- return path.join(targetPath, f);
22
- });
23
- await fs.copy(staticPath, targetPath, {
24
- dereference: true,
25
- preserveTimestamps: true,
26
- filter: function (_, dest) {
27
- return !skipPaths.includes(dest);
28
- }
29
- });
30
- } catch (e) {
31
- logger.error(e.message);
32
- process.exit(-1);
33
- }
34
- }));
35
- }
36
- }
37
- export async function copyAllStaticFilesRelativeToMain(staticDirs, outputDir, configDir) {
38
- staticDirs.forEach(async function (dir) {
39
- var staticDirAndTarget = typeof dir === 'string' ? dir : `${dir.from}:${dir.to}`;
40
-
41
- var _await$parseStaticDir2 = await parseStaticDir(getDirectoryFromWorkingDir({
42
- configDir: configDir,
43
- workingDir: process.cwd(),
44
- directory: staticDirAndTarget
45
- })),
46
- from = _await$parseStaticDir2.staticPath,
47
- to = _await$parseStaticDir2.targetEndpoint;
48
-
49
- var targetPath = path.join(outputDir, to);
50
- var skipPaths = ['index.html', 'iframe.html'].map(function (f) {
51
- return path.join(targetPath, f);
52
- });
53
- logger.info(chalk`=> Copying static files: {cyan ${from}} at {cyan ${targetPath}}`);
54
- await fs.copy(from, targetPath, {
55
- dereference: true,
56
- preserveTimestamps: true,
57
- filter: function (_, dest) {
58
- return !skipPaths.includes(dest);
59
- }
60
- });
61
- });
62
- }
@@ -1,26 +0,0 @@
1
- import "core-js/modules/es.promise.js";
2
- import path from 'path';
3
- import { getInterpretedFile, serverRequire } from '@storybook/core-common';
4
- export async function getManagerBuilder(configDir) {
5
- var _core$builder;
6
-
7
- var main = path.resolve(configDir, 'main');
8
- var mainFile = getInterpretedFile(main);
9
-
10
- var _ref = mainFile ? serverRequire(mainFile) : {
11
- core: null
12
- },
13
- core = _ref.core;
14
-
15
- var builderName = typeof (core === null || core === void 0 ? void 0 : core.builder) === 'string' ? core.builder : core === null || core === void 0 ? void 0 : (_core$builder = core.builder) === null || _core$builder === void 0 ? void 0 : _core$builder.name; // Builder can be any string including community builders like `storybook-builder-vite`.
16
- // - For now, `webpack5` triggers `manager-webpack5`
17
- // - Everything else builds with `manager-webpack4`
18
- //
19
- // Unlike preview builders, manager building is not pluggable!
20
-
21
- var builderPackage = ['webpack5', '@storybook/builder-webpack5'].includes(builderName) ? require.resolve('@storybook/manager-webpack5', {
22
- paths: [main]
23
- }) : '@storybook/manager-webpack4';
24
- var managerBuilder = await import(builderPackage);
25
- return managerBuilder;
26
- }
@@ -1,28 +0,0 @@
1
- import "core-js/modules/es.promise.js";
2
- import path from 'path';
3
- import { getInterpretedFile, serverRequire } from '@storybook/core-common';
4
- export async function getPreviewBuilder(configDir) {
5
- var main = path.resolve(configDir, 'main');
6
- var mainFile = getInterpretedFile(main);
7
-
8
- var _ref = mainFile ? serverRequire(mainFile) : {
9
- core: null
10
- },
11
- core = _ref.core;
12
-
13
- var builderPackage;
14
-
15
- if (core !== null && core !== void 0 && core.builder) {
16
- var _core$builder;
17
-
18
- var builderName = typeof core.builder === 'string' ? core.builder : (_core$builder = core.builder) === null || _core$builder === void 0 ? void 0 : _core$builder.name;
19
- builderPackage = require.resolve(['webpack4', 'webpack5'].includes(builderName) ? `@storybook/builder-${builderName}` : builderName, {
20
- paths: [main]
21
- });
22
- } else {
23
- builderPackage = require.resolve('@storybook/builder-webpack4');
24
- }
25
-
26
- var previewBuilder = await import(builderPackage);
27
- return previewBuilder;
28
- }
@@ -1,39 +0,0 @@
1
- import WebSocket, { WebSocketServer } from 'ws';
2
- import { stringify } from 'telejson';
3
- export class ServerChannel {
4
- constructor(server) {
5
- var _this = this;
6
-
7
- this.webSocketServer = void 0;
8
- this.webSocketServer = new WebSocketServer({
9
- noServer: true
10
- });
11
- server.on('upgrade', function (request, socket, head) {
12
- if (request.url === '/storybook-server-channel') {
13
- _this.webSocketServer.handleUpgrade(request, socket, head, function (ws) {
14
- _this.webSocketServer.emit('connection', ws, request);
15
- });
16
- }
17
- });
18
- }
19
-
20
- emit(type, args = []) {
21
- var event = {
22
- type: type,
23
- args: args
24
- };
25
- var data = stringify(event, {
26
- maxDepth: 15,
27
- allowFunction: true
28
- });
29
- Array.from(this.webSocketServer.clients).filter(function (c) {
30
- return c.readyState === WebSocket.OPEN;
31
- }).forEach(function (client) {
32
- return client.send(data);
33
- });
34
- }
35
-
36
- }
37
- export function getServerChannel(server) {
38
- return new ServerChannel(server);
39
- }
@@ -1,14 +0,0 @@
1
- import "core-js/modules/es.promise.js";
2
- import fs from 'fs-extra';
3
- import { getStorybookMetadata } from '@storybook/telemetry';
4
- export async function extractStorybookMetadata(outputFile, configDir) {
5
- var storybookMetadata = await getStorybookMetadata(configDir);
6
- await fs.writeJson(outputFile, storybookMetadata);
7
- }
8
- export function useStorybookMetadata(router, configDir) {
9
- router.use('/project.json', async function (req, res) {
10
- var storybookMetadata = await getStorybookMetadata(configDir);
11
- res.header('Content-Type', 'application/json');
12
- res.send(JSON.stringify(storybookMetadata));
13
- });
14
- }
@@ -1,27 +0,0 @@
1
- import path from 'path';
2
- import fs from 'fs';
3
-
4
- var fileExists = function (basename) {
5
- return ['.js', '.cjs'].reduce(function (found, ext) {
6
- var filename = `${basename}${ext}`;
7
- return !found && fs.existsSync(filename) ? filename : found;
8
- }, '');
9
- };
10
-
11
- export function getMiddleware(configDir) {
12
- var middlewarePath = fileExists(path.resolve(configDir, 'middleware'));
13
-
14
- if (middlewarePath) {
15
- var middlewareModule = require(middlewarePath); // eslint-disable-line
16
-
17
-
18
- if (middlewareModule.__esModule) {
19
- // eslint-disable-line
20
- middlewareModule = middlewareModule.default;
21
- }
22
-
23
- return middlewareModule;
24
- }
25
-
26
- return function () {};
27
- }
@@ -1,26 +0,0 @@
1
- import "core-js/modules/es.promise.js";
2
- import { logger } from '@storybook/node-logger';
3
- import betterOpn from 'better-opn'; // betterOpn alias used because also loading open
4
-
5
- import open from 'open';
6
- import getDefaultBrowser from 'x-default-browser';
7
- import dedent from 'ts-dedent';
8
- export function openInBrowser(address) {
9
- getDefaultBrowser(async function (err, res) {
10
- try {
11
- if (res && (res.isChrome || res.isChromium)) {
12
- // We use betterOpn for Chrome because it is better at handling which chrome tab
13
- // or window the preview loads in.
14
- betterOpn(address);
15
- } else {
16
- await open(address);
17
- }
18
- } catch (error) {
19
- logger.error(dedent`
20
- Could not open ${address} inside a browser. If you're running this command inside a
21
- docker container or on a CI, you need to pass the '--ci' flag to prevent opening a
22
- browser by default.
23
- `);
24
- }
25
- });
26
- }
@@ -1,54 +0,0 @@
1
- import chalk from 'chalk';
2
- import { colors } from '@storybook/node-logger';
3
- import boxen from 'boxen';
4
- import dedent from 'ts-dedent';
5
- import Table from 'cli-table3';
6
- import prettyTime from 'pretty-hrtime';
7
- import { createUpdateMessage } from './update-check';
8
- export function outputStartupInformation(options) {
9
- var updateInfo = options.updateInfo,
10
- version = options.version,
11
- name = options.name,
12
- address = options.address,
13
- networkAddress = options.networkAddress,
14
- managerTotalTime = options.managerTotalTime,
15
- previewTotalTime = options.previewTotalTime;
16
- var updateMessage = createUpdateMessage(updateInfo, version);
17
- var serveMessage = new Table({
18
- chars: {
19
- top: '',
20
- 'top-mid': '',
21
- 'top-left': '',
22
- 'top-right': '',
23
- bottom: '',
24
- 'bottom-mid': '',
25
- 'bottom-left': '',
26
- 'bottom-right': '',
27
- left: '',
28
- 'left-mid': '',
29
- mid: '',
30
- 'mid-mid': '',
31
- right: '',
32
- 'right-mid': '',
33
- middle: ''
34
- },
35
- // @ts-ignore
36
- paddingLeft: 0,
37
- paddingRight: 0,
38
- paddingTop: 0,
39
- paddingBottom: 0
40
- });
41
- serveMessage.push(['Local:', chalk.cyan(address)], ['On your network:', chalk.cyan(networkAddress)]);
42
- var timeStatement = [managerTotalTime && `${chalk.underline(prettyTime(managerTotalTime))} for manager`, previewTotalTime && `${chalk.underline(prettyTime(previewTotalTime))} for preview`].filter(Boolean).join(' and '); // eslint-disable-next-line no-console
43
-
44
- console.log(boxen(dedent`
45
- ${colors.green(`Storybook ${chalk.bold(version)} for ${chalk.bold(name)} started`)}
46
- ${chalk.gray(timeStatement)}
47
-
48
- ${serveMessage.toString()}${updateMessage ? `\n\n${updateMessage}` : ''}
49
- `, {
50
- borderStyle: 'round',
51
- padding: 1,
52
- borderColor: '#F1618C'
53
- }));
54
- }
@@ -1,37 +0,0 @@
1
- var _excluded = ["chunks"];
2
-
3
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
4
-
5
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
6
-
7
- import "core-js/modules/es.promise.js";
8
- import { stringifyStream } from '@discoveryjs/json-ext';
9
- import { logger } from '@storybook/node-logger';
10
- import chalk from 'chalk';
11
- import fs from 'fs-extra';
12
- import path from 'path';
13
- export async function outputStats(directory, previewStats, managerStats) {
14
- if (previewStats) {
15
- var filePath = await writeStats(directory, 'preview', previewStats);
16
- logger.info(`=> preview stats written to ${chalk.cyan(filePath)}`);
17
- }
18
-
19
- if (managerStats) {
20
- var _filePath = await writeStats(directory, 'manager', managerStats);
21
-
22
- logger.info(`=> manager stats written to ${chalk.cyan(_filePath)}`);
23
- }
24
- }
25
- export var writeStats = async function (directory, name, stats) {
26
- var filePath = path.join(directory, `${name}-stats.json`);
27
-
28
- var _stats$toJson = stats.toJson(),
29
- chunks = _stats$toJson.chunks,
30
- data = _objectWithoutProperties(_stats$toJson, _excluded); // omit chunks, which is about half of the total data
31
-
32
-
33
- await new Promise(function (resolve, reject) {
34
- stringifyStream(data, null, 2).on('error', reject).pipe(fs.createWriteStream(filePath)).on('error', reject).on('finish', resolve);
35
- });
36
- return filePath;
37
- };