@storybook/core-webpack 0.0.0-pr-23609-sha-f47ef339
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/README.md +9 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.js +42 -0
- package/dist/index.mjs +49 -0
- package/jest.config.js +7 -0
- package/package.json +66 -0
package/README.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Storybook Core-Common
|
|
2
|
+
|
|
3
|
+
Common utilities used across `@storybook/core-server` (manager UI configuration) and `@storybook/builder-webpack{4,5}` (preview configuration).
|
|
4
|
+
|
|
5
|
+
This is a lot of code extracted for convenience, not because it made sense.
|
|
6
|
+
|
|
7
|
+
Supporting multiple version of webpack and this duplicating a large portion of code that was never meant to be generic caused this.
|
|
8
|
+
|
|
9
|
+
At some point we'll refactor this, it's likely a lot of this code is dead or barely used.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { StorybookConfig as StorybookConfig$1, Options, NormalizedStoriesSpecifier } from '@storybook/types';
|
|
2
|
+
export { BuilderResult, Options, Preset, TypescriptOptions } from '@storybook/types';
|
|
3
|
+
|
|
4
|
+
type RulesConfig = any;
|
|
5
|
+
type ModuleConfig = {
|
|
6
|
+
rules?: RulesConfig[];
|
|
7
|
+
};
|
|
8
|
+
type ResolveConfig = {
|
|
9
|
+
extensions?: string[];
|
|
10
|
+
mainFields?: (string | string[])[] | undefined;
|
|
11
|
+
alias?: any;
|
|
12
|
+
};
|
|
13
|
+
interface WebpackConfiguration {
|
|
14
|
+
plugins?: any[];
|
|
15
|
+
module?: ModuleConfig;
|
|
16
|
+
resolve?: ResolveConfig;
|
|
17
|
+
optimization?: any;
|
|
18
|
+
devtool?: false | string;
|
|
19
|
+
}
|
|
20
|
+
type StorybookConfig<TWebpackConfiguration = WebpackConfiguration> = StorybookConfig$1 & {
|
|
21
|
+
/**
|
|
22
|
+
* Modify or return a custom Webpack config after the Storybook's default configuration
|
|
23
|
+
* has run (mostly used by addons).
|
|
24
|
+
*/
|
|
25
|
+
webpack?: (config: TWebpackConfiguration, options: Options) => TWebpackConfiguration | Promise<TWebpackConfiguration>;
|
|
26
|
+
/**
|
|
27
|
+
* Modify or return a custom Webpack config after every addon has run.
|
|
28
|
+
*/
|
|
29
|
+
webpackFinal?: (config: TWebpackConfiguration, options: Options) => TWebpackConfiguration | Promise<TWebpackConfiguration>;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
declare const loadCustomWebpackConfig: (configDir: string) => any;
|
|
33
|
+
|
|
34
|
+
declare const checkWebpackVersion: (webpack: {
|
|
35
|
+
version?: string;
|
|
36
|
+
}, specifier: string, caption: string) => void;
|
|
37
|
+
|
|
38
|
+
declare function mergeConfigs(config: WebpackConfiguration, customConfig: WebpackConfiguration): WebpackConfiguration;
|
|
39
|
+
|
|
40
|
+
declare function webpackIncludeRegexp(specifier: NormalizedStoriesSpecifier): RegExp;
|
|
41
|
+
declare function toImportFnPart(specifier: NormalizedStoriesSpecifier): string;
|
|
42
|
+
declare function toImportFn(stories: NormalizedStoriesSpecifier[], { needPipelinedImport }?: {
|
|
43
|
+
needPipelinedImport?: boolean;
|
|
44
|
+
}): string;
|
|
45
|
+
|
|
46
|
+
declare const toRequireContext: (specifier: NormalizedStoriesSpecifier) => {
|
|
47
|
+
path: string;
|
|
48
|
+
recursive: boolean;
|
|
49
|
+
match: RegExp;
|
|
50
|
+
};
|
|
51
|
+
declare const toRequireContextString: (specifier: NormalizedStoriesSpecifier) => string;
|
|
52
|
+
|
|
53
|
+
export { ModuleConfig, ResolveConfig, RulesConfig, StorybookConfig, WebpackConfiguration, checkWebpackVersion, loadCustomWebpackConfig, mergeConfigs, toImportFn, toImportFnPart, toRequireContext, toRequireContextString, webpackIncludeRegexp };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var src_exports={};__export(src_exports,{checkWebpackVersion:()=>checkWebpackVersion,loadCustomWebpackConfig:()=>loadCustomWebpackConfig,mergeConfigs:()=>mergeConfigs,toImportFn:()=>toImportFn,toImportFnPart:()=>toImportFnPart,toRequireContext:()=>toRequireContext,toRequireContextString:()=>toRequireContextString,webpackIncludeRegexp:()=>webpackIncludeRegexp});module.exports=__toCommonJS(src_exports);var import_path=__toESM(require("path")),import_core_common=require("@storybook/core-common"),webpackConfigs=["webpack.config","webpackfile"],loadCustomWebpackConfig=configDir=>(0,import_core_common.serverRequire)(webpackConfigs.map(configName=>import_path.default.resolve(configDir,configName)));var import_node_logger=require("@storybook/node-logger"),import_ts_dedent=require("ts-dedent"),checkWebpackVersion=(webpack,specifier,caption)=>{if(!webpack.version){import_node_logger.logger.info("Skipping webpack version check, no version available");return}webpack.version!==specifier&&import_node_logger.logger.warn(import_ts_dedent.dedent`
|
|
2
|
+
Unexpected webpack version in ${caption}:
|
|
3
|
+
- Received '${webpack.version}'
|
|
4
|
+
- Expected '${specifier}'
|
|
5
|
+
|
|
6
|
+
If you're using Webpack 5 in SB6.2 and upgrading, consider: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#webpack-5-manager-build
|
|
7
|
+
|
|
8
|
+
For more info about Webpack 5 support: https://gist.github.com/shilman/8856ea1786dcd247139b47b270912324#troubleshooting
|
|
9
|
+
`)};function mergePluginsField(defaultPlugins=[],customPlugins=[]){return[...defaultPlugins,...customPlugins]}function mergeRulesField(defaultRules=[],customRules=[]){return[...defaultRules,...customRules]}function mergeExtensionsField({extensions:defaultExtensions=[]},{extensions:customExtensions=[]}){return[...defaultExtensions,...customExtensions]}function mergeAliasField({alias:defaultAlias={}},{alias:customAlias={}}){return{...defaultAlias,...customAlias}}function mergeModuleField(a,b){return{...a,...b,rules:mergeRulesField(a.rules||[],b.rules||[])}}function mergeResolveField({resolve:defaultResolve={}},{resolve:customResolve={}}){return{...defaultResolve,...customResolve,alias:mergeAliasField(defaultResolve,customResolve),extensions:mergeExtensionsField(defaultResolve,customResolve)}}function mergeOptimizationField({optimization:defaultOptimization={}},{optimization:customOptimization={}}){return{...defaultOptimization,...customOptimization}}function mergeConfigs(config,customConfig){return{...customConfig,...config,devtool:customConfig.devtool||config.devtool,plugins:mergePluginsField(config.plugins,customConfig.plugins),module:mergeModuleField(config.module||{},customConfig.module||{}),resolve:mergeResolveField(config,customConfig),optimization:mergeOptimizationField(config,customConfig)}}var import_ts_dedent2=require("ts-dedent"),import_core_common2=require("@storybook/core-common");function importPipeline(){let importGate=Promise.resolve();return async importFn=>{await importGate;let moduleExportsPromise=importFn();return importGate=importGate.then(async()=>{await moduleExportsPromise}),moduleExportsPromise}}function webpackIncludeRegexp(specifier){let{directory,files}=specifier,directoryWithoutLeadingDots=directory.replace(/^(\.+\/)+/,"/"),webpackIncludeGlob=[".",".."].includes(directory)?files:`${directoryWithoutLeadingDots}/${files}`,webpackIncludeRegexpWithCaret=(0,import_core_common2.globToRegexp)(webpackIncludeGlob);return new RegExp(webpackIncludeRegexpWithCaret.source.replace(/^\^/,""))}function toImportFnPart(specifier){let{directory,importPathMatcher}=specifier;return import_ts_dedent2.dedent`
|
|
10
|
+
async (path) => {
|
|
11
|
+
if (!${importPathMatcher}.exec(path)) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const pathRemainder = path.substring(${directory.length+1});
|
|
16
|
+
return import(
|
|
17
|
+
/* webpackChunkName: "[request]" */
|
|
18
|
+
/* webpackInclude: ${webpackIncludeRegexp(specifier)} */
|
|
19
|
+
'${directory}/' + pathRemainder
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
`}function toImportFn(stories,{needPipelinedImport}={}){let pipelinedImport="const pipeline = (x) => x();";return needPipelinedImport&&(pipelinedImport=`
|
|
24
|
+
const importPipeline = ${importPipeline};
|
|
25
|
+
const pipeline = importPipeline();
|
|
26
|
+
`),import_ts_dedent2.dedent`
|
|
27
|
+
${pipelinedImport}
|
|
28
|
+
|
|
29
|
+
const importers = [
|
|
30
|
+
${stories.map(toImportFnPart).join(`,
|
|
31
|
+
`)}
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
export async function importFn(path) {
|
|
35
|
+
for (let i = 0; i < importers.length; i++) {
|
|
36
|
+
const moduleExports = await pipeline(() => importers[i](path));
|
|
37
|
+
if (moduleExports) {
|
|
38
|
+
return moduleExports;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
`}var import_core_common3=require("@storybook/core-common"),toRequireContext=specifier=>{let{directory,files}=specifier,match=(0,import_core_common3.globToRegexp)(`./${files}`);return{path:directory,recursive:files.includes("**")||files.split("/").length>1,match}},toRequireContextString=specifier=>{let{path:p,recursive:r,match:m}=toRequireContext(specifier);return`require.context('${p}', ${r}, ${m})`};0&&(module.exports={checkWebpackVersion,loadCustomWebpackConfig,mergeConfigs,toImportFn,toImportFnPart,toRequireContext,toRequireContextString,webpackIncludeRegexp});
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { serverRequire, globToRegexp } from '@storybook/core-common';
|
|
3
|
+
import { logger } from '@storybook/node-logger';
|
|
4
|
+
import { dedent } from 'ts-dedent';
|
|
5
|
+
|
|
6
|
+
var webpackConfigs=["webpack.config","webpackfile"],loadCustomWebpackConfig=configDir=>serverRequire(webpackConfigs.map(configName=>path.resolve(configDir,configName)));var checkWebpackVersion=(webpack,specifier,caption)=>{if(!webpack.version){logger.info("Skipping webpack version check, no version available");return}webpack.version!==specifier&&logger.warn(dedent`
|
|
7
|
+
Unexpected webpack version in ${caption}:
|
|
8
|
+
- Received '${webpack.version}'
|
|
9
|
+
- Expected '${specifier}'
|
|
10
|
+
|
|
11
|
+
If you're using Webpack 5 in SB6.2 and upgrading, consider: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#webpack-5-manager-build
|
|
12
|
+
|
|
13
|
+
For more info about Webpack 5 support: https://gist.github.com/shilman/8856ea1786dcd247139b47b270912324#troubleshooting
|
|
14
|
+
`);};function mergePluginsField(defaultPlugins=[],customPlugins=[]){return [...defaultPlugins,...customPlugins]}function mergeRulesField(defaultRules=[],customRules=[]){return [...defaultRules,...customRules]}function mergeExtensionsField({extensions:defaultExtensions=[]},{extensions:customExtensions=[]}){return [...defaultExtensions,...customExtensions]}function mergeAliasField({alias:defaultAlias={}},{alias:customAlias={}}){return {...defaultAlias,...customAlias}}function mergeModuleField(a,b){return {...a,...b,rules:mergeRulesField(a.rules||[],b.rules||[])}}function mergeResolveField({resolve:defaultResolve={}},{resolve:customResolve={}}){return {...defaultResolve,...customResolve,alias:mergeAliasField(defaultResolve,customResolve),extensions:mergeExtensionsField(defaultResolve,customResolve)}}function mergeOptimizationField({optimization:defaultOptimization={}},{optimization:customOptimization={}}){return {...defaultOptimization,...customOptimization}}function mergeConfigs(config,customConfig){return {...customConfig,...config,devtool:customConfig.devtool||config.devtool,plugins:mergePluginsField(config.plugins,customConfig.plugins),module:mergeModuleField(config.module||{},customConfig.module||{}),resolve:mergeResolveField(config,customConfig),optimization:mergeOptimizationField(config,customConfig)}}function importPipeline(){let importGate=Promise.resolve();return async importFn=>{await importGate;let moduleExportsPromise=importFn();return importGate=importGate.then(async()=>{await moduleExportsPromise;}),moduleExportsPromise}}function webpackIncludeRegexp(specifier){let{directory,files}=specifier,directoryWithoutLeadingDots=directory.replace(/^(\.+\/)+/,"/"),webpackIncludeGlob=[".",".."].includes(directory)?files:`${directoryWithoutLeadingDots}/${files}`,webpackIncludeRegexpWithCaret=globToRegexp(webpackIncludeGlob);return new RegExp(webpackIncludeRegexpWithCaret.source.replace(/^\^/,""))}function toImportFnPart(specifier){let{directory,importPathMatcher}=specifier;return dedent`
|
|
15
|
+
async (path) => {
|
|
16
|
+
if (!${importPathMatcher}.exec(path)) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const pathRemainder = path.substring(${directory.length+1});
|
|
21
|
+
return import(
|
|
22
|
+
/* webpackChunkName: "[request]" */
|
|
23
|
+
/* webpackInclude: ${webpackIncludeRegexp(specifier)} */
|
|
24
|
+
'${directory}/' + pathRemainder
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
`}function toImportFn(stories,{needPipelinedImport}={}){let pipelinedImport="const pipeline = (x) => x();";return needPipelinedImport&&(pipelinedImport=`
|
|
29
|
+
const importPipeline = ${importPipeline};
|
|
30
|
+
const pipeline = importPipeline();
|
|
31
|
+
`),dedent`
|
|
32
|
+
${pipelinedImport}
|
|
33
|
+
|
|
34
|
+
const importers = [
|
|
35
|
+
${stories.map(toImportFnPart).join(`,
|
|
36
|
+
`)}
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
export async function importFn(path) {
|
|
40
|
+
for (let i = 0; i < importers.length; i++) {
|
|
41
|
+
const moduleExports = await pipeline(() => importers[i](path));
|
|
42
|
+
if (moduleExports) {
|
|
43
|
+
return moduleExports;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
`}var toRequireContext=specifier=>{let{directory,files}=specifier,match=globToRegexp(`./${files}`);return {path:directory,recursive:files.includes("**")||files.split("/").length>1,match}},toRequireContextString=specifier=>{let{path:p,recursive:r,match:m}=toRequireContext(specifier);return `require.context('${p}', ${r}, ${m})`};
|
|
48
|
+
|
|
49
|
+
export { checkWebpackVersion, loadCustomWebpackConfig, mergeConfigs, toImportFn, toImportFnPart, toRequireContext, toRequireContextString, webpackIncludeRegexp };
|
package/jest.config.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@storybook/core-webpack",
|
|
3
|
+
"version": "0.0.0-pr-23609-sha-f47ef339",
|
|
4
|
+
"description": "Storybook framework-agnostic API",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"storybook"
|
|
7
|
+
],
|
|
8
|
+
"homepage": "https://github.com/storybookjs/storybook/tree/next/code/lib/core-webpack",
|
|
9
|
+
"bugs": {
|
|
10
|
+
"url": "https://github.com/storybookjs/storybook/issues"
|
|
11
|
+
},
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "https://github.com/storybookjs/storybook.git",
|
|
15
|
+
"directory": "code/lib/core-webpack"
|
|
16
|
+
},
|
|
17
|
+
"funding": {
|
|
18
|
+
"type": "opencollective",
|
|
19
|
+
"url": "https://opencollective.com/storybook"
|
|
20
|
+
},
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"exports": {
|
|
23
|
+
".": {
|
|
24
|
+
"types": "./dist/index.d.ts",
|
|
25
|
+
"node": "./dist/index.js",
|
|
26
|
+
"require": "./dist/index.js",
|
|
27
|
+
"import": "./dist/index.mjs"
|
|
28
|
+
},
|
|
29
|
+
"./package.json": "./package.json"
|
|
30
|
+
},
|
|
31
|
+
"main": "dist/index.js",
|
|
32
|
+
"module": "dist/index.mjs",
|
|
33
|
+
"types": "dist/index.d.ts",
|
|
34
|
+
"files": [
|
|
35
|
+
"dist/**/*",
|
|
36
|
+
"templates/**/*",
|
|
37
|
+
"README.md",
|
|
38
|
+
"*.js",
|
|
39
|
+
"*.d.ts"
|
|
40
|
+
],
|
|
41
|
+
"scripts": {
|
|
42
|
+
"check": "../../../scripts/prepare/check.ts",
|
|
43
|
+
"prep": "../../../scripts/prepare/bundle.ts"
|
|
44
|
+
},
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@storybook/core-common": "0.0.0-pr-23609-sha-f47ef339",
|
|
47
|
+
"@storybook/node-logger": "0.0.0-pr-23609-sha-f47ef339",
|
|
48
|
+
"@storybook/types": "0.0.0-pr-23609-sha-f47ef339",
|
|
49
|
+
"@types/node": "^16.0.0",
|
|
50
|
+
"ts-dedent": "^2.0.0"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"typescript": "~4.9.3",
|
|
54
|
+
"webpack": "5"
|
|
55
|
+
},
|
|
56
|
+
"publishConfig": {
|
|
57
|
+
"access": "public"
|
|
58
|
+
},
|
|
59
|
+
"bundler": {
|
|
60
|
+
"entries": [
|
|
61
|
+
"./src/index.ts"
|
|
62
|
+
],
|
|
63
|
+
"platform": "node"
|
|
64
|
+
},
|
|
65
|
+
"gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17"
|
|
66
|
+
}
|