mirror of https://github.com/webpack/webpack.git
commit
abc825d58f
|
@ -90,7 +90,7 @@ or packaging just about any resource or asset.
|
||||||
|
|
||||||
### Get Started
|
### Get Started
|
||||||
|
|
||||||
Check out webpack's quick [**Get Started**](https://webpack.js.org/get-started/) guide and the [other guides](https://webpack.js.org/guides/).
|
Check out webpack's quick [**Get Started**](https://webpack.js.org/guides/getting-started) guide and the [other guides](https://webpack.js.org/guides/).
|
||||||
|
|
||||||
### Browser Compatibility
|
### Browser Compatibility
|
||||||
|
|
||||||
|
|
|
@ -90,8 +90,10 @@ jobs:
|
||||||
pool:
|
pool:
|
||||||
vmImage: ubuntu-16.04
|
vmImage: ubuntu-16.04
|
||||||
strategy:
|
strategy:
|
||||||
maxParallel: 3
|
maxParallel: 4
|
||||||
matrix:
|
matrix:
|
||||||
|
node-12:
|
||||||
|
node_version: ^12.2.0
|
||||||
node-10:
|
node-10:
|
||||||
node_version: ^10.10.0
|
node_version: ^10.10.0
|
||||||
node-8:
|
node-8:
|
||||||
|
@ -137,8 +139,10 @@ jobs:
|
||||||
pool:
|
pool:
|
||||||
vmImage: "macOS 10.13"
|
vmImage: "macOS 10.13"
|
||||||
strategy:
|
strategy:
|
||||||
maxParallel: 3
|
maxParallel: 4
|
||||||
matrix:
|
matrix:
|
||||||
|
node-12:
|
||||||
|
node_version: ^12.2.0
|
||||||
node-10:
|
node-10:
|
||||||
node_version: ^10.10.0
|
node_version: ^10.10.0
|
||||||
node-8:
|
node-8:
|
||||||
|
@ -184,8 +188,10 @@ jobs:
|
||||||
pool:
|
pool:
|
||||||
vmImage: vs2017-win2016
|
vmImage: vs2017-win2016
|
||||||
strategy:
|
strategy:
|
||||||
maxParallel: 3
|
maxParallel: 4
|
||||||
matrix:
|
matrix:
|
||||||
|
node-12:
|
||||||
|
node_version: ^12.2.0
|
||||||
node-10:
|
node-10:
|
||||||
node_version: ^10.10.0
|
node_version: ^10.10.0
|
||||||
node-8:
|
node-8:
|
||||||
|
|
|
@ -80,7 +80,7 @@ if (!cli.installed) {
|
||||||
)}".`
|
)}".`
|
||||||
);
|
);
|
||||||
|
|
||||||
let question = `Do you want to install 'webpack-cli' (yes/no): `;
|
const question = `Do you want to install 'webpack-cli' (yes/no): `;
|
||||||
|
|
||||||
const questionInterface = readLine.createInterface({
|
const questionInterface = readLine.createInterface({
|
||||||
input: process.stdin,
|
input: process.stdin,
|
||||||
|
|
10
lib/Chunk.js
10
lib/Chunk.js
|
@ -592,7 +592,15 @@ class Chunk {
|
||||||
};
|
};
|
||||||
|
|
||||||
if (includeDirectChildren) {
|
if (includeDirectChildren) {
|
||||||
addChildIdsByOrdersToMap(this);
|
const chunks = new Set();
|
||||||
|
for (const chunkGroup of this.groupsIterable) {
|
||||||
|
for (const chunk of chunkGroup.chunks) {
|
||||||
|
chunks.add(chunk);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (const chunk of chunks) {
|
||||||
|
addChildIdsByOrdersToMap(chunk);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const chunk of this.getAllAsyncChunks()) {
|
for (const chunk of this.getAllAsyncChunks()) {
|
||||||
|
|
|
@ -1943,6 +1943,9 @@ class JavascriptParser {
|
||||||
case "RestElement":
|
case "RestElement":
|
||||||
this.enterRestElement(pattern, onIdent);
|
this.enterRestElement(pattern, onIdent);
|
||||||
break;
|
break;
|
||||||
|
case "Property":
|
||||||
|
this.enterPattern(pattern.value, onIdent);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1957,7 +1960,7 @@ class JavascriptParser {
|
||||||
propIndex++
|
propIndex++
|
||||||
) {
|
) {
|
||||||
const prop = pattern.properties[propIndex];
|
const prop = pattern.properties[propIndex];
|
||||||
this.enterPattern(prop.value, onIdent);
|
this.enterPattern(prop, onIdent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,9 +107,10 @@ class NodeStuffPlugin {
|
||||||
setModuleConstant(expressionName, () => value);
|
setModuleConstant(expressionName, () => value);
|
||||||
|
|
||||||
const context = compiler.context;
|
const context = compiler.context;
|
||||||
|
if (localOptions.__filename) {
|
||||||
if (localOptions.__filename === "mock") {
|
if (localOptions.__filename === "mock") {
|
||||||
setConstant("__filename", "/index.js");
|
setConstant("__filename", "/index.js");
|
||||||
} else if (localOptions.__filename) {
|
} else {
|
||||||
setModuleConstant("__filename", module =>
|
setModuleConstant("__filename", module =>
|
||||||
path.relative(context, module.resource)
|
path.relative(context, module.resource)
|
||||||
);
|
);
|
||||||
|
@ -120,13 +121,15 @@ class NodeStuffPlugin {
|
||||||
if (!parser.state.module) return;
|
if (!parser.state.module) return;
|
||||||
const resource = parser.state.module.resource;
|
const resource = parser.state.module.resource;
|
||||||
const i = resource.indexOf("?");
|
const i = resource.indexOf("?");
|
||||||
return evaluateToString(i < 0 ? resource : resource.substr(0, i))(
|
return evaluateToString(
|
||||||
expr
|
i < 0 ? resource : resource.substr(0, i)
|
||||||
);
|
)(expr);
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
if (localOptions.__dirname) {
|
||||||
if (localOptions.__dirname === "mock") {
|
if (localOptions.__dirname === "mock") {
|
||||||
setConstant("__dirname", "/");
|
setConstant("__dirname", "/");
|
||||||
} else if (localOptions.__dirname) {
|
} else {
|
||||||
setModuleConstant("__dirname", module =>
|
setModuleConstant("__dirname", module =>
|
||||||
path.relative(context, module.context)
|
path.relative(context, module.context)
|
||||||
);
|
);
|
||||||
|
@ -137,6 +140,7 @@ class NodeStuffPlugin {
|
||||||
if (!parser.state.module) return;
|
if (!parser.state.module) return;
|
||||||
return evaluateToString(parser.state.module.context)(expr);
|
return evaluateToString(parser.state.module.context)(expr);
|
||||||
});
|
});
|
||||||
|
}
|
||||||
parser.hooks.expression
|
parser.hooks.expression
|
||||||
.for("require.main")
|
.for("require.main")
|
||||||
.tap(
|
.tap(
|
||||||
|
|
|
@ -303,6 +303,7 @@ class NormalModule extends Module {
|
||||||
rootContext: options.context,
|
rootContext: options.context,
|
||||||
webpack: true,
|
webpack: true,
|
||||||
sourceMap: !!this.useSourceMap,
|
sourceMap: !!this.useSourceMap,
|
||||||
|
mode: options.mode || "production",
|
||||||
_module: this,
|
_module: this,
|
||||||
_compilation: compilation,
|
_compilation: compilation,
|
||||||
_compiler: compilation.compiler,
|
_compiler: compilation.compiler,
|
||||||
|
|
|
@ -25,7 +25,6 @@ const RuntimePlugin = require("./RuntimePlugin");
|
||||||
const APIPlugin = require("./APIPlugin");
|
const APIPlugin = require("./APIPlugin");
|
||||||
const CompatibilityPlugin = require("./CompatibilityPlugin");
|
const CompatibilityPlugin = require("./CompatibilityPlugin");
|
||||||
const ConstPlugin = require("./ConstPlugin");
|
const ConstPlugin = require("./ConstPlugin");
|
||||||
const NodeStuffPlugin = require("./NodeStuffPlugin");
|
|
||||||
|
|
||||||
const TemplatedPathPlugin = require("./TemplatedPathPlugin");
|
const TemplatedPathPlugin = require("./TemplatedPathPlugin");
|
||||||
const UseStrictPlugin = require("./UseStrictPlugin");
|
const UseStrictPlugin = require("./UseStrictPlugin");
|
||||||
|
@ -302,7 +301,10 @@ class WebpackOptionsApply extends OptionsApply {
|
||||||
}
|
}
|
||||||
new CommonJsPlugin(options.module).apply(compiler);
|
new CommonJsPlugin(options.module).apply(compiler);
|
||||||
new LoaderPlugin().apply(compiler);
|
new LoaderPlugin().apply(compiler);
|
||||||
|
if (options.node !== false) {
|
||||||
|
const NodeStuffPlugin = require("./NodeStuffPlugin");
|
||||||
new NodeStuffPlugin(options.node).apply(compiler);
|
new NodeStuffPlugin(options.node).apply(compiler);
|
||||||
|
}
|
||||||
new APIPlugin().apply(compiler);
|
new APIPlugin().apply(compiler);
|
||||||
new ConstPlugin().apply(compiler);
|
new ConstPlugin().apply(compiler);
|
||||||
new UseStrictPlugin().apply(compiler);
|
new UseStrictPlugin().apply(compiler);
|
||||||
|
|
|
@ -26,6 +26,8 @@ const HarmonyImportDependency = require("./HarmonyImportDependency");
|
||||||
|
|
||||||
/** @typedef {"missing"|"unused"|"empty-star"|"reexport-non-harmony-default"|"reexport-named-default"|"reexport-namespace-object"|"reexport-non-harmony-default-strict"|"reexport-fake-namespace-object"|"rexport-non-harmony-undefined"|"normal-reexport"|"dynamic-reexport"} ExportModeType */
|
/** @typedef {"missing"|"unused"|"empty-star"|"reexport-non-harmony-default"|"reexport-named-default"|"reexport-namespace-object"|"reexport-non-harmony-default-strict"|"reexport-fake-namespace-object"|"rexport-non-harmony-undefined"|"normal-reexport"|"dynamic-reexport"} ExportModeType */
|
||||||
|
|
||||||
|
const idSymbol = Symbol("HarmonyExportImportedSpecifierDependency.id");
|
||||||
|
|
||||||
/** @type {Map<string, string>} */
|
/** @type {Map<string, string>} */
|
||||||
const EMPTY_MAP = new Map();
|
const EMPTY_MAP = new Map();
|
||||||
|
|
||||||
|
@ -86,6 +88,23 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||||
return "harmony export imported specifier";
|
return "harmony export imported specifier";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {ModuleGraph} moduleGraph the module graph
|
||||||
|
* @returns {string} the imported id
|
||||||
|
*/
|
||||||
|
getId(moduleGraph) {
|
||||||
|
return moduleGraph.getMeta(this)[idSymbol] || this.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {ModuleGraph} moduleGraph the module graph
|
||||||
|
* @param {string} id the imported id
|
||||||
|
* @returns {void}
|
||||||
|
*/
|
||||||
|
setId(moduleGraph, id) {
|
||||||
|
moduleGraph.getMeta(this)[idSymbol] = id;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {ModuleGraph} moduleGraph the module graph
|
* @param {ModuleGraph} moduleGraph the module graph
|
||||||
* @param {boolean=} ignoreUnused ignore the fact that exports are unused
|
* @param {boolean=} ignoreUnused ignore the fact that exports are unused
|
||||||
|
@ -93,7 +112,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||||
*/
|
*/
|
||||||
getMode(moduleGraph, ignoreUnused) {
|
getMode(moduleGraph, ignoreUnused) {
|
||||||
const name = this.name;
|
const name = this.name;
|
||||||
const id = this.id;
|
const id = this.getId(moduleGraph);
|
||||||
const parentModule = moduleGraph.getParentModule(this);
|
const parentModule = moduleGraph.getParentModule(this);
|
||||||
const importedModule = moduleGraph.getModule(this);
|
const importedModule = moduleGraph.getModule(this);
|
||||||
|
|
||||||
|
@ -438,15 +457,17 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const id = this.getId(moduleGraph);
|
||||||
|
|
||||||
if (!importedModule.buildMeta || !importedModule.buildMeta.exportsType) {
|
if (!importedModule.buildMeta || !importedModule.buildMeta.exportsType) {
|
||||||
// It's not an harmony module
|
// It's not an harmony module
|
||||||
if (
|
if (
|
||||||
moduleGraph.getParentModule(this).buildMeta.strictHarmonyModule &&
|
moduleGraph.getParentModule(this).buildMeta.strictHarmonyModule &&
|
||||||
this.id !== "default"
|
id !== "default"
|
||||||
) {
|
) {
|
||||||
// In strict harmony modules we only support the default export
|
// In strict harmony modules we only support the default export
|
||||||
const exportName = this.id
|
const exportName = id
|
||||||
? `the named export '${this.id}'`
|
? `the named export '${id}'`
|
||||||
: "the namespace object";
|
: "the namespace object";
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
@ -459,21 +480,21 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.id) {
|
if (!id) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (moduleGraph.isExportProvided(importedModule, this.id) !== false) {
|
if (moduleGraph.isExportProvided(importedModule, id) !== false) {
|
||||||
// It's provided or we are not sure
|
// It's provided or we are not sure
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// We are sure that it's not provided
|
// We are sure that it's not provided
|
||||||
const idIsNotNameMessage =
|
const idIsNotNameMessage =
|
||||||
this.id !== this.name ? ` (reexported as '${this.name}')` : "";
|
id !== this.name ? ` (reexported as '${this.name}')` : "";
|
||||||
const errorMessage = `"export '${
|
const errorMessage = `"export '${id}'${idIsNotNameMessage} was not found in '${
|
||||||
this.id
|
this.userRequest
|
||||||
}'${idIsNotNameMessage} was not found in '${this.userRequest}'`;
|
}'`;
|
||||||
|
|
||||||
return [new HarmonyLinkingError(errorMessage)];
|
return [new HarmonyLinkingError(errorMessage)];
|
||||||
}
|
}
|
||||||
|
|
|
@ -143,8 +143,9 @@ class SideEffectsFlagPlugin {
|
||||||
)) {
|
)) {
|
||||||
const dep = connection.dependency;
|
const dep = connection.dependency;
|
||||||
if (
|
if (
|
||||||
dep instanceof HarmonyImportSpecifierDependency &&
|
dep instanceof HarmonyExportImportedSpecifierDependency ||
|
||||||
!dep.namespaceObjectAsContext
|
(dep instanceof HarmonyImportSpecifierDependency &&
|
||||||
|
!dep.namespaceObjectAsContext)
|
||||||
) {
|
) {
|
||||||
const mapping = map.get(dep.id);
|
const mapping = map.get(dep.id);
|
||||||
if (mapping) {
|
if (mapping) {
|
||||||
|
|
|
@ -97,6 +97,17 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
||||||
"];"
|
"];"
|
||||||
])
|
])
|
||||||
: "",
|
: "",
|
||||||
|
withDefer && withPrefetch
|
||||||
|
? Template.asString([
|
||||||
|
"var deferredPrefetch = [",
|
||||||
|
prefetchChunks && prefetchChunks.length > 0
|
||||||
|
? Template.indent(
|
||||||
|
prefetchChunks.map(c => JSON.stringify(c)).join(",\n")
|
||||||
|
)
|
||||||
|
: "// no initial prefetched chunks",
|
||||||
|
"];"
|
||||||
|
])
|
||||||
|
: "",
|
||||||
"",
|
"",
|
||||||
withLoading
|
withLoading
|
||||||
? Template.asString([
|
? Template.asString([
|
||||||
|
@ -174,12 +185,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
||||||
]),
|
]),
|
||||||
"}"
|
"}"
|
||||||
]),
|
]),
|
||||||
"}",
|
"}"
|
||||||
prefetchChunks && prefetchChunks.length > 0
|
|
||||||
? prefetchChunks
|
|
||||||
.map(c => `prefetchChunk(${JSON.stringify(c)});`)
|
|
||||||
.join("\n")
|
|
||||||
: ""
|
|
||||||
])
|
])
|
||||||
: "// no prefetching",
|
: "// no prefetching",
|
||||||
"",
|
"",
|
||||||
|
@ -329,6 +335,17 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
||||||
"}"
|
"}"
|
||||||
]),
|
]),
|
||||||
"}",
|
"}",
|
||||||
|
withPrefetch
|
||||||
|
? Template.asString([
|
||||||
|
"if(deferredModules.length === 0) {",
|
||||||
|
Template.indent([
|
||||||
|
"// chunk prefetching for javascript",
|
||||||
|
"deferredPrefetch.forEach(prefetchChunk);",
|
||||||
|
"deferredPrefetch.length = 0;"
|
||||||
|
]),
|
||||||
|
"}"
|
||||||
|
])
|
||||||
|
: "// no prefetch",
|
||||||
"return result;"
|
"return result;"
|
||||||
]),
|
]),
|
||||||
"}",
|
"}",
|
||||||
|
@ -338,7 +355,21 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
||||||
]),
|
]),
|
||||||
"};"
|
"};"
|
||||||
])
|
])
|
||||||
: "// no deferred startup",
|
: withPrefetch && prefetchChunks && prefetchChunks.length > 0
|
||||||
|
? Template.asString([
|
||||||
|
"// prefetching after startup",
|
||||||
|
`var startup = ${RuntimeGlobals.startup};`,
|
||||||
|
`${RuntimeGlobals.startup} = function() {`,
|
||||||
|
Template.indent([
|
||||||
|
"var result = startup();",
|
||||||
|
Template.asString(
|
||||||
|
prefetchChunks.map(c => `prefetchChunk(${JSON.stringify(c)});`)
|
||||||
|
),
|
||||||
|
"return result;"
|
||||||
|
]),
|
||||||
|
"};"
|
||||||
|
])
|
||||||
|
: "// no deferred startup or startup prefetching",
|
||||||
"",
|
"",
|
||||||
withDefer || withLoading
|
withDefer || withLoading
|
||||||
? Template.asString([
|
? Template.asString([
|
||||||
|
@ -378,7 +409,13 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
||||||
withPrefetch
|
withPrefetch
|
||||||
? Template.asString([
|
? Template.asString([
|
||||||
"// chunk prefetching for javascript",
|
"// chunk prefetching for javascript",
|
||||||
"if(prefetchChunks) prefetchChunks.forEach(prefetchChunk);"
|
"if(prefetchChunks) {",
|
||||||
|
Template.indent([
|
||||||
|
withDefer
|
||||||
|
? "deferredPrefetch.push.apply(deferredPrefetch, prefetchChunks);"
|
||||||
|
: "prefetchChunks.forEach(prefetchChunk);"
|
||||||
|
]),
|
||||||
|
"}"
|
||||||
])
|
])
|
||||||
: "",
|
: "",
|
||||||
"while(resolves.length) {",
|
"while(resolves.length) {",
|
||||||
|
|
|
@ -65,6 +65,13 @@ class JsonpTemplatePlugin {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
const needPrefetchingCode = chunk => {
|
||||||
|
const allPrefetchChunks = chunk.getChildIdsByOrdersMap(
|
||||||
|
compilation.chunkGraph,
|
||||||
|
true
|
||||||
|
).prefetch;
|
||||||
|
return allPrefetchChunks && Object.keys(allPrefetchChunks).length;
|
||||||
|
};
|
||||||
|
|
||||||
const {
|
const {
|
||||||
jsonpScript,
|
jsonpScript,
|
||||||
|
@ -101,6 +108,8 @@ class JsonpTemplatePlugin {
|
||||||
"}"
|
"}"
|
||||||
])
|
])
|
||||||
: "",
|
: "",
|
||||||
|
"// create error before stack unwound to get useful stacktrace later",
|
||||||
|
"var error = new Error();",
|
||||||
"onScriptComplete = function (event) {",
|
"onScriptComplete = function (event) {",
|
||||||
Template.indent([
|
Template.indent([
|
||||||
"// avoid mem leaks in IE.",
|
"// avoid mem leaks in IE.",
|
||||||
|
@ -111,7 +120,7 @@ class JsonpTemplatePlugin {
|
||||||
Template.indent([
|
Template.indent([
|
||||||
"var errorType = event && (event.type === 'load' ? 'missing' : event.type);",
|
"var errorType = event && (event.type === 'load' ? 'missing' : event.type);",
|
||||||
"var realSrc = event && event.target && event.target.src;",
|
"var realSrc = event && event.target && event.target.src;",
|
||||||
"var error = new Error('Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')');",
|
"error.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';",
|
||||||
"error.type = errorType;",
|
"error.type = errorType;",
|
||||||
"error.request = realSrc;",
|
"error.request = realSrc;",
|
||||||
"reportError(error);"
|
"reportError(error);"
|
||||||
|
@ -234,9 +243,10 @@ class JsonpTemplatePlugin {
|
||||||
compilation.hooks.additionalTreeRuntimeRequirements.tap(
|
compilation.hooks.additionalTreeRuntimeRequirements.tap(
|
||||||
"JsonpTemplatePlugin",
|
"JsonpTemplatePlugin",
|
||||||
(chunk, set) => {
|
(chunk, set) => {
|
||||||
if (needEntryDeferringCode(chunk)) {
|
const withDefer = needEntryDeferringCode(chunk);
|
||||||
|
if (withDefer || needPrefetchingCode(chunk)) {
|
||||||
set.add(RuntimeGlobals.startup);
|
set.add(RuntimeGlobals.startup);
|
||||||
set.add(RuntimeGlobals.startupNoDefault);
|
if (withDefer) set.add(RuntimeGlobals.startupNoDefault);
|
||||||
handler(chunk, set);
|
handler(chunk, set);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -492,6 +492,31 @@ rules:
|
||||||
|
|
||||||
*You don't have to change it for this PR, just make sure to follow this hint the next time you submit a PR.*
|
*You don't have to change it for this PR, just make sure to follow this hint the next time you submit a PR.*
|
||||||
|
|
||||||
|
# skip CLA for dependabot
|
||||||
|
- filters:
|
||||||
|
open: true
|
||||||
|
pull_request:
|
||||||
|
author: "^dependabot\\[bot\\]$"
|
||||||
|
status:
|
||||||
|
context: "licence/cla"
|
||||||
|
state: "pending"
|
||||||
|
actions:
|
||||||
|
status:
|
||||||
|
context: "licence/cla"
|
||||||
|
description: "Contributor License Agreement is not needed for this user."
|
||||||
|
state: "success"
|
||||||
|
|
||||||
|
# merge dependabot PRs automatically
|
||||||
|
- filters:
|
||||||
|
open: true
|
||||||
|
pull_request:
|
||||||
|
author: "^dependabot\\[bot\\]$"
|
||||||
|
mergeable_state: clean
|
||||||
|
merged: false
|
||||||
|
label: "PR: CI-ok"
|
||||||
|
actions:
|
||||||
|
merge: true
|
||||||
|
|
||||||
# add "Send a PR" label when somebody with write permission say it
|
# add "Send a PR" label when somebody with write permission say it
|
||||||
- filters:
|
- filters:
|
||||||
open: true
|
open: true
|
||||||
|
|
|
@ -647,6 +647,22 @@ describe("JavascriptParser", () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should collect definitions from identifiers introduced in object patterns", () => {
|
||||||
|
let definitions;
|
||||||
|
|
||||||
|
const parser = new JavascriptParser();
|
||||||
|
|
||||||
|
parser.hooks.statement.tap("JavascriptParserTest", expr => {
|
||||||
|
definitions = parser.scope.definitions;
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
|
parser.parse("const { a, ...rest } = { a: 1, b: 2 };");
|
||||||
|
|
||||||
|
expect(definitions.has("a")).toBe(true);
|
||||||
|
expect(definitions.has("rest")).toBe(true);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("optional catch binding support", () => {
|
describe("optional catch binding support", () => {
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,8 +1,10 @@
|
||||||
import value, { exception } from "./module";
|
import value, { exception } from "./module";
|
||||||
|
|
||||||
it("should have a TDZ for exported const values", function() {
|
it("should have a TDZ for exported const values", () => {
|
||||||
expect((typeof exception)).toBe("object");
|
expect(typeof exception).toBe("object");
|
||||||
expect(exception).toBeInstanceOf(Error);
|
expect(exception).toBeInstanceOf(Error);
|
||||||
expect(exception.message).toMatch(/ is not defined$/);
|
expect(exception.message).toMatch(
|
||||||
|
/ is not defined$|^Cannot access '.+?' before initialization$/
|
||||||
|
);
|
||||||
expect(value).toBe("value");
|
expect(value).toBe("value");
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
export { B } from "./h1.js";
|
|
@ -0,0 +1,2 @@
|
||||||
|
export { A } from "./ha.js";
|
||||||
|
export { B } from "./hb.js";
|
|
@ -0,0 +1 @@
|
||||||
|
export const A = "A";
|
|
@ -0,0 +1 @@
|
||||||
|
export const B = "B";
|
|
@ -2,7 +2,7 @@ var path = require("path");
|
||||||
var webpack = require("../../../../");
|
var webpack = require("../../../../");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
entry: ["./a", "./b", "./_d", "./_e", "./f", "./g.abc"],
|
entry: ["./a", "./b", "./_d", "./_e", "./f", "./g.abc", "./h"],
|
||||||
resolve: {
|
resolve: {
|
||||||
extensions: [".js", ".jsx"]
|
extensions: [".js", ".jsx"]
|
||||||
},
|
},
|
||||||
|
@ -19,9 +19,16 @@ module.exports = {
|
||||||
options: {
|
options: {
|
||||||
test: 1
|
test: 1
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /0-create-dll.h/,
|
||||||
|
sideEffects: false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
optimization: {
|
||||||
|
sideEffects: true
|
||||||
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
new webpack.DllPlugin({
|
new webpack.DllPlugin({
|
||||||
path: path.resolve(
|
path: path.resolve(
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import d from "dll/d";
|
import d from "dll/d";
|
||||||
import { x1, y2 } from "./e";
|
import { x1, y2 } from "./e";
|
||||||
import { x2, y1 } from "dll/e";
|
import { x2, y1 } from "dll/e";
|
||||||
|
import { B } from "dll/h";
|
||||||
|
|
||||||
it("should load a module from dll", function() {
|
it("should load a module from dll", function() {
|
||||||
expect(require("dll/a")).toBe("a");
|
expect(require("dll/a")).toBe("a");
|
||||||
|
@ -11,10 +12,12 @@ it("should load a module of non-default type without extension from dll", functi
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should load an async module from dll", function(done) {
|
it("should load an async module from dll", function(done) {
|
||||||
require("dll/b")().then(function(c) {
|
require("dll/b")()
|
||||||
|
.then(function(c) {
|
||||||
expect(c).toEqual(nsObj({ default: "c" }));
|
expect(c).toEqual(nsObj({ default: "c" }));
|
||||||
done();
|
done();
|
||||||
}).catch(done);
|
})
|
||||||
|
.catch(done);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should load an harmony module from dll (default export)", function() {
|
it("should load an harmony module from dll (default export)", function() {
|
||||||
|
@ -33,7 +36,9 @@ it("should load a module with loader applied", function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should give modules the correct ids", function() {
|
it("should give modules the correct ids", function() {
|
||||||
expect(Object.keys(__webpack_modules__).filter(m => !m.startsWith("../.."))).toEqual([
|
expect(
|
||||||
|
Object.keys(__webpack_modules__).filter(m => !m.startsWith("../.."))
|
||||||
|
).toEqual([
|
||||||
"./index.js",
|
"./index.js",
|
||||||
"dll-reference ../0-create-dll/dll.js",
|
"dll-reference ../0-create-dll/dll.js",
|
||||||
"dll/a.js",
|
"dll/a.js",
|
||||||
|
@ -44,5 +49,10 @@ it("should give modules the correct ids", function() {
|
||||||
"dll/e2.js",
|
"dll/e2.js",
|
||||||
"dll/f.jsx",
|
"dll/f.jsx",
|
||||||
"dll/g.abc.js",
|
"dll/g.abc.js",
|
||||||
|
"dll/h.js"
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should not crash on side-effect-free modules", function() {
|
||||||
|
expect(B).toBe("B");
|
||||||
|
});
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import d from "../0-create-dll/d";
|
import d from "../0-create-dll/d";
|
||||||
import { x1, y2 } from "./e";
|
import { x1, y2 } from "./e";
|
||||||
import { x2, y1 } from "../0-create-dll/e";
|
import { x2, y1 } from "../0-create-dll/e";
|
||||||
|
import { B } from "../0-create-dll/h";
|
||||||
|
import { A } from "../0-create-dll/h1";
|
||||||
|
|
||||||
it("should load a module from dll", function() {
|
it("should load a module from dll", function() {
|
||||||
expect(require("../0-create-dll/a")).toBe("a");
|
expect(require("../0-create-dll/a")).toBe("a");
|
||||||
|
@ -11,10 +13,12 @@ it("should load a module of non-default type without extension from dll", functi
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should load an async module from dll", function(done) {
|
it("should load an async module from dll", function(done) {
|
||||||
require("../0-create-dll/b")().then(function(c) {
|
require("../0-create-dll/b")()
|
||||||
|
.then(function(c) {
|
||||||
expect(c).toEqual(nsObj({ default: "c" }));
|
expect(c).toEqual(nsObj({ default: "c" }));
|
||||||
done();
|
done();
|
||||||
}).catch(done);
|
})
|
||||||
|
.catch(done);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should load an harmony module from dll (default export)", function() {
|
it("should load an harmony module from dll (default export)", function() {
|
||||||
|
@ -33,7 +37,9 @@ it("should load a module with loader applied", function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should give modules the correct ids", function() {
|
it("should give modules the correct ids", function() {
|
||||||
expect(Object.keys(__webpack_modules__).filter(m => !m.startsWith("../.."))).toEqual([
|
expect(
|
||||||
|
Object.keys(__webpack_modules__).filter(m => !m.startsWith("../.."))
|
||||||
|
).toEqual([
|
||||||
"../0-create-dll/a.js",
|
"../0-create-dll/a.js",
|
||||||
"../0-create-dll/b.js",
|
"../0-create-dll/b.js",
|
||||||
"../0-create-dll/d.js",
|
"../0-create-dll/d.js",
|
||||||
|
@ -42,7 +48,17 @@ it("should give modules the correct ids", function() {
|
||||||
"../0-create-dll/e2.js",
|
"../0-create-dll/e2.js",
|
||||||
"../0-create-dll/f.jsx",
|
"../0-create-dll/f.jsx",
|
||||||
"../0-create-dll/g.abc.js",
|
"../0-create-dll/g.abc.js",
|
||||||
|
"../0-create-dll/h.js",
|
||||||
|
"../0-create-dll/hb.js",
|
||||||
"./index.js",
|
"./index.js",
|
||||||
"dll-reference ../0-create-dll/dll.js",
|
"dll-reference ../0-create-dll/dll.js",
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should not crash on side-effect-free modules", function() {
|
||||||
|
expect(B).toBe("B");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should be able to reference side-effect-free reexport-only module", function() {
|
||||||
|
expect(A).toBe("A");
|
||||||
|
});
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
it("provides mode to loaders when the option is omitted", function() {
|
||||||
|
expect(require("./a")).toBe("production");
|
||||||
|
});
|
|
@ -0,0 +1,3 @@
|
||||||
|
module.exports = function(source) {
|
||||||
|
return `module.exports = "${this.mode}";`;
|
||||||
|
};
|
|
@ -0,0 +1,10 @@
|
||||||
|
module.exports = {
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /a\.js$/,
|
||||||
|
use: "./loader"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,3 @@
|
||||||
|
it("provides mode to loaders when the option is 'development'", function() {
|
||||||
|
expect(require("./a")).toBe("development");
|
||||||
|
});
|
|
@ -0,0 +1,3 @@
|
||||||
|
module.exports = function(source) {
|
||||||
|
return `module.exports = "${this.mode}";`;
|
||||||
|
};
|
|
@ -0,0 +1,11 @@
|
||||||
|
module.exports = {
|
||||||
|
mode: "development",
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /a\.js$/,
|
||||||
|
use: "./loader"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,3 @@
|
||||||
|
it("provides mode to loaders when the option is 'none'", function() {
|
||||||
|
expect(require("./a")).toBe("none");
|
||||||
|
});
|
|
@ -0,0 +1,3 @@
|
||||||
|
module.exports = function(source) {
|
||||||
|
return `module.exports = "${this.mode}";`;
|
||||||
|
};
|
|
@ -0,0 +1,11 @@
|
||||||
|
module.exports = {
|
||||||
|
mode: "none",
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /a\.js$/,
|
||||||
|
use: "./loader"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,3 @@
|
||||||
|
it("provides mode to loaders when the option is 'production'", function() {
|
||||||
|
expect(require("./a")).toBe("production");
|
||||||
|
});
|
|
@ -0,0 +1,3 @@
|
||||||
|
module.exports = function(source) {
|
||||||
|
return `module.exports = "${this.mode}";`;
|
||||||
|
};
|
|
@ -0,0 +1,11 @@
|
||||||
|
module.exports = {
|
||||||
|
mode: "production",
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /a\.js$/,
|
||||||
|
use: "./loader"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,9 @@
|
||||||
|
it("should not evaluate __dirname or __filename when set to false", function(done) {
|
||||||
|
if (typeof __dirname !== "undefined") {
|
||||||
|
done.fail();
|
||||||
|
}
|
||||||
|
if (typeof __filename !== "undefined") {
|
||||||
|
done.fail();
|
||||||
|
}
|
||||||
|
done();
|
||||||
|
});
|
|
@ -0,0 +1,6 @@
|
||||||
|
module.exports = {
|
||||||
|
moduleScope: function(scope) {
|
||||||
|
delete scope.__dirname;
|
||||||
|
delete scope.__filename;
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,7 @@
|
||||||
|
module.exports = {
|
||||||
|
target: "web",
|
||||||
|
node: {
|
||||||
|
__filename: false,
|
||||||
|
__dirname: false
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,9 @@
|
||||||
|
it("should not evaluate __dirname or __filename when node option is false", function(done) {
|
||||||
|
if (typeof __dirname !== "undefined") {
|
||||||
|
done.fail();
|
||||||
|
}
|
||||||
|
if (typeof __filename !== "undefined") {
|
||||||
|
done.fail();
|
||||||
|
}
|
||||||
|
done();
|
||||||
|
});
|
|
@ -0,0 +1,6 @@
|
||||||
|
module.exports = {
|
||||||
|
moduleScope: function(scope) {
|
||||||
|
delete scope.__dirname;
|
||||||
|
delete scope.__filename;
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,4 @@
|
||||||
|
module.exports = {
|
||||||
|
target: "web",
|
||||||
|
node: false
|
||||||
|
};
|
|
@ -1,23 +1,9 @@
|
||||||
|
// This config need to be set on initial evaluation to be effective
|
||||||
let oldNonce;
|
|
||||||
let oldPublicPath;
|
|
||||||
|
|
||||||
beforeEach(done => {
|
|
||||||
oldNonce = __webpack_nonce__;
|
|
||||||
oldPublicPath = __webpack_public_path__;
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(done => {
|
|
||||||
__webpack_nonce__ = oldNonce;
|
|
||||||
__webpack_public_path__ = oldPublicPath;
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should prefetch and preload child chunks on chunk load", () => {
|
|
||||||
__webpack_nonce__ = "nonce";
|
__webpack_nonce__ = "nonce";
|
||||||
__webpack_public_path__ = "https://example.com/public/path/";
|
__webpack_public_path__ = "https://example.com/public/path/";
|
||||||
|
|
||||||
|
it("should prefetch and preload child chunks on chunk load", () => {
|
||||||
|
|
||||||
let link, script;
|
let link, script;
|
||||||
|
|
||||||
expect(document.head._children).toHaveLength(1);
|
expect(document.head._children).toHaveLength(1);
|
||||||
|
@ -26,7 +12,7 @@ it("should prefetch and preload child chunks on chunk load", () => {
|
||||||
link = document.head._children[0];
|
link = document.head._children[0];
|
||||||
expect(link._type).toBe("link");
|
expect(link._type).toBe("link");
|
||||||
expect(link.rel).toBe("prefetch");
|
expect(link.rel).toBe("prefetch");
|
||||||
expect(link.href).toMatch(/chunk1\.js$/);
|
expect(link.href).toBe("https://example.com/public/path/chunk1.js");
|
||||||
|
|
||||||
const promise = import(/* webpackChunkName: "chunk1", webpackPrefetch: true */ "./chunk1");
|
const promise = import(/* webpackChunkName: "chunk1", webpackPrefetch: true */ "./chunk1");
|
||||||
|
|
||||||
|
@ -35,7 +21,7 @@ it("should prefetch and preload child chunks on chunk load", () => {
|
||||||
// Test normal script loading
|
// Test normal script loading
|
||||||
script = document.head._children[1];
|
script = document.head._children[1];
|
||||||
expect(script._type).toBe("script");
|
expect(script._type).toBe("script");
|
||||||
expect(script.src).toMatch(/chunk1\.js$/);
|
expect(script.src).toBe("https://example.com/public/path/chunk1.js");
|
||||||
expect(script.getAttribute("nonce")).toBe("nonce")
|
expect(script.getAttribute("nonce")).toBe("nonce")
|
||||||
expect(script.crossOrigin).toBe("anonymous");
|
expect(script.crossOrigin).toBe("anonymous");
|
||||||
expect(script.onload).toBeTypeOf("function");
|
expect(script.onload).toBeTypeOf("function");
|
||||||
|
@ -45,7 +31,7 @@ it("should prefetch and preload child chunks on chunk load", () => {
|
||||||
expect(link._type).toBe("link");
|
expect(link._type).toBe("link");
|
||||||
expect(link.rel).toBe("preload");
|
expect(link.rel).toBe("preload");
|
||||||
expect(link.as).toBe("script");
|
expect(link.as).toBe("script");
|
||||||
expect(link.href).toMatch(/chunk1-b\.js$/);
|
expect(link.href).toBe("https://example.com/public/path/chunk1-b.js");
|
||||||
expect(link.charset).toBe("utf-8");
|
expect(link.charset).toBe("utf-8");
|
||||||
expect(link.getAttribute("nonce")).toBe("nonce");
|
expect(link.getAttribute("nonce")).toBe("nonce");
|
||||||
expect(link.crossOrigin).toBe("anonymous");
|
expect(link.crossOrigin).toBe("anonymous");
|
||||||
|
@ -62,13 +48,13 @@ it("should prefetch and preload child chunks on chunk load", () => {
|
||||||
link = document.head._children[3];
|
link = document.head._children[3];
|
||||||
expect(link._type).toBe("link");
|
expect(link._type).toBe("link");
|
||||||
expect(link.rel).toBe("prefetch");
|
expect(link.rel).toBe("prefetch");
|
||||||
expect(link.href).toMatch(/chunk1-c\.js$/);
|
expect(link.href).toBe("https://example.com/public/path/chunk1-c.js");
|
||||||
expect(link.crossOrigin).toBe("anonymous");
|
expect(link.crossOrigin).toBe("anonymous");
|
||||||
|
|
||||||
link = document.head._children[4];
|
link = document.head._children[4];
|
||||||
expect(link._type).toBe("link");
|
expect(link._type).toBe("link");
|
||||||
expect(link.rel).toBe("prefetch");
|
expect(link.rel).toBe("prefetch");
|
||||||
expect(link.href).toMatch(/chunk1-a\.js$/);
|
expect(link.href).toBe("https://example.com/public/path/chunk1-a.js");
|
||||||
expect(link.crossOrigin).toBe("anonymous");
|
expect(link.crossOrigin).toBe("anonymous");
|
||||||
|
|
||||||
const promise2 = import(/* webpackChunkName: "chunk1", webpackPrefetch: true */ "./chunk1");
|
const promise2 = import(/* webpackChunkName: "chunk1", webpackPrefetch: true */ "./chunk1");
|
||||||
|
@ -83,7 +69,7 @@ it("should prefetch and preload child chunks on chunk load", () => {
|
||||||
// Test normal script loading
|
// Test normal script loading
|
||||||
script = document.head._children[5];
|
script = document.head._children[5];
|
||||||
expect(script._type).toBe("script");
|
expect(script._type).toBe("script");
|
||||||
expect(script.src).toMatch(/chunk2\.js$/);
|
expect(script.src).toBe("https://example.com/public/path/chunk2.js");
|
||||||
expect(script.getAttribute("nonce")).toBe("nonce")
|
expect(script.getAttribute("nonce")).toBe("nonce")
|
||||||
expect(script.crossOrigin).toBe("anonymous");
|
expect(script.crossOrigin).toBe("anonymous");
|
||||||
expect(script.onload).toBeTypeOf("function");
|
expect(script.onload).toBeTypeOf("function");
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
import "./public-path";
|
||||||
|
|
||||||
|
it("should prefetch correctly", () => {
|
||||||
|
expect(document.head._children).toHaveLength(1);
|
||||||
|
|
||||||
|
// Test prefetch from entry chunk
|
||||||
|
const link = document.head._children[0];
|
||||||
|
expect(link._type).toBe("link");
|
||||||
|
expect(link.rel).toBe("prefetch");
|
||||||
|
expect(link.href).toBe("https://example.com/public/path/chunk1.js");
|
||||||
|
|
||||||
|
if (Math.random() < -1) {
|
||||||
|
import(/* webpackChunkName: "chunk1", webpackPrefetch: true */ "./chunk1");
|
||||||
|
}
|
||||||
|
});
|
|
@ -0,0 +1 @@
|
||||||
|
__webpack_public_path__ = "https://example.com/public/path/";
|
|
@ -0,0 +1,5 @@
|
||||||
|
module.exports = {
|
||||||
|
findBundle: function(i, options) {
|
||||||
|
return ["main.js", "runtime~main.js", "separate-public-path_js.js"];
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,25 @@
|
||||||
|
module.exports = {
|
||||||
|
target: "web",
|
||||||
|
output: {
|
||||||
|
filename: "[name].js",
|
||||||
|
chunkFilename: "[name].js",
|
||||||
|
crossOriginLoading: "anonymous"
|
||||||
|
},
|
||||||
|
performance: {
|
||||||
|
hints: false
|
||||||
|
},
|
||||||
|
optimization: {
|
||||||
|
minimize: false,
|
||||||
|
chunkIds: "named",
|
||||||
|
splitChunks: {
|
||||||
|
cacheGroups: {
|
||||||
|
separate: {
|
||||||
|
enforce: true,
|
||||||
|
chunks: "all",
|
||||||
|
test: /public-path/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
runtimeChunk: true
|
||||||
|
}
|
||||||
|
};
|
108
yarn.lock
108
yarn.lock
|
@ -98,12 +98,12 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-plugin-utils" "^7.0.0"
|
"@babel/helper-plugin-utils" "^7.0.0"
|
||||||
|
|
||||||
"@babel/runtime@7.0.0":
|
"@babel/runtime@^7.0.0":
|
||||||
version "7.0.0"
|
version "7.4.4"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0.tgz#adeb78fedfc855aa05bc041640f3f6f98e85424c"
|
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.4.tgz#dc2e34982eb236803aa27a07fea6857af1b9171d"
|
||||||
integrity sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==
|
integrity sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg==
|
||||||
dependencies:
|
dependencies:
|
||||||
regenerator-runtime "^0.12.0"
|
regenerator-runtime "^0.13.2"
|
||||||
|
|
||||||
"@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.4.0":
|
"@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.4.0":
|
||||||
version "7.4.0"
|
version "7.4.0"
|
||||||
|
@ -373,9 +373,9 @@
|
||||||
integrity sha512-MeatbbUsZ80BEsKPXby6pUZjUM9ZuHIpWElN0siopih3fvnlpX2O9L6D5+dzDIb36lf9tM/8U4PVdLQ+L4qr4A==
|
integrity sha512-MeatbbUsZ80BEsKPXby6pUZjUM9ZuHIpWElN0siopih3fvnlpX2O9L6D5+dzDIb36lf9tM/8U4PVdLQ+L4qr4A==
|
||||||
|
|
||||||
"@types/node@^10.12.21":
|
"@types/node@^10.12.21":
|
||||||
version "10.14.4"
|
version "10.14.7"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.4.tgz#1c586b991457cbb58fef51bc4e0cfcfa347714b5"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.7.tgz#1854f0a9aa8d2cd6818d607b3d091346c6730362"
|
||||||
integrity sha512-DT25xX/YgyPKiHFOpNuANIQIVvYEwCWXgK2jYYwqgaMrYE6+tq+DtmMwlD3drl6DJbUwtlIDnn0d7tIn/EbXBg==
|
integrity sha512-on4MmIDgHXiuJDELPk1NFaKVUxxCFr37tm8E9yN6rAiF5Pzp/9bBfBHkoexqRiY+hk/Z04EJU9kKEb59YqJ82A==
|
||||||
|
|
||||||
"@types/prettier@^1.16.1":
|
"@types/prettier@^1.16.1":
|
||||||
version "1.16.1"
|
version "1.16.1"
|
||||||
|
@ -1333,15 +1333,14 @@ core-util-is@1.0.2, core-util-is@~1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
||||||
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
|
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
|
||||||
|
|
||||||
cosmiconfig@^5.0.2, cosmiconfig@^5.0.7:
|
cosmiconfig@^5.0.7, cosmiconfig@^5.2.0:
|
||||||
version "5.1.0"
|
version "5.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.1.0.tgz#6c5c35e97f37f985061cdf653f114784231185cf"
|
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
|
||||||
integrity sha512-kCNPvthka8gvLtzAxQXvWo4FxqRB+ftRZyPZNuab5ngvM9Y7yw7hbEysglptLgpkGX9nAOKTBVkHUAe8xtYR6Q==
|
integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
|
||||||
dependencies:
|
dependencies:
|
||||||
import-fresh "^2.0.0"
|
import-fresh "^2.0.0"
|
||||||
is-directory "^0.3.1"
|
is-directory "^0.3.1"
|
||||||
js-yaml "^3.9.0"
|
js-yaml "^3.13.1"
|
||||||
lodash.get "^4.4.2"
|
|
||||||
parse-json "^4.0.0"
|
parse-json "^4.0.0"
|
||||||
|
|
||||||
coveralls@^3.0.2:
|
coveralls@^3.0.2:
|
||||||
|
@ -1717,9 +1716,9 @@ escodegen@^1.9.1:
|
||||||
source-map "~0.6.1"
|
source-map "~0.6.1"
|
||||||
|
|
||||||
eslint-config-prettier@^4.0.0:
|
eslint-config-prettier@^4.0.0:
|
||||||
version "4.2.0"
|
version "4.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-4.2.0.tgz#70b946b629cd0e3e98233fd9ecde4cb9778de96c"
|
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-4.3.0.tgz#c55c1fcac8ce4518aeb77906984e134d9eb5a4f0"
|
||||||
integrity sha512-y0uWc/FRfrHhpPZCYflWC8aE0KRJRY04rdZVfl8cL3sEZmOYyaBdhdlQPjKZBnuRMyLVK+JUZr7HaZFClQiH4w==
|
integrity sha512-sZwhSTHVVz78+kYD3t5pCWSYEdVSBR0PXnwjDRsUs8ytIrK8PLXw+6FKp8r3Z7rx4ZszdetWlXYKOHoUrrwPlA==
|
||||||
dependencies:
|
dependencies:
|
||||||
get-stdin "^6.0.0"
|
get-stdin "^6.0.0"
|
||||||
|
|
||||||
|
@ -3017,9 +3016,9 @@ jest-jasmine2@^24.5.0:
|
||||||
throat "^4.0.0"
|
throat "^4.0.0"
|
||||||
|
|
||||||
jest-junit@^6.2.1:
|
jest-junit@^6.2.1:
|
||||||
version "6.3.0"
|
version "6.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-6.3.0.tgz#99e64ebc54eddcb21238f0cc49f5820c89a8c785"
|
resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-6.4.0.tgz#23e15c979fa6338afde46f2d2ac2a6b7e8cf0d9e"
|
||||||
integrity sha512-3PH9UkpaomX6CUzqjlnk0m4yBCW/eroxV6v61OM6LkCQFO848P3YUhfIzu8ypZSBKB3vvCbB4WaLTKT0BrIf8A==
|
integrity sha512-GXEZA5WBeUich94BARoEUccJumhCgCerg7mXDFLxWwI2P7wL3Z7sGWk+53x343YdBLjiMR9aD/gYMVKO+0pE4Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
jest-validate "^24.0.0"
|
jest-validate "^24.0.0"
|
||||||
mkdirp "^0.5.1"
|
mkdirp "^0.5.1"
|
||||||
|
@ -3243,7 +3242,7 @@ js-stringify@^1.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
||||||
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
|
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
|
||||||
|
|
||||||
js-yaml@3.x, js-yaml@^3.11.0, js-yaml@^3.12.0, js-yaml@^3.12.1, js-yaml@^3.13.0, js-yaml@^3.9.0:
|
js-yaml@3.x, js-yaml@^3.11.0, js-yaml@^3.12.0, js-yaml@^3.12.1, js-yaml@^3.13.0:
|
||||||
version "3.13.0"
|
version "3.13.0"
|
||||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.0.tgz#38ee7178ac0eea2c97ff6d96fff4b18c7d8cf98e"
|
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.0.tgz#38ee7178ac0eea2c97ff6d96fff4b18c7d8cf98e"
|
||||||
integrity sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==
|
integrity sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==
|
||||||
|
@ -3251,6 +3250,14 @@ js-yaml@3.x, js-yaml@^3.11.0, js-yaml@^3.12.0, js-yaml@^3.12.1, js-yaml@^3.13.0,
|
||||||
argparse "^1.0.7"
|
argparse "^1.0.7"
|
||||||
esprima "^4.0.0"
|
esprima "^4.0.0"
|
||||||
|
|
||||||
|
js-yaml@^3.13.1:
|
||||||
|
version "3.13.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
|
||||||
|
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
|
||||||
|
dependencies:
|
||||||
|
argparse "^1.0.7"
|
||||||
|
esprima "^4.0.0"
|
||||||
|
|
||||||
jsbn@~0.1.0:
|
jsbn@~0.1.0:
|
||||||
version "0.1.1"
|
version "0.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
|
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
|
||||||
|
@ -3475,13 +3482,13 @@ levn@^0.3.0, levn@~0.3.0:
|
||||||
type-check "~0.3.2"
|
type-check "~0.3.2"
|
||||||
|
|
||||||
lint-staged@^8.0.4:
|
lint-staged@^8.0.4:
|
||||||
version "8.1.5"
|
version "8.1.7"
|
||||||
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.1.5.tgz#372476fe1a58b8834eb562ed4c99126bd60bdd79"
|
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.1.7.tgz#a8988bc83bdffa97d04adb09dbc0b1f3a58fa6fc"
|
||||||
integrity sha512-e5ZavfnSLcBJE1BTzRTqw6ly8OkqVyO3GL2M6teSmTBYQ/2BuueD5GIt2RPsP31u/vjKdexUyDCxSyK75q4BDA==
|
integrity sha512-egT0goFhIFoOGk6rasPngTFh2qDqxZddM0PwI58oi66RxCDcn5uDwxmiasWIF0qGnchHSYVJ8HPRD5LrFo7TKA==
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk "^2.3.1"
|
chalk "^2.3.1"
|
||||||
commander "^2.14.1"
|
commander "^2.14.1"
|
||||||
cosmiconfig "^5.0.2"
|
cosmiconfig "^5.2.0"
|
||||||
debug "^3.1.0"
|
debug "^3.1.0"
|
||||||
dedent "^0.7.0"
|
dedent "^0.7.0"
|
||||||
del "^3.0.0"
|
del "^3.0.0"
|
||||||
|
@ -3503,7 +3510,7 @@ lint-staged@^8.0.4:
|
||||||
staged-git-files "1.1.2"
|
staged-git-files "1.1.2"
|
||||||
string-argv "^0.0.2"
|
string-argv "^0.0.2"
|
||||||
stringify-object "^3.2.2"
|
stringify-object "^3.2.2"
|
||||||
yup "^0.26.10"
|
yup "^0.27.0"
|
||||||
|
|
||||||
listr-silent-renderer@^1.1.1:
|
listr-silent-renderer@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
|
@ -3581,17 +3588,12 @@ locate-path@^3.0.0:
|
||||||
p-locate "^3.0.0"
|
p-locate "^3.0.0"
|
||||||
path-exists "^3.0.0"
|
path-exists "^3.0.0"
|
||||||
|
|
||||||
lodash.get@^4.4.2:
|
|
||||||
version "4.4.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
|
|
||||||
integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
|
|
||||||
|
|
||||||
lodash.sortby@^4.7.0:
|
lodash.sortby@^4.7.0:
|
||||||
version "4.7.0"
|
version "4.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
|
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
|
||||||
integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
|
integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
|
||||||
|
|
||||||
lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4:
|
lodash@^4.17.11, lodash@^4.17.4:
|
||||||
version "4.17.11"
|
version "4.17.11"
|
||||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
|
||||||
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
|
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
|
||||||
|
@ -3778,9 +3780,9 @@ mime@^1.4.1:
|
||||||
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
|
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
|
||||||
|
|
||||||
mime@^2.0.3:
|
mime@^2.0.3:
|
||||||
version "2.4.0"
|
version "2.4.3"
|
||||||
resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6"
|
resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.3.tgz#229687331e86f68924e6cb59e1cdd937f18275fe"
|
||||||
integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==
|
integrity sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==
|
||||||
|
|
||||||
mimic-fn@^1.0.0:
|
mimic-fn@^1.0.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
|
@ -3904,9 +3906,9 @@ natural-compare@^1.4.0:
|
||||||
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
|
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
|
||||||
|
|
||||||
neo-async@^2.5.0, neo-async@^2.6.0:
|
neo-async@^2.5.0, neo-async@^2.6.0:
|
||||||
version "2.6.0"
|
version "2.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835"
|
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
|
||||||
integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==
|
integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
|
||||||
|
|
||||||
next-tick@1:
|
next-tick@1:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
|
@ -4684,10 +4686,10 @@ regenerator-runtime@^0.11.0:
|
||||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
|
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
|
||||||
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
|
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
|
||||||
|
|
||||||
regenerator-runtime@^0.12.0:
|
regenerator-runtime@^0.13.2:
|
||||||
version "0.12.1"
|
version "0.13.2"
|
||||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de"
|
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447"
|
||||||
integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==
|
integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==
|
||||||
|
|
||||||
regex-not@^1.0.0, regex-not@^1.0.2:
|
regex-not@^1.0.0, regex-not@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
|
@ -5350,10 +5352,10 @@ symbol-tree@^3.2.2:
|
||||||
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
|
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
|
||||||
integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=
|
integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=
|
||||||
|
|
||||||
synchronous-promise@^2.0.5:
|
synchronous-promise@^2.0.6:
|
||||||
version "2.0.6"
|
version "2.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.6.tgz#de76e0ea2b3558c1e673942e47e714a930fa64aa"
|
resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.7.tgz#3574b3d2fae86b145356a4b89103e1577f646fe3"
|
||||||
integrity sha512-TyOuWLwkmtPL49LHCX1caIwHjRzcVd62+GF6h8W/jHOeZUFHpnd2XJDVuUlaTaLPH1nuu2M69mfHr5XbQJnf/g==
|
integrity sha512-16GbgwTmFMYFyQMLvtQjvNWh30dsFe1cAW5Fg1wm5+dg84L9Pe36mftsIRU95/W2YsISxsz/xq4VB23sqpgb/A==
|
||||||
|
|
||||||
table@^5.2.3:
|
table@^5.2.3:
|
||||||
version "5.2.3"
|
version "5.2.3"
|
||||||
|
@ -5957,14 +5959,14 @@ yargs@~3.10.0:
|
||||||
decamelize "^1.0.0"
|
decamelize "^1.0.0"
|
||||||
window-size "0.1.0"
|
window-size "0.1.0"
|
||||||
|
|
||||||
yup@^0.26.10:
|
yup@^0.27.0:
|
||||||
version "0.26.10"
|
version "0.27.0"
|
||||||
resolved "https://registry.yarnpkg.com/yup/-/yup-0.26.10.tgz#3545839663289038faf25facfc07e11fd67c0cb1"
|
resolved "https://registry.yarnpkg.com/yup/-/yup-0.27.0.tgz#f8cb198c8e7dd2124beddc2457571329096b06e7"
|
||||||
integrity sha512-keuNEbNSnsOTOuGCt3UJW69jDE3O4P+UHAakO7vSeFMnjaitcmlbij/a3oNb9g1Y1KvSKH/7O1R2PQ4m4TRylw==
|
integrity sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "7.0.0"
|
"@babel/runtime" "^7.0.0"
|
||||||
fn-name "~2.0.1"
|
fn-name "~2.0.1"
|
||||||
lodash "^4.17.10"
|
lodash "^4.17.11"
|
||||||
property-expr "^1.5.0"
|
property-expr "^1.5.0"
|
||||||
synchronous-promise "^2.0.5"
|
synchronous-promise "^2.0.6"
|
||||||
toposort "^2.0.2"
|
toposort "^2.0.2"
|
||||||
|
|
Loading…
Reference in New Issue