mirror of https://github.com/webpack/webpack.git
commit
abc825d58f
|
@ -90,7 +90,7 @@ or packaging just about any resource or asset.
|
|||
|
||||
### 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
|
||||
|
||||
|
|
|
@ -90,8 +90,10 @@ jobs:
|
|||
pool:
|
||||
vmImage: ubuntu-16.04
|
||||
strategy:
|
||||
maxParallel: 3
|
||||
maxParallel: 4
|
||||
matrix:
|
||||
node-12:
|
||||
node_version: ^12.2.0
|
||||
node-10:
|
||||
node_version: ^10.10.0
|
||||
node-8:
|
||||
|
@ -137,8 +139,10 @@ jobs:
|
|||
pool:
|
||||
vmImage: "macOS 10.13"
|
||||
strategy:
|
||||
maxParallel: 3
|
||||
maxParallel: 4
|
||||
matrix:
|
||||
node-12:
|
||||
node_version: ^12.2.0
|
||||
node-10:
|
||||
node_version: ^10.10.0
|
||||
node-8:
|
||||
|
@ -184,8 +188,10 @@ jobs:
|
|||
pool:
|
||||
vmImage: vs2017-win2016
|
||||
strategy:
|
||||
maxParallel: 3
|
||||
maxParallel: 4
|
||||
matrix:
|
||||
node-12:
|
||||
node_version: ^12.2.0
|
||||
node-10:
|
||||
node_version: ^10.10.0
|
||||
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({
|
||||
input: process.stdin,
|
||||
|
|
10
lib/Chunk.js
10
lib/Chunk.js
|
@ -592,7 +592,15 @@ class Chunk {
|
|||
};
|
||||
|
||||
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()) {
|
||||
|
|
|
@ -1943,6 +1943,9 @@ class JavascriptParser {
|
|||
case "RestElement":
|
||||
this.enterRestElement(pattern, onIdent);
|
||||
break;
|
||||
case "Property":
|
||||
this.enterPattern(pattern.value, onIdent);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1957,7 +1960,7 @@ class JavascriptParser {
|
|||
propIndex++
|
||||
) {
|
||||
const prop = pattern.properties[propIndex];
|
||||
this.enterPattern(prop.value, onIdent);
|
||||
this.enterPattern(prop, onIdent);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -107,9 +107,10 @@ class NodeStuffPlugin {
|
|||
setModuleConstant(expressionName, () => value);
|
||||
|
||||
const context = compiler.context;
|
||||
if (localOptions.__filename) {
|
||||
if (localOptions.__filename === "mock") {
|
||||
setConstant("__filename", "/index.js");
|
||||
} else if (localOptions.__filename) {
|
||||
} else {
|
||||
setModuleConstant("__filename", module =>
|
||||
path.relative(context, module.resource)
|
||||
);
|
||||
|
@ -120,13 +121,15 @@ class NodeStuffPlugin {
|
|||
if (!parser.state.module) return;
|
||||
const resource = parser.state.module.resource;
|
||||
const i = resource.indexOf("?");
|
||||
return evaluateToString(i < 0 ? resource : resource.substr(0, i))(
|
||||
expr
|
||||
);
|
||||
return evaluateToString(
|
||||
i < 0 ? resource : resource.substr(0, i)
|
||||
)(expr);
|
||||
});
|
||||
}
|
||||
if (localOptions.__dirname) {
|
||||
if (localOptions.__dirname === "mock") {
|
||||
setConstant("__dirname", "/");
|
||||
} else if (localOptions.__dirname) {
|
||||
} else {
|
||||
setModuleConstant("__dirname", module =>
|
||||
path.relative(context, module.context)
|
||||
);
|
||||
|
@ -137,6 +140,7 @@ class NodeStuffPlugin {
|
|||
if (!parser.state.module) return;
|
||||
return evaluateToString(parser.state.module.context)(expr);
|
||||
});
|
||||
}
|
||||
parser.hooks.expression
|
||||
.for("require.main")
|
||||
.tap(
|
||||
|
|
|
@ -303,6 +303,7 @@ class NormalModule extends Module {
|
|||
rootContext: options.context,
|
||||
webpack: true,
|
||||
sourceMap: !!this.useSourceMap,
|
||||
mode: options.mode || "production",
|
||||
_module: this,
|
||||
_compilation: compilation,
|
||||
_compiler: compilation.compiler,
|
||||
|
|
|
@ -25,7 +25,6 @@ const RuntimePlugin = require("./RuntimePlugin");
|
|||
const APIPlugin = require("./APIPlugin");
|
||||
const CompatibilityPlugin = require("./CompatibilityPlugin");
|
||||
const ConstPlugin = require("./ConstPlugin");
|
||||
const NodeStuffPlugin = require("./NodeStuffPlugin");
|
||||
|
||||
const TemplatedPathPlugin = require("./TemplatedPathPlugin");
|
||||
const UseStrictPlugin = require("./UseStrictPlugin");
|
||||
|
@ -302,7 +301,10 @@ class WebpackOptionsApply extends OptionsApply {
|
|||
}
|
||||
new CommonJsPlugin(options.module).apply(compiler);
|
||||
new LoaderPlugin().apply(compiler);
|
||||
if (options.node !== false) {
|
||||
const NodeStuffPlugin = require("./NodeStuffPlugin");
|
||||
new NodeStuffPlugin(options.node).apply(compiler);
|
||||
}
|
||||
new APIPlugin().apply(compiler);
|
||||
new ConstPlugin().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 */
|
||||
|
||||
const idSymbol = Symbol("HarmonyExportImportedSpecifierDependency.id");
|
||||
|
||||
/** @type {Map<string, string>} */
|
||||
const EMPTY_MAP = new Map();
|
||||
|
||||
|
@ -86,6 +88,23 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|||
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 {boolean=} ignoreUnused ignore the fact that exports are unused
|
||||
|
@ -93,7 +112,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|||
*/
|
||||
getMode(moduleGraph, ignoreUnused) {
|
||||
const name = this.name;
|
||||
const id = this.id;
|
||||
const id = this.getId(moduleGraph);
|
||||
const parentModule = moduleGraph.getParentModule(this);
|
||||
const importedModule = moduleGraph.getModule(this);
|
||||
|
||||
|
@ -438,15 +457,17 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|||
return;
|
||||
}
|
||||
|
||||
const id = this.getId(moduleGraph);
|
||||
|
||||
if (!importedModule.buildMeta || !importedModule.buildMeta.exportsType) {
|
||||
// It's not an harmony module
|
||||
if (
|
||||
moduleGraph.getParentModule(this).buildMeta.strictHarmonyModule &&
|
||||
this.id !== "default"
|
||||
id !== "default"
|
||||
) {
|
||||
// In strict harmony modules we only support the default export
|
||||
const exportName = this.id
|
||||
? `the named export '${this.id}'`
|
||||
const exportName = id
|
||||
? `the named export '${id}'`
|
||||
: "the namespace object";
|
||||
|
||||
return [
|
||||
|
@ -459,21 +480,21 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|||
return;
|
||||
}
|
||||
|
||||
if (!this.id) {
|
||||
if (!id) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (moduleGraph.isExportProvided(importedModule, this.id) !== false) {
|
||||
if (moduleGraph.isExportProvided(importedModule, id) !== false) {
|
||||
// It's provided or we are not sure
|
||||
return;
|
||||
}
|
||||
|
||||
// We are sure that it's not provided
|
||||
const idIsNotNameMessage =
|
||||
this.id !== this.name ? ` (reexported as '${this.name}')` : "";
|
||||
const errorMessage = `"export '${
|
||||
this.id
|
||||
}'${idIsNotNameMessage} was not found in '${this.userRequest}'`;
|
||||
id !== this.name ? ` (reexported as '${this.name}')` : "";
|
||||
const errorMessage = `"export '${id}'${idIsNotNameMessage} was not found in '${
|
||||
this.userRequest
|
||||
}'`;
|
||||
|
||||
return [new HarmonyLinkingError(errorMessage)];
|
||||
}
|
||||
|
|
|
@ -143,8 +143,9 @@ class SideEffectsFlagPlugin {
|
|||
)) {
|
||||
const dep = connection.dependency;
|
||||
if (
|
||||
dep instanceof HarmonyImportSpecifierDependency &&
|
||||
!dep.namespaceObjectAsContext
|
||||
dep instanceof HarmonyExportImportedSpecifierDependency ||
|
||||
(dep instanceof HarmonyImportSpecifierDependency &&
|
||||
!dep.namespaceObjectAsContext)
|
||||
) {
|
||||
const mapping = map.get(dep.id);
|
||||
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
|
||||
? 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",
|
||||
"",
|
||||
|
@ -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;"
|
||||
]),
|
||||
"}",
|
||||
|
@ -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
|
||||
? Template.asString([
|
||||
|
@ -378,7 +409,13 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|||
withPrefetch
|
||||
? Template.asString([
|
||||
"// 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) {",
|
||||
|
|
|
@ -65,6 +65,13 @@ class JsonpTemplatePlugin {
|
|||
}
|
||||
return false;
|
||||
};
|
||||
const needPrefetchingCode = chunk => {
|
||||
const allPrefetchChunks = chunk.getChildIdsByOrdersMap(
|
||||
compilation.chunkGraph,
|
||||
true
|
||||
).prefetch;
|
||||
return allPrefetchChunks && Object.keys(allPrefetchChunks).length;
|
||||
};
|
||||
|
||||
const {
|
||||
jsonpScript,
|
||||
|
@ -101,6 +108,8 @@ class JsonpTemplatePlugin {
|
|||
"}"
|
||||
])
|
||||
: "",
|
||||
"// create error before stack unwound to get useful stacktrace later",
|
||||
"var error = new Error();",
|
||||
"onScriptComplete = function (event) {",
|
||||
Template.indent([
|
||||
"// avoid mem leaks in IE.",
|
||||
|
@ -111,7 +120,7 @@ class JsonpTemplatePlugin {
|
|||
Template.indent([
|
||||
"var errorType = event && (event.type === 'load' ? 'missing' : event.type);",
|
||||
"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.request = realSrc;",
|
||||
"reportError(error);"
|
||||
|
@ -234,9 +243,10 @@ class JsonpTemplatePlugin {
|
|||
compilation.hooks.additionalTreeRuntimeRequirements.tap(
|
||||
"JsonpTemplatePlugin",
|
||||
(chunk, set) => {
|
||||
if (needEntryDeferringCode(chunk)) {
|
||||
const withDefer = needEntryDeferringCode(chunk);
|
||||
if (withDefer || needPrefetchingCode(chunk)) {
|
||||
set.add(RuntimeGlobals.startup);
|
||||
set.add(RuntimeGlobals.startupNoDefault);
|
||||
if (withDefer) set.add(RuntimeGlobals.startupNoDefault);
|
||||
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.*
|
||||
|
||||
# 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
|
||||
- filters:
|
||||
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", () => {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,8 +1,10 @@
|
|||
import value, { exception } from "./module";
|
||||
|
||||
it("should have a TDZ for exported const values", function() {
|
||||
expect((typeof exception)).toBe("object");
|
||||
it("should have a TDZ for exported const values", () => {
|
||||
expect(typeof exception).toBe("object");
|
||||
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");
|
||||
});
|
||||
|
|
|
@ -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("../../../../");
|
||||
|
||||
module.exports = {
|
||||
entry: ["./a", "./b", "./_d", "./_e", "./f", "./g.abc"],
|
||||
entry: ["./a", "./b", "./_d", "./_e", "./f", "./g.abc", "./h"],
|
||||
resolve: {
|
||||
extensions: [".js", ".jsx"]
|
||||
},
|
||||
|
@ -19,9 +19,16 @@ module.exports = {
|
|||
options: {
|
||||
test: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
test: /0-create-dll.h/,
|
||||
sideEffects: false
|
||||
}
|
||||
]
|
||||
},
|
||||
optimization: {
|
||||
sideEffects: true
|
||||
},
|
||||
plugins: [
|
||||
new webpack.DllPlugin({
|
||||
path: path.resolve(
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import d from "dll/d";
|
||||
import { x1, y2 } from "./e";
|
||||
import { x2, y1 } from "dll/e";
|
||||
import { B } from "dll/h";
|
||||
|
||||
it("should load a module from dll", function() {
|
||||
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) {
|
||||
require("dll/b")().then(function(c) {
|
||||
require("dll/b")()
|
||||
.then(function(c) {
|
||||
expect(c).toEqual(nsObj({ default: "c" }));
|
||||
done();
|
||||
}).catch(done);
|
||||
})
|
||||
.catch(done);
|
||||
});
|
||||
|
||||
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() {
|
||||
expect(Object.keys(__webpack_modules__).filter(m => !m.startsWith("../.."))).toEqual([
|
||||
expect(
|
||||
Object.keys(__webpack_modules__).filter(m => !m.startsWith("../.."))
|
||||
).toEqual([
|
||||
"./index.js",
|
||||
"dll-reference ../0-create-dll/dll.js",
|
||||
"dll/a.js",
|
||||
|
@ -44,5 +49,10 @@ it("should give modules the correct ids", function() {
|
|||
"dll/e2.js",
|
||||
"dll/f.jsx",
|
||||
"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 { x1, y2 } from "./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() {
|
||||
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) {
|
||||
require("../0-create-dll/b")().then(function(c) {
|
||||
require("../0-create-dll/b")()
|
||||
.then(function(c) {
|
||||
expect(c).toEqual(nsObj({ default: "c" }));
|
||||
done();
|
||||
}).catch(done);
|
||||
})
|
||||
.catch(done);
|
||||
});
|
||||
|
||||
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() {
|
||||
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/b.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/f.jsx",
|
||||
"../0-create-dll/g.abc.js",
|
||||
"../0-create-dll/h.js",
|
||||
"../0-create-dll/hb.js",
|
||||
"./index.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 @@
|
|||
|
||||
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", () => {
|
||||
// This config need to be set on initial evaluation to be effective
|
||||
__webpack_nonce__ = "nonce";
|
||||
__webpack_public_path__ = "https://example.com/public/path/";
|
||||
|
||||
it("should prefetch and preload child chunks on chunk load", () => {
|
||||
|
||||
let link, script;
|
||||
|
||||
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];
|
||||
expect(link._type).toBe("link");
|
||||
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");
|
||||
|
||||
|
@ -35,7 +21,7 @@ it("should prefetch and preload child chunks on chunk load", () => {
|
|||
// Test normal script loading
|
||||
script = document.head._children[1];
|
||||
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.crossOrigin).toBe("anonymous");
|
||||
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.rel).toBe("preload");
|
||||
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.getAttribute("nonce")).toBe("nonce");
|
||||
expect(link.crossOrigin).toBe("anonymous");
|
||||
|
@ -62,13 +48,13 @@ it("should prefetch and preload child chunks on chunk load", () => {
|
|||
link = document.head._children[3];
|
||||
expect(link._type).toBe("link");
|
||||
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");
|
||||
|
||||
link = document.head._children[4];
|
||||
expect(link._type).toBe("link");
|
||||
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");
|
||||
|
||||
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
|
||||
script = document.head._children[5];
|
||||
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.crossOrigin).toBe("anonymous");
|
||||
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:
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
|
||||
"@babel/runtime@7.0.0":
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0.tgz#adeb78fedfc855aa05bc041640f3f6f98e85424c"
|
||||
integrity sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==
|
||||
"@babel/runtime@^7.0.0":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.4.tgz#dc2e34982eb236803aa27a07fea6857af1b9171d"
|
||||
integrity sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg==
|
||||
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":
|
||||
version "7.4.0"
|
||||
|
@ -373,9 +373,9 @@
|
|||
integrity sha512-MeatbbUsZ80BEsKPXby6pUZjUM9ZuHIpWElN0siopih3fvnlpX2O9L6D5+dzDIb36lf9tM/8U4PVdLQ+L4qr4A==
|
||||
|
||||
"@types/node@^10.12.21":
|
||||
version "10.14.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.4.tgz#1c586b991457cbb58fef51bc4e0cfcfa347714b5"
|
||||
integrity sha512-DT25xX/YgyPKiHFOpNuANIQIVvYEwCWXgK2jYYwqgaMrYE6+tq+DtmMwlD3drl6DJbUwtlIDnn0d7tIn/EbXBg==
|
||||
version "10.14.7"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.7.tgz#1854f0a9aa8d2cd6818d607b3d091346c6730362"
|
||||
integrity sha512-on4MmIDgHXiuJDELPk1NFaKVUxxCFr37tm8E9yN6rAiF5Pzp/9bBfBHkoexqRiY+hk/Z04EJU9kKEb59YqJ82A==
|
||||
|
||||
"@types/prettier@^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"
|
||||
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
|
||||
|
||||
cosmiconfig@^5.0.2, cosmiconfig@^5.0.7:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.1.0.tgz#6c5c35e97f37f985061cdf653f114784231185cf"
|
||||
integrity sha512-kCNPvthka8gvLtzAxQXvWo4FxqRB+ftRZyPZNuab5ngvM9Y7yw7hbEysglptLgpkGX9nAOKTBVkHUAe8xtYR6Q==
|
||||
cosmiconfig@^5.0.7, cosmiconfig@^5.2.0:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
|
||||
integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
|
||||
dependencies:
|
||||
import-fresh "^2.0.0"
|
||||
is-directory "^0.3.1"
|
||||
js-yaml "^3.9.0"
|
||||
lodash.get "^4.4.2"
|
||||
js-yaml "^3.13.1"
|
||||
parse-json "^4.0.0"
|
||||
|
||||
coveralls@^3.0.2:
|
||||
|
@ -1717,9 +1716,9 @@ escodegen@^1.9.1:
|
|||
source-map "~0.6.1"
|
||||
|
||||
eslint-config-prettier@^4.0.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-4.2.0.tgz#70b946b629cd0e3e98233fd9ecde4cb9778de96c"
|
||||
integrity sha512-y0uWc/FRfrHhpPZCYflWC8aE0KRJRY04rdZVfl8cL3sEZmOYyaBdhdlQPjKZBnuRMyLVK+JUZr7HaZFClQiH4w==
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-4.3.0.tgz#c55c1fcac8ce4518aeb77906984e134d9eb5a4f0"
|
||||
integrity sha512-sZwhSTHVVz78+kYD3t5pCWSYEdVSBR0PXnwjDRsUs8ytIrK8PLXw+6FKp8r3Z7rx4ZszdetWlXYKOHoUrrwPlA==
|
||||
dependencies:
|
||||
get-stdin "^6.0.0"
|
||||
|
||||
|
@ -3017,9 +3016,9 @@ jest-jasmine2@^24.5.0:
|
|||
throat "^4.0.0"
|
||||
|
||||
jest-junit@^6.2.1:
|
||||
version "6.3.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-6.3.0.tgz#99e64ebc54eddcb21238f0cc49f5820c89a8c785"
|
||||
integrity sha512-3PH9UkpaomX6CUzqjlnk0m4yBCW/eroxV6v61OM6LkCQFO848P3YUhfIzu8ypZSBKB3vvCbB4WaLTKT0BrIf8A==
|
||||
version "6.4.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-6.4.0.tgz#23e15c979fa6338afde46f2d2ac2a6b7e8cf0d9e"
|
||||
integrity sha512-GXEZA5WBeUich94BARoEUccJumhCgCerg7mXDFLxWwI2P7wL3Z7sGWk+53x343YdBLjiMR9aD/gYMVKO+0pE4Q==
|
||||
dependencies:
|
||||
jest-validate "^24.0.0"
|
||||
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"
|
||||
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"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.0.tgz#38ee7178ac0eea2c97ff6d96fff4b18c7d8cf98e"
|
||||
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"
|
||||
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:
|
||||
version "0.1.1"
|
||||
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"
|
||||
|
||||
lint-staged@^8.0.4:
|
||||
version "8.1.5"
|
||||
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.1.5.tgz#372476fe1a58b8834eb562ed4c99126bd60bdd79"
|
||||
integrity sha512-e5ZavfnSLcBJE1BTzRTqw6ly8OkqVyO3GL2M6teSmTBYQ/2BuueD5GIt2RPsP31u/vjKdexUyDCxSyK75q4BDA==
|
||||
version "8.1.7"
|
||||
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.1.7.tgz#a8988bc83bdffa97d04adb09dbc0b1f3a58fa6fc"
|
||||
integrity sha512-egT0goFhIFoOGk6rasPngTFh2qDqxZddM0PwI58oi66RxCDcn5uDwxmiasWIF0qGnchHSYVJ8HPRD5LrFo7TKA==
|
||||
dependencies:
|
||||
chalk "^2.3.1"
|
||||
commander "^2.14.1"
|
||||
cosmiconfig "^5.0.2"
|
||||
cosmiconfig "^5.2.0"
|
||||
debug "^3.1.0"
|
||||
dedent "^0.7.0"
|
||||
del "^3.0.0"
|
||||
|
@ -3503,7 +3510,7 @@ lint-staged@^8.0.4:
|
|||
staged-git-files "1.1.2"
|
||||
string-argv "^0.0.2"
|
||||
stringify-object "^3.2.2"
|
||||
yup "^0.26.10"
|
||||
yup "^0.27.0"
|
||||
|
||||
listr-silent-renderer@^1.1.1:
|
||||
version "1.1.1"
|
||||
|
@ -3581,17 +3588,12 @@ locate-path@^3.0.0:
|
|||
p-locate "^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:
|
||||
version "4.7.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
|
||||
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"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
|
||||
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
|
||||
|
@ -3778,9 +3780,9 @@ mime@^1.4.1:
|
|||
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
|
||||
|
||||
mime@^2.0.3:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6"
|
||||
integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==
|
||||
version "2.4.3"
|
||||
resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.3.tgz#229687331e86f68924e6cb59e1cdd937f18275fe"
|
||||
integrity sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==
|
||||
|
||||
mimic-fn@^1.0.0:
|
||||
version "1.2.0"
|
||||
|
@ -3904,9 +3906,9 @@ natural-compare@^1.4.0:
|
|||
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
|
||||
|
||||
neo-async@^2.5.0, neo-async@^2.6.0:
|
||||
version "2.6.0"
|
||||
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835"
|
||||
integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==
|
||||
version "2.6.1"
|
||||
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
|
||||
integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
|
||||
|
||||
next-tick@1:
|
||||
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"
|
||||
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
|
||||
|
||||
regenerator-runtime@^0.12.0:
|
||||
version "0.12.1"
|
||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de"
|
||||
integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==
|
||||
regenerator-runtime@^0.13.2:
|
||||
version "0.13.2"
|
||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447"
|
||||
integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==
|
||||
|
||||
regex-not@^1.0.0, regex-not@^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"
|
||||
integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=
|
||||
|
||||
synchronous-promise@^2.0.5:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.6.tgz#de76e0ea2b3558c1e673942e47e714a930fa64aa"
|
||||
integrity sha512-TyOuWLwkmtPL49LHCX1caIwHjRzcVd62+GF6h8W/jHOeZUFHpnd2XJDVuUlaTaLPH1nuu2M69mfHr5XbQJnf/g==
|
||||
synchronous-promise@^2.0.6:
|
||||
version "2.0.7"
|
||||
resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.7.tgz#3574b3d2fae86b145356a4b89103e1577f646fe3"
|
||||
integrity sha512-16GbgwTmFMYFyQMLvtQjvNWh30dsFe1cAW5Fg1wm5+dg84L9Pe36mftsIRU95/W2YsISxsz/xq4VB23sqpgb/A==
|
||||
|
||||
table@^5.2.3:
|
||||
version "5.2.3"
|
||||
|
@ -5957,14 +5959,14 @@ yargs@~3.10.0:
|
|||
decamelize "^1.0.0"
|
||||
window-size "0.1.0"
|
||||
|
||||
yup@^0.26.10:
|
||||
version "0.26.10"
|
||||
resolved "https://registry.yarnpkg.com/yup/-/yup-0.26.10.tgz#3545839663289038faf25facfc07e11fd67c0cb1"
|
||||
integrity sha512-keuNEbNSnsOTOuGCt3UJW69jDE3O4P+UHAakO7vSeFMnjaitcmlbij/a3oNb9g1Y1KvSKH/7O1R2PQ4m4TRylw==
|
||||
yup@^0.27.0:
|
||||
version "0.27.0"
|
||||
resolved "https://registry.yarnpkg.com/yup/-/yup-0.27.0.tgz#f8cb198c8e7dd2124beddc2457571329096b06e7"
|
||||
integrity sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "7.0.0"
|
||||
"@babel/runtime" "^7.0.0"
|
||||
fn-name "~2.0.1"
|
||||
lodash "^4.17.10"
|
||||
lodash "^4.17.11"
|
||||
property-expr "^1.5.0"
|
||||
synchronous-promise "^2.0.5"
|
||||
synchronous-promise "^2.0.6"
|
||||
toposort "^2.0.2"
|
||||
|
|
Loading…
Reference in New Issue