@storybook/core-common 6.5.0-alpha.52 → 6.5.0-alpha.53

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.
@@ -17,12 +17,12 @@ var _path = require("path");
17
17
 
18
18
  var _nodeLogger = require("@storybook/node-logger");
19
19
 
20
- var _resolveFrom = _interopRequireDefault(require("resolve-from"));
21
-
22
20
  var _loadCustomPresets = require("./utils/load-custom-presets");
23
21
 
24
22
  var _interpretRequire = require("./utils/interpret-require");
25
23
 
24
+ var _safeResolve = require("./utils/safeResolve");
25
+
26
26
  var _excluded = ["type", "name"],
27
27
  _excluded2 = ["addons", "presets", "framework"],
28
28
  _excluded3 = ["corePresets", "frameworkPresets", "overridePresets"];
@@ -71,8 +71,8 @@ function resolvePresetFunction(input, presetOptions, framework, storybookOptions
71
71
  * Parse an addon into either a managerEntries or a preset. Throw on invalid input.
72
72
  *
73
73
  * Valid inputs:
74
- * - '@storybook/addon-actions/register'
75
- * => { type: 'managerEntries', item }
74
+ * - '@storybook/addon-actions/manager'
75
+ * => { type: 'virtual', item }
76
76
  *
77
77
  * - '@storybook/addon-docs/preset'
78
78
  * => { type: 'presets', item }
@@ -85,43 +85,69 @@ function resolvePresetFunction(input, presetOptions, framework, storybookOptions
85
85
  */
86
86
 
87
87
 
88
- var resolveAddonName = function (configDir, name) {
89
- var path;
90
-
91
- if (name.startsWith('.')) {
92
- path = (0, _resolveFrom.default)(configDir, name);
93
- } else if (name.startsWith('/')) {
94
- path = name;
95
- } else if (name.match(/\/(preset|register(-panel)?)(\.(js|ts|tsx|jsx))?$/)) {
96
- path = name;
97
- } // when user provides full path, we don't need to do anything
98
-
88
+ var resolveAddonName = function (configDir, name, options) {
89
+ var r = name.startsWith('/') ? _safeResolve.safeResolve : _safeResolve.safeResolveFrom.bind(null, configDir);
90
+ var resolved = r(name);
99
91
 
100
- if (path) {
92
+ if (name.match(/\/(manager|register(-panel)?)(\.(js|ts|tsx|jsx))?$/)) {
101
93
  return {
102
- name: path,
103
- // Accept `register`, `register.js`, `require.resolve('foo/register'), `register-panel`
104
- type: path.match(/register(-panel)?(\.(js|ts|tsx|jsx))?$/) ? 'managerEntries' : 'presets'
94
+ type: 'virtual',
95
+ name: name,
96
+ managerEntries: [resolved]
105
97
  };
106
98
  }
107
99
 
108
- try {
100
+ if (name.match(/\/(preset)(\.(js|ts|tsx|jsx))?$/)) {
109
101
  return {
110
- name: (0, _resolveFrom.default)(configDir, `${name}/preset`),
111
- type: 'presets'
112
- }; // eslint-disable-next-line no-empty
113
- } catch (err) {}
102
+ type: 'presets',
103
+ name: resolved
104
+ };
105
+ }
114
106
 
115
- try {
107
+ var path = name; // when user provides full path, we don't need to do anything!
108
+
109
+ var managerFile = (0, _safeResolve.safeResolve)(`${path}/manager`);
110
+ var registerFile = (0, _safeResolve.safeResolve)(`${path}/register`) || (0, _safeResolve.safeResolve)(`${path}/register-panel`);
111
+ var previewFile = (0, _safeResolve.safeResolve)(`${path}/preview`);
112
+ var presetFile = (0, _safeResolve.safeResolve)(`${path}/preset`);
113
+
114
+ if (!(managerFile || previewFile) && presetFile) {
116
115
  return {
117
- name: (0, _resolveFrom.default)(configDir, `${name}/register`),
118
- type: 'managerEntries'
119
- }; // eslint-disable-next-line no-empty
120
- } catch (err) {}
116
+ type: 'presets',
117
+ name: presetFile
118
+ };
119
+ }
120
+
121
+ if (managerFile || registerFile || previewFile || presetFile) {
122
+ var managerEntries = [];
123
+
124
+ if (managerFile) {
125
+ managerEntries.push(managerFile);
126
+ } // register file is the old way of registering addons
127
+
128
+
129
+ if (!managerFile && registerFile && !presetFile) {
130
+ managerEntries.push(registerFile);
131
+ }
132
+
133
+ return _objectSpread(_objectSpread(_objectSpread({
134
+ type: 'virtual',
135
+ name: path
136
+ }, managerEntries.length ? {
137
+ managerEntries: managerEntries
138
+ } : {}), previewFile ? {
139
+ previewAnnotations: [previewFile]
140
+ } : {}), presetFile ? {
141
+ presets: [{
142
+ name: presetFile,
143
+ options: options
144
+ }]
145
+ } : {});
146
+ }
121
147
 
122
148
  return {
123
- name: (0, _resolveFrom.default)(configDir, name),
124
- type: 'presets'
149
+ type: 'presets',
150
+ name: resolved
125
151
  };
126
152
  };
127
153
 
@@ -131,31 +157,16 @@ var map = function ({
131
157
  configDir: configDir
132
158
  }) {
133
159
  return function (item) {
134
- try {
135
- if (isObject(item)) {
136
- var _resolveAddonName = resolveAddonName(configDir, item.name),
137
- _name = _resolveAddonName.name;
160
+ var options = isObject(item) ? item.options || undefined : undefined;
161
+ var name = isObject(item) ? item.name : item;
138
162
 
139
- return _objectSpread(_objectSpread({}, item), {}, {
140
- name: _name
141
- });
142
- }
143
-
144
- var _resolveAddonName2 = resolveAddonName(configDir, item),
145
- name = _resolveAddonName2.name,
146
- type = _resolveAddonName2.type;
147
-
148
- if (type === 'managerEntries') {
149
- return {
150
- name: `${name}_additionalManagerEntries`,
151
- type: type,
152
- managerEntries: [name]
153
- };
154
- }
155
-
156
- return resolveAddonName(configDir, name);
163
+ try {
164
+ var resolved = resolveAddonName(configDir, name, options);
165
+ return _objectSpread(_objectSpread({}, options ? {
166
+ options: options
167
+ } : {}), resolved);
157
168
  } catch (err) {
158
- _nodeLogger.logger.error(`Addon value should end in /register OR it should be a valid preset https://storybook.js.org/docs/react/addons/writing-presets/\n${item}`);
169
+ _nodeLogger.logger.error(`Addon value should end in /manager or /preview or /register OR it should be a valid preset https://storybook.js.org/docs/react/addons/writing-presets/\n${item}`);
159
170
  }
160
171
 
161
172
  return undefined;
@@ -171,9 +182,9 @@ function interopRequireDefault(filePath) {
171
182
  }
172
183
 
173
184
  function getContent(input) {
174
- if (input.type === 'managerEntries') {
185
+ if (input.type === 'virtual') {
175
186
  var type = input.type,
176
- _name2 = input.name,
187
+ _name = input.name,
177
188
  rest = _objectWithoutProperties(input, _excluded);
178
189
 
179
190
  return rest;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.safeResolveFrom = exports.safeResolve = void 0;
7
+
8
+ var _resolveFrom = _interopRequireDefault(require("resolve-from"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ var safeResolveFrom = function (path, file) {
13
+ try {
14
+ return (0, _resolveFrom.default)(path, file);
15
+ } catch (e) {
16
+ return undefined;
17
+ }
18
+ };
19
+
20
+ exports.safeResolveFrom = safeResolveFrom;
21
+
22
+ var safeResolve = function (file) {
23
+ try {
24
+ return require.resolve(file);
25
+ } catch (e) {
26
+ return undefined;
27
+ }
28
+ };
29
+
30
+ exports.safeResolve = safeResolve;
@@ -16,9 +16,9 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
16
16
  import dedent from 'ts-dedent';
17
17
  import { resolve } from 'path';
18
18
  import { logger } from '@storybook/node-logger';
19
- import resolveFrom from 'resolve-from';
20
19
  import { loadCustomPresets } from './utils/load-custom-presets';
21
20
  import { serverRequire } from './utils/interpret-require';
21
+ import { safeResolve, safeResolveFrom } from './utils/safeResolve';
22
22
 
23
23
  var isObject = function (val) {
24
24
  return val != null && typeof val === 'object' && Array.isArray(val) === false;
@@ -52,8 +52,8 @@ function resolvePresetFunction(input, presetOptions, framework, storybookOptions
52
52
  * Parse an addon into either a managerEntries or a preset. Throw on invalid input.
53
53
  *
54
54
  * Valid inputs:
55
- * - '@storybook/addon-actions/register'
56
- * => { type: 'managerEntries', item }
55
+ * - '@storybook/addon-actions/manager'
56
+ * => { type: 'virtual', item }
57
57
  *
58
58
  * - '@storybook/addon-docs/preset'
59
59
  * => { type: 'presets', item }
@@ -66,43 +66,69 @@ function resolvePresetFunction(input, presetOptions, framework, storybookOptions
66
66
  */
67
67
 
68
68
 
69
- export var resolveAddonName = function (configDir, name) {
70
- var path;
69
+ export var resolveAddonName = function (configDir, name, options) {
70
+ var r = name.startsWith('/') ? safeResolve : safeResolveFrom.bind(null, configDir);
71
+ var resolved = r(name);
71
72
 
72
- if (name.startsWith('.')) {
73
- path = resolveFrom(configDir, name);
74
- } else if (name.startsWith('/')) {
75
- path = name;
76
- } else if (name.match(/\/(preset|register(-panel)?)(\.(js|ts|tsx|jsx))?$/)) {
77
- path = name;
78
- } // when user provides full path, we don't need to do anything
79
-
80
-
81
- if (path) {
73
+ if (name.match(/\/(manager|register(-panel)?)(\.(js|ts|tsx|jsx))?$/)) {
82
74
  return {
83
- name: path,
84
- // Accept `register`, `register.js`, `require.resolve('foo/register'), `register-panel`
85
- type: path.match(/register(-panel)?(\.(js|ts|tsx|jsx))?$/) ? 'managerEntries' : 'presets'
75
+ type: 'virtual',
76
+ name: name,
77
+ managerEntries: [resolved]
86
78
  };
87
79
  }
88
80
 
89
- try {
81
+ if (name.match(/\/(preset)(\.(js|ts|tsx|jsx))?$/)) {
90
82
  return {
91
- name: resolveFrom(configDir, `${name}/preset`),
92
- type: 'presets'
93
- }; // eslint-disable-next-line no-empty
94
- } catch (err) {}
83
+ type: 'presets',
84
+ name: resolved
85
+ };
86
+ }
95
87
 
96
- try {
88
+ var path = name; // when user provides full path, we don't need to do anything!
89
+
90
+ var managerFile = safeResolve(`${path}/manager`);
91
+ var registerFile = safeResolve(`${path}/register`) || safeResolve(`${path}/register-panel`);
92
+ var previewFile = safeResolve(`${path}/preview`);
93
+ var presetFile = safeResolve(`${path}/preset`);
94
+
95
+ if (!(managerFile || previewFile) && presetFile) {
97
96
  return {
98
- name: resolveFrom(configDir, `${name}/register`),
99
- type: 'managerEntries'
100
- }; // eslint-disable-next-line no-empty
101
- } catch (err) {}
97
+ type: 'presets',
98
+ name: presetFile
99
+ };
100
+ }
101
+
102
+ if (managerFile || registerFile || previewFile || presetFile) {
103
+ var managerEntries = [];
104
+
105
+ if (managerFile) {
106
+ managerEntries.push(managerFile);
107
+ } // register file is the old way of registering addons
108
+
109
+
110
+ if (!managerFile && registerFile && !presetFile) {
111
+ managerEntries.push(registerFile);
112
+ }
113
+
114
+ return _objectSpread(_objectSpread(_objectSpread({
115
+ type: 'virtual',
116
+ name: path
117
+ }, managerEntries.length ? {
118
+ managerEntries: managerEntries
119
+ } : {}), previewFile ? {
120
+ previewAnnotations: [previewFile]
121
+ } : {}), presetFile ? {
122
+ presets: [{
123
+ name: presetFile,
124
+ options: options
125
+ }]
126
+ } : {});
127
+ }
102
128
 
103
129
  return {
104
- name: resolveFrom(configDir, name),
105
- type: 'presets'
130
+ type: 'presets',
131
+ name: resolved
106
132
  };
107
133
  };
108
134
 
@@ -110,31 +136,16 @@ var map = function ({
110
136
  configDir: configDir
111
137
  }) {
112
138
  return function (item) {
113
- try {
114
- if (isObject(item)) {
115
- var _resolveAddonName = resolveAddonName(configDir, item.name),
116
- _name = _resolveAddonName.name;
139
+ var options = isObject(item) ? item.options || undefined : undefined;
140
+ var name = isObject(item) ? item.name : item;
117
141
 
118
- return _objectSpread(_objectSpread({}, item), {}, {
119
- name: _name
120
- });
121
- }
122
-
123
- var _resolveAddonName2 = resolveAddonName(configDir, item),
124
- name = _resolveAddonName2.name,
125
- type = _resolveAddonName2.type;
126
-
127
- if (type === 'managerEntries') {
128
- return {
129
- name: `${name}_additionalManagerEntries`,
130
- type: type,
131
- managerEntries: [name]
132
- };
133
- }
134
-
135
- return resolveAddonName(configDir, name);
142
+ try {
143
+ var resolved = resolveAddonName(configDir, name, options);
144
+ return _objectSpread(_objectSpread({}, options ? {
145
+ options: options
146
+ } : {}), resolved);
136
147
  } catch (err) {
137
- logger.error(`Addon value should end in /register OR it should be a valid preset https://storybook.js.org/docs/react/addons/writing-presets/\n${item}`);
148
+ logger.error(`Addon value should end in /manager or /preview or /register OR it should be a valid preset https://storybook.js.org/docs/react/addons/writing-presets/\n${item}`);
138
149
  }
139
150
 
140
151
  return undefined;
@@ -150,9 +161,9 @@ function interopRequireDefault(filePath) {
150
161
  }
151
162
 
152
163
  function getContent(input) {
153
- if (input.type === 'managerEntries') {
164
+ if (input.type === 'virtual') {
154
165
  var type = input.type,
155
- _name2 = input.name,
166
+ _name = input.name,
156
167
  rest = _objectWithoutProperties(input, _excluded);
157
168
 
158
169
  return rest;
@@ -0,0 +1,15 @@
1
+ import resolveFrom from 'resolve-from';
2
+ export var safeResolveFrom = function (path, file) {
3
+ try {
4
+ return resolveFrom(path, file);
5
+ } catch (e) {
6
+ return undefined;
7
+ }
8
+ };
9
+ export var safeResolve = function (file) {
10
+ try {
11
+ return require.resolve(file);
12
+ } catch (e) {
13
+ return undefined;
14
+ }
15
+ };
@@ -16,9 +16,9 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
16
16
  import dedent from 'ts-dedent';
17
17
  import { resolve } from 'path';
18
18
  import { logger } from '@storybook/node-logger';
19
- import resolveFrom from 'resolve-from';
20
19
  import { loadCustomPresets } from './utils/load-custom-presets';
21
20
  import { serverRequire } from './utils/interpret-require';
21
+ import { safeResolve, safeResolveFrom } from './utils/safeResolve';
22
22
 
23
23
  var isObject = function (val) {
24
24
  return val != null && typeof val === 'object' && Array.isArray(val) === false;
@@ -52,8 +52,8 @@ function resolvePresetFunction(input, presetOptions, framework, storybookOptions
52
52
  * Parse an addon into either a managerEntries or a preset. Throw on invalid input.
53
53
  *
54
54
  * Valid inputs:
55
- * - '@storybook/addon-actions/register'
56
- * => { type: 'managerEntries', item }
55
+ * - '@storybook/addon-actions/manager'
56
+ * => { type: 'virtual', item }
57
57
  *
58
58
  * - '@storybook/addon-docs/preset'
59
59
  * => { type: 'presets', item }
@@ -66,43 +66,69 @@ function resolvePresetFunction(input, presetOptions, framework, storybookOptions
66
66
  */
67
67
 
68
68
 
69
- export var resolveAddonName = function (configDir, name) {
70
- var path;
69
+ export var resolveAddonName = function (configDir, name, options) {
70
+ var r = name.startsWith('/') ? safeResolve : safeResolveFrom.bind(null, configDir);
71
+ var resolved = r(name);
71
72
 
72
- if (name.startsWith('.')) {
73
- path = resolveFrom(configDir, name);
74
- } else if (name.startsWith('/')) {
75
- path = name;
76
- } else if (name.match(/\/(preset|register(-panel)?)(\.(js|ts|tsx|jsx))?$/)) {
77
- path = name;
78
- } // when user provides full path, we don't need to do anything
79
-
80
-
81
- if (path) {
73
+ if (name.match(/\/(manager|register(-panel)?)(\.(js|ts|tsx|jsx))?$/)) {
82
74
  return {
83
- name: path,
84
- // Accept `register`, `register.js`, `require.resolve('foo/register'), `register-panel`
85
- type: path.match(/register(-panel)?(\.(js|ts|tsx|jsx))?$/) ? 'managerEntries' : 'presets'
75
+ type: 'virtual',
76
+ name: name,
77
+ managerEntries: [resolved]
86
78
  };
87
79
  }
88
80
 
89
- try {
81
+ if (name.match(/\/(preset)(\.(js|ts|tsx|jsx))?$/)) {
90
82
  return {
91
- name: resolveFrom(configDir, `${name}/preset`),
92
- type: 'presets'
93
- }; // eslint-disable-next-line no-empty
94
- } catch (err) {}
83
+ type: 'presets',
84
+ name: resolved
85
+ };
86
+ }
95
87
 
96
- try {
88
+ var path = name; // when user provides full path, we don't need to do anything!
89
+
90
+ var managerFile = safeResolve(`${path}/manager`);
91
+ var registerFile = safeResolve(`${path}/register`) || safeResolve(`${path}/register-panel`);
92
+ var previewFile = safeResolve(`${path}/preview`);
93
+ var presetFile = safeResolve(`${path}/preset`);
94
+
95
+ if (!(managerFile || previewFile) && presetFile) {
97
96
  return {
98
- name: resolveFrom(configDir, `${name}/register`),
99
- type: 'managerEntries'
100
- }; // eslint-disable-next-line no-empty
101
- } catch (err) {}
97
+ type: 'presets',
98
+ name: presetFile
99
+ };
100
+ }
101
+
102
+ if (managerFile || registerFile || previewFile || presetFile) {
103
+ var managerEntries = [];
104
+
105
+ if (managerFile) {
106
+ managerEntries.push(managerFile);
107
+ } // register file is the old way of registering addons
108
+
109
+
110
+ if (!managerFile && registerFile && !presetFile) {
111
+ managerEntries.push(registerFile);
112
+ }
113
+
114
+ return _objectSpread(_objectSpread(_objectSpread({
115
+ type: 'virtual',
116
+ name: path
117
+ }, managerEntries.length ? {
118
+ managerEntries: managerEntries
119
+ } : {}), previewFile ? {
120
+ previewAnnotations: [previewFile]
121
+ } : {}), presetFile ? {
122
+ presets: [{
123
+ name: presetFile,
124
+ options: options
125
+ }]
126
+ } : {});
127
+ }
102
128
 
103
129
  return {
104
- name: resolveFrom(configDir, name),
105
- type: 'presets'
130
+ type: 'presets',
131
+ name: resolved
106
132
  };
107
133
  };
108
134
 
@@ -110,31 +136,16 @@ var map = function ({
110
136
  configDir: configDir
111
137
  }) {
112
138
  return function (item) {
113
- try {
114
- if (isObject(item)) {
115
- var _resolveAddonName = resolveAddonName(configDir, item.name),
116
- _name = _resolveAddonName.name;
139
+ var options = isObject(item) ? item.options || undefined : undefined;
140
+ var name = isObject(item) ? item.name : item;
117
141
 
118
- return _objectSpread(_objectSpread({}, item), {}, {
119
- name: _name
120
- });
121
- }
122
-
123
- var _resolveAddonName2 = resolveAddonName(configDir, item),
124
- name = _resolveAddonName2.name,
125
- type = _resolveAddonName2.type;
126
-
127
- if (type === 'managerEntries') {
128
- return {
129
- name: `${name}_additionalManagerEntries`,
130
- type: type,
131
- managerEntries: [name]
132
- };
133
- }
134
-
135
- return resolveAddonName(configDir, name);
142
+ try {
143
+ var resolved = resolveAddonName(configDir, name, options);
144
+ return _objectSpread(_objectSpread({}, options ? {
145
+ options: options
146
+ } : {}), resolved);
136
147
  } catch (err) {
137
- logger.error(`Addon value should end in /register OR it should be a valid preset https://storybook.js.org/docs/react/addons/writing-presets/\n${item}`);
148
+ logger.error(`Addon value should end in /manager or /preview or /register OR it should be a valid preset https://storybook.js.org/docs/react/addons/writing-presets/\n${item}`);
138
149
  }
139
150
 
140
151
  return undefined;
@@ -150,9 +161,9 @@ function interopRequireDefault(filePath) {
150
161
  }
151
162
 
152
163
  function getContent(input) {
153
- if (input.type === 'managerEntries') {
164
+ if (input.type === 'virtual') {
154
165
  var type = input.type,
155
- _name2 = input.name,
166
+ _name = input.name,
156
167
  rest = _objectWithoutProperties(input, _excluded);
157
168
 
158
169
  return rest;
@@ -0,0 +1,15 @@
1
+ import resolveFrom from 'resolve-from';
2
+ export var safeResolveFrom = function (path, file) {
3
+ try {
4
+ return resolveFrom(path, file);
5
+ } catch (e) {
6
+ return undefined;
7
+ }
8
+ };
9
+ export var safeResolve = function (file) {
10
+ try {
11
+ return require.resolve(file);
12
+ } catch (e) {
13
+ return undefined;
14
+ }
15
+ };
@@ -4,8 +4,8 @@ export declare function filterPresetsConfig(presetsConfig: PresetConfig[]): Pres
4
4
  * Parse an addon into either a managerEntries or a preset. Throw on invalid input.
5
5
  *
6
6
  * Valid inputs:
7
- * - '@storybook/addon-actions/register'
8
- * => { type: 'managerEntries', item }
7
+ * - '@storybook/addon-actions/manager'
8
+ * => { type: 'virtual', item }
9
9
  *
10
10
  * - '@storybook/addon-docs/preset'
11
11
  * => { type: 'presets', item }
@@ -16,10 +16,21 @@ export declare function filterPresetsConfig(presetsConfig: PresetConfig[]): Pres
16
16
  * - { name: '@storybook/addon-docs(/preset)?', options: { ... } }
17
17
  * => { type: 'presets', item: { name: '@storybook/addon-docs/preset', options } }
18
18
  */
19
- export declare const resolveAddonName: (configDir: string, name: string) => {
19
+ interface ResolvedAddonPreset {
20
+ type: 'presets';
20
21
  name: string;
21
- type: string;
22
- };
22
+ }
23
+ interface ResolvedAddonVirtual {
24
+ type: 'virtual';
25
+ name: string;
26
+ managerEntries?: string[];
27
+ previewAnnotations?: string[];
28
+ presets?: (string | {
29
+ name: string;
30
+ options?: any;
31
+ })[];
32
+ }
33
+ export declare const resolveAddonName: (configDir: string, name: string, options: any) => ResolvedAddonPreset | ResolvedAddonVirtual;
23
34
  export declare function loadPreset(input: PresetConfig, level: number, storybookOptions: InterPresetOptions): LoadedPreset[];
24
35
  declare type InterPresetOptions = Pick<CLIOptions & LoadOptions & BuilderOptions, Exclude<keyof (CLIOptions & LoadOptions & BuilderOptions), 'frameworkPresets'>>;
25
36
  export declare function getPresets(presets: PresetConfig[], storybookOptions: InterPresetOptions): Presets;
@@ -354,7 +354,13 @@ export interface StorybookConfig {
354
354
  webpackFinal?: (config: Configuration, options: Options) => Configuration | Promise<Configuration>;
355
355
  /**
356
356
  * Add additional scripts to run in the preview a la `.storybook/preview.js`
357
+ *
358
+ * @deprecated use `previewAnnotations` or `/preview.js` file instead
357
359
  */
358
360
  config?: (entries: Entry[], options: Options) => Entry[];
361
+ /**
362
+ * Add additional scripts to run in the preview a la `.storybook/preview.js`
363
+ */
364
+ previewAnnotations?: (entries: Entry[], options: Options) => Entry[];
359
365
  }
360
366
  export {};
@@ -0,0 +1,2 @@
1
+ export declare const safeResolveFrom: (path: string, file: string) => string;
2
+ export declare const safeResolve: (file: string) => string;
@@ -4,8 +4,8 @@ export declare function filterPresetsConfig(presetsConfig: PresetConfig[]): Pres
4
4
  * Parse an addon into either a managerEntries or a preset. Throw on invalid input.
5
5
  *
6
6
  * Valid inputs:
7
- * - '@storybook/addon-actions/register'
8
- * => { type: 'managerEntries', item }
7
+ * - '@storybook/addon-actions/manager'
8
+ * => { type: 'virtual', item }
9
9
  *
10
10
  * - '@storybook/addon-docs/preset'
11
11
  * => { type: 'presets', item }
@@ -16,10 +16,21 @@ export declare function filterPresetsConfig(presetsConfig: PresetConfig[]): Pres
16
16
  * - { name: '@storybook/addon-docs(/preset)?', options: { ... } }
17
17
  * => { type: 'presets', item: { name: '@storybook/addon-docs/preset', options } }
18
18
  */
19
- export declare const resolveAddonName: (configDir: string, name: string) => {
19
+ interface ResolvedAddonPreset {
20
+ type: 'presets';
20
21
  name: string;
21
- type: string;
22
- };
22
+ }
23
+ interface ResolvedAddonVirtual {
24
+ type: 'virtual';
25
+ name: string;
26
+ managerEntries?: string[];
27
+ previewAnnotations?: string[];
28
+ presets?: (string | {
29
+ name: string;
30
+ options?: any;
31
+ })[];
32
+ }
33
+ export declare const resolveAddonName: (configDir: string, name: string, options: any) => ResolvedAddonPreset | ResolvedAddonVirtual;
23
34
  export declare function loadPreset(input: PresetConfig, level: number, storybookOptions: InterPresetOptions): LoadedPreset[];
24
35
  declare type InterPresetOptions = Omit<CLIOptions & LoadOptions & BuilderOptions, 'frameworkPresets'>;
25
36
  export declare function getPresets(presets: PresetConfig[], storybookOptions: InterPresetOptions): Presets;
@@ -350,7 +350,13 @@ export interface StorybookConfig {
350
350
  webpackFinal?: (config: Configuration, options: Options) => Configuration | Promise<Configuration>;
351
351
  /**
352
352
  * Add additional scripts to run in the preview a la `.storybook/preview.js`
353
+ *
354
+ * @deprecated use `previewAnnotations` or `/preview.js` file instead
353
355
  */
354
356
  config?: (entries: Entry[], options: Options) => Entry[];
357
+ /**
358
+ * Add additional scripts to run in the preview a la `.storybook/preview.js`
359
+ */
360
+ previewAnnotations?: (entries: Entry[], options: Options) => Entry[];
355
361
  }
356
362
  export {};
@@ -0,0 +1,2 @@
1
+ export declare const safeResolveFrom: (path: string, file: string) => string;
2
+ export declare const safeResolve: (file: string) => string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/core-common",
3
- "version": "6.5.0-alpha.52",
3
+ "version": "6.5.0-alpha.53",
4
4
  "description": "Storybook framework-agnostic API",
5
5
  "keywords": [
6
6
  "storybook"
@@ -62,7 +62,7 @@
62
62
  "@babel/preset-react": "^7.12.10",
63
63
  "@babel/preset-typescript": "^7.12.7",
64
64
  "@babel/register": "^7.12.1",
65
- "@storybook/node-logger": "6.5.0-alpha.52",
65
+ "@storybook/node-logger": "6.5.0-alpha.53",
66
66
  "@storybook/semver": "^7.3.2",
67
67
  "@types/node": "^14.0.10 || ^16.0.0",
68
68
  "@types/pretty-hrtime": "^1.0.0",
@@ -111,6 +111,6 @@
111
111
  "publishConfig": {
112
112
  "access": "public"
113
113
  },
114
- "gitHead": "863b3811b24a4703645a09286059bc6d95bd2e65",
114
+ "gitHead": "652768b3ff83a355651d5636ccc4d78bee2cdbf9",
115
115
  "sbmodern": "dist/modern/index.js"
116
116
  }