@storybook/core-common 6.5.0-alpha.50 → 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.
- package/dist/cjs/presets.js +67 -56
- package/dist/cjs/utils/safeResolve.js +30 -0
- package/dist/esm/presets.js +66 -55
- package/dist/esm/utils/safeResolve.js +15 -0
- package/dist/modern/presets.js +66 -55
- package/dist/modern/utils/safeResolve.js +15 -0
- package/dist/ts3.4/presets.d.ts +16 -5
- package/dist/ts3.4/types.d.ts +14 -0
- package/dist/ts3.4/utils/safeResolve.d.ts +2 -0
- package/dist/ts3.9/presets.d.ts +16 -5
- package/dist/ts3.9/types.d.ts +14 -0
- package/dist/ts3.9/utils/safeResolve.d.ts +2 -0
- package/package.json +3 -3
- package/templates/base-preview-head.html +14 -0
package/dist/cjs/presets.js
CHANGED
|
@@ -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/
|
|
75
|
-
* => { type: '
|
|
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
|
|
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 (
|
|
92
|
+
if (name.match(/\/(manager|register(-panel)?)(\.(js|ts|tsx|jsx))?$/)) {
|
|
101
93
|
return {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
94
|
+
type: 'virtual',
|
|
95
|
+
name: name,
|
|
96
|
+
managerEntries: [resolved]
|
|
105
97
|
};
|
|
106
98
|
}
|
|
107
99
|
|
|
108
|
-
|
|
100
|
+
if (name.match(/\/(preset)(\.(js|ts|tsx|jsx))?$/)) {
|
|
109
101
|
return {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
};
|
|
113
|
-
}
|
|
102
|
+
type: 'presets',
|
|
103
|
+
name: resolved
|
|
104
|
+
};
|
|
105
|
+
}
|
|
114
106
|
|
|
115
|
-
|
|
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
|
-
|
|
118
|
-
|
|
119
|
-
};
|
|
120
|
-
}
|
|
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
|
-
|
|
124
|
-
|
|
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
|
-
|
|
135
|
-
|
|
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
|
-
|
|
140
|
-
|
|
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 === '
|
|
185
|
+
if (input.type === 'virtual') {
|
|
175
186
|
var type = input.type,
|
|
176
|
-
|
|
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;
|
package/dist/esm/presets.js
CHANGED
|
@@ -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/
|
|
56
|
-
* => { type: '
|
|
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
|
|
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.
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
75
|
+
type: 'virtual',
|
|
76
|
+
name: name,
|
|
77
|
+
managerEntries: [resolved]
|
|
86
78
|
};
|
|
87
79
|
}
|
|
88
80
|
|
|
89
|
-
|
|
81
|
+
if (name.match(/\/(preset)(\.(js|ts|tsx|jsx))?$/)) {
|
|
90
82
|
return {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
};
|
|
94
|
-
}
|
|
83
|
+
type: 'presets',
|
|
84
|
+
name: resolved
|
|
85
|
+
};
|
|
86
|
+
}
|
|
95
87
|
|
|
96
|
-
|
|
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
|
-
|
|
99
|
-
|
|
100
|
-
};
|
|
101
|
-
}
|
|
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
|
-
|
|
105
|
-
|
|
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
|
-
|
|
114
|
-
|
|
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
|
-
|
|
119
|
-
|
|
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 === '
|
|
164
|
+
if (input.type === 'virtual') {
|
|
154
165
|
var type = input.type,
|
|
155
|
-
|
|
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
|
+
};
|
package/dist/modern/presets.js
CHANGED
|
@@ -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/
|
|
56
|
-
* => { type: '
|
|
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
|
|
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.
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
75
|
+
type: 'virtual',
|
|
76
|
+
name: name,
|
|
77
|
+
managerEntries: [resolved]
|
|
86
78
|
};
|
|
87
79
|
}
|
|
88
80
|
|
|
89
|
-
|
|
81
|
+
if (name.match(/\/(preset)(\.(js|ts|tsx|jsx))?$/)) {
|
|
90
82
|
return {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
};
|
|
94
|
-
}
|
|
83
|
+
type: 'presets',
|
|
84
|
+
name: resolved
|
|
85
|
+
};
|
|
86
|
+
}
|
|
95
87
|
|
|
96
|
-
|
|
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
|
-
|
|
99
|
-
|
|
100
|
-
};
|
|
101
|
-
}
|
|
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
|
-
|
|
105
|
-
|
|
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
|
-
|
|
114
|
-
|
|
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
|
-
|
|
119
|
-
|
|
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 === '
|
|
164
|
+
if (input.type === 'virtual') {
|
|
154
165
|
var type = input.type,
|
|
155
|
-
|
|
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
|
+
};
|
package/dist/ts3.4/presets.d.ts
CHANGED
|
@@ -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/
|
|
8
|
-
* => { type: '
|
|
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
|
-
|
|
19
|
+
interface ResolvedAddonPreset {
|
|
20
|
+
type: 'presets';
|
|
20
21
|
name: string;
|
|
21
|
-
|
|
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;
|
package/dist/ts3.4/types.d.ts
CHANGED
|
@@ -39,6 +39,14 @@ export interface CoreConfig {
|
|
|
39
39
|
builder: BuilderConfig;
|
|
40
40
|
disableWebpackDefaults?: boolean;
|
|
41
41
|
channelOptions?: Partial<TelejsonOptions>;
|
|
42
|
+
/**
|
|
43
|
+
* enable CORS headings to run document in a "secure context"
|
|
44
|
+
* see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements
|
|
45
|
+
* This enables these headers in development-mode:
|
|
46
|
+
* Cross-Origin-Opener-Policy: same-origin
|
|
47
|
+
* Cross-Origin-Embedder-Policy: require-corp
|
|
48
|
+
*/
|
|
49
|
+
crossOriginIsolated?: boolean;
|
|
42
50
|
}
|
|
43
51
|
interface DirectoryMapping {
|
|
44
52
|
from: string;
|
|
@@ -346,7 +354,13 @@ export interface StorybookConfig {
|
|
|
346
354
|
webpackFinal?: (config: Configuration, options: Options) => Configuration | Promise<Configuration>;
|
|
347
355
|
/**
|
|
348
356
|
* Add additional scripts to run in the preview a la `.storybook/preview.js`
|
|
357
|
+
*
|
|
358
|
+
* @deprecated use `previewAnnotations` or `/preview.js` file instead
|
|
349
359
|
*/
|
|
350
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[];
|
|
351
365
|
}
|
|
352
366
|
export {};
|
package/dist/ts3.9/presets.d.ts
CHANGED
|
@@ -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/
|
|
8
|
-
* => { type: '
|
|
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
|
-
|
|
19
|
+
interface ResolvedAddonPreset {
|
|
20
|
+
type: 'presets';
|
|
20
21
|
name: string;
|
|
21
|
-
|
|
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;
|
package/dist/ts3.9/types.d.ts
CHANGED
|
@@ -39,6 +39,14 @@ export interface CoreConfig {
|
|
|
39
39
|
builder: BuilderConfig;
|
|
40
40
|
disableWebpackDefaults?: boolean;
|
|
41
41
|
channelOptions?: Partial<TelejsonOptions>;
|
|
42
|
+
/**
|
|
43
|
+
* enable CORS headings to run document in a "secure context"
|
|
44
|
+
* see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements
|
|
45
|
+
* This enables these headers in development-mode:
|
|
46
|
+
* Cross-Origin-Opener-Policy: same-origin
|
|
47
|
+
* Cross-Origin-Embedder-Policy: require-corp
|
|
48
|
+
*/
|
|
49
|
+
crossOriginIsolated?: boolean;
|
|
42
50
|
}
|
|
43
51
|
interface DirectoryMapping {
|
|
44
52
|
from: string;
|
|
@@ -342,7 +350,13 @@ export interface StorybookConfig {
|
|
|
342
350
|
webpackFinal?: (config: Configuration, options: Options) => Configuration | Promise<Configuration>;
|
|
343
351
|
/**
|
|
344
352
|
* Add additional scripts to run in the preview a la `.storybook/preview.js`
|
|
353
|
+
*
|
|
354
|
+
* @deprecated use `previewAnnotations` or `/preview.js` file instead
|
|
345
355
|
*/
|
|
346
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[];
|
|
347
361
|
}
|
|
348
362
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@storybook/core-common",
|
|
3
|
-
"version": "6.5.0-alpha.
|
|
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.
|
|
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": "
|
|
114
|
+
"gitHead": "652768b3ff83a355651d5636ccc4d78bee2cdbf9",
|
|
115
115
|
"sbmodern": "dist/modern/index.js"
|
|
116
116
|
}
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
<base target="_parent" />
|
|
2
2
|
|
|
3
3
|
<style>
|
|
4
|
+
/* While we aren't showing the main block yet, but still preparing, we want everything the user
|
|
5
|
+
has rendered, which may or may not be in #root, to be display none */
|
|
6
|
+
.sb-show-preparing-story:not(.sb-show-main) > :not(.sb-preparing-story) {
|
|
7
|
+
display: none;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.sb-show-preparing-docs:not(.sb-show-main) > :not(.sb-preparing-docs) {
|
|
11
|
+
display: none;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/* Hide our own blocks when we aren't supposed to be showing them */
|
|
4
15
|
:not(.sb-show-preparing-story) > .sb-preparing-story,
|
|
5
16
|
:not(.sb-show-preparing-docs) > .sb-preparing-docs,
|
|
6
17
|
:not(.sb-show-nopreview) > .sb-nopreview,
|
|
@@ -140,6 +151,9 @@
|
|
|
140
151
|
.sb-preparing-story,
|
|
141
152
|
.sb-preparing-docs {
|
|
142
153
|
background-color: white;
|
|
154
|
+
/* Maximum possible z-index. It would be better to use stacking contexts to ensure it's always
|
|
155
|
+
on top, but this isn't possible as it would require making CSS changes that could affect user code */
|
|
156
|
+
z-index: 2147483647;
|
|
143
157
|
}
|
|
144
158
|
|
|
145
159
|
.sb-loader {
|