Merge pull request #682 from javascript-obfuscator/domain-lock-improvements-root-domain

`domainLock` improvement
This commit is contained in:
Timofey Kachalov
2020-07-26 19:15:52 +03:00
committed by GitHub
10 changed files with 187 additions and 55 deletions
+4
View File
@@ -1,5 +1,9 @@
Change Log
v1.8.0
---
* `domainLock` option patterns with leading dot character (`.example.com`) now cover root domains (`example.com`) in addition to all sub-domains (`sub.example.com`). https://github.com/javascript-obfuscator/javascript-obfuscator/issues/640
v1.7.0
---
* `simplify` option now affects all block statements. Improved variable declarations merging.
+2 -2
View File
@@ -633,10 +633,10 @@ Type: `string[]` Default: `[]`
##### :warning: This option does not work with `target: 'node'`
Locks the obfuscated source code so it only runs on specific domains and/or sub-domains. This makes really hard for someone to just copy and paste your source code and run it elsewhere.
Allows to run the obfuscated source code only on specific domains and/or sub-domains. This makes really hard for someone to just copy and paste your source code and run it elsewhere.
##### Multiple domains and sub-domains
It's possible to lock your code to more than one domain or sub-domain. For instance, to lock it so the code only runs on **www.example.com** add `www.example.com`. To make it work on any sub-domain from example.com, use `.example.com`.
It's possible to lock your code to more than one domain or sub-domain. For instance, to lock it so the code only runs on **www.example.com** add `www.example.com`. To make it work on the root domain including any sub-domains (`example.com`, `sub.example.com`), use `.example.com`.
### `exclude`
Type: `string[]` Default: `[]`
+3 -3
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+6 -6
View File
@@ -1,6 +1,6 @@
{
"name": "javascript-obfuscator",
"version": "1.7.0",
"version": "1.8.0",
"description": "JavaScript obfuscator",
"keywords": [
"obfuscator",
@@ -44,7 +44,7 @@
"tslib": "2.0.0"
},
"devDependencies": {
"@types/chai": "4.2.11",
"@types/chai": "4.2.12",
"@types/chance": "1.1.0",
"@types/escodegen": "0.0.6",
"@types/eslint-scope": "3.7.0",
@@ -54,7 +54,7 @@
"@types/mkdirp": "1.0.1",
"@types/mocha": "8.0.0",
"@types/multimatch": "4.0.0",
"@types/node": "14.0.24",
"@types/node": "14.0.26",
"@types/rimraf": "3.0.0",
"@types/sinon": "9.0.4",
"@types/string-template": "1.0.2",
@@ -67,10 +67,10 @@
"eslint-plugin-import": "2.22.0",
"eslint-plugin-jsdoc": "30.0.3",
"eslint-plugin-no-null": "1.0.2",
"eslint-plugin-prefer-arrow": "1.2.1",
"eslint-plugin-prefer-arrow": "1.2.2",
"eslint-plugin-unicorn": "21.0.0",
"fork-ts-checker-notifier-webpack-plugin": "3.0.0",
"fork-ts-checker-webpack-plugin": "5.0.7",
"fork-ts-checker-webpack-plugin": "5.0.11",
"mocha": "8.0.1",
"nyc": "15.1.0",
"pjson": "1.0.9",
@@ -81,7 +81,7 @@
"ts-loader": "8.0.1",
"ts-node": "8.10.2",
"typescript": "3.9.7",
"webpack": "4.43.0",
"webpack": "4.44.0",
"webpack-cli": "3.3.12",
"webpack-node-externals": "2.5.0"
},
+1 -1
View File
@@ -221,7 +221,7 @@ export class JavaScriptObfuscatorCLI implements IInitializable {
)
.option(
'--domain-lock <list> (comma separated, without whitespaces)',
'Blocks the execution of the code in domains that do not match the passed RegExp patterns (comma separated)',
'Allows to run the obfuscated source code only on specific domains and/or sub-domains (comma separated)',
ArraySanitizer
)
.option(
@@ -83,8 +83,11 @@ export function DomainLockTemplate (): string {
for (let i = 0; i < domains.length; i++) {
const domain = domains[i];
const position = currentDomain.length - domain.length;
const lastIndex = currentDomain.indexOf(domain, position);
const domainNormalized = domain[0] === String.fromCharCode(46)
? domain.slice(1)
: domain;
const position = currentDomain.length - domainNormalized.length;
const lastIndex = currentDomain.indexOf(domainNormalized, position);
const endsWith = lastIndex !== -1 && lastIndex === position;
if (endsWith) {
@@ -160,9 +160,39 @@ describe('DomainLockTemplate', () => {
});
});
describe('Variant #3: current domain matches with all domains of `domainsString`', () => {
describe('Variant #3: current domain matches with root domain of `domainsString`', () => {
const domainsString: string = ['.example.com'].join(';');
const currentDomain: string = 'example.com';
let testFunc: () => void;
before(() => {
const [
hiddenDomainsString,
diff
] = cryptUtils.hideString(domainsString, domainsString.length * 3);
testFunc = () => getFunctionFromTemplate(
{
domainLockFunctionName: 'domainLockFunction',
diff: diff,
domains: hiddenDomainsString,
globalVariableTemplate: GlobalVariableTemplate1(),
singleCallControllerFunctionName
},
singleCallControllerFunctionName,
getDocumentDomainTemplate(currentDomain)
);
});
it('should correctly run code inside template', () => {
assert.doesNotThrow(testFunc);
});
});
describe('Variant #4: current root domain matches with `domainsString`', () => {
describe('Variant #1', () => {
const domainsString: string = ['example.com', '.example.com'].join(';');
const domainsString: string = ['example.com'].join(';');
const currentDomain: string = 'example.com';
let testFunc: () => void;
@@ -282,7 +312,7 @@ describe('DomainLockTemplate', () => {
});
});
describe('Variant #4: current domain matches with base domain of `domainsString` item', () => {
describe('Variant #5: current domain matches with base domain of `domainsString` item', () => {
const domainsString: string = ['www.test.com', '.example.com'].join(';');
const currentDomain: string = 'subdomain.example.com';
@@ -312,7 +342,7 @@ describe('DomainLockTemplate', () => {
});
});
describe('Variant #5: current domain doesn\'t match with `domainsString`', () => {
describe('Variant #6: current domain doesn\'t match with `domainsString`', () => {
describe('Variant #1', () => {
const domainsString: string = ['www.example.com'].join(';');
const currentDomain: string = 'www.test.com';
@@ -401,9 +431,39 @@ describe('DomainLockTemplate', () => {
assert.throws(testFunc);
});
});
describe('Variant #4', () => {
const domainsString: string = ['.example.com'].join(';');
const currentDomain: string = 'example1.com';
let testFunc: () => void;
before(() => {
const [
hiddenDomainsString,
diff
] = cryptUtils.hideString(domainsString, domainsString.length * 3);
testFunc = () => getFunctionFromTemplate(
{
domainLockFunctionName: 'domainLockFunction',
diff: diff,
domains: hiddenDomainsString,
globalVariableTemplate: GlobalVariableTemplate1(),
singleCallControllerFunctionName
},
singleCallControllerFunctionName,
getDocumentDomainTemplate(currentDomain)
);
});
it('should throw an error', () => {
assert.throws(testFunc);
});
});
});
describe('Variant #6: location.hostname', () => {
describe('Variant #7: location.hostname', () => {
describe('Variant #1: current location.hostname matches with `domainsString`', () => {
const domainsString: string = ['www.example.com'].join(';');
const currentHostName: string = 'www.example.com';
@@ -465,7 +525,7 @@ describe('DomainLockTemplate', () => {
});
});
describe('Variant #7: domain and location.hostname presented', () => {
describe('Variant #8: domain and location.hostname presented', () => {
describe('Variant #1: current domain matches with `domainsString`', () => {
const domainsString: string = ['www.example.com'].join(';');
const currentHostName: string = 'www.example.com';
+98 -33
View File
@@ -256,10 +256,10 @@
resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5"
integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==
"@types/chai@4.2.11":
version "4.2.11"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.11.tgz#d3614d6c5f500142358e6ed24e1bf16657536c50"
integrity sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw==
"@types/chai@4.2.12":
version "4.2.12"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.12.tgz#6160ae454cd89dae05adc3bb97997f488b608201"
integrity sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ==
"@types/chance@1.1.0":
version "1.1.0"
@@ -328,6 +328,11 @@
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339"
integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==
"@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5":
version "7.0.5"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd"
integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==
"@types/json5@^0.0.29":
version "0.0.29"
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
@@ -369,10 +374,10 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.3.tgz#6356df2647de9eac569f9a52eda3480fa9e70b4d"
integrity sha512-01s+ac4qerwd6RHD+mVbOEsraDHSgUaefQlEdBbUolnQFjKwCr7luvAlEwW1RFojh67u0z4OUTjPn9LEl4zIkA==
"@types/node@14.0.24":
version "14.0.24"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.24.tgz#b0f86f58564fa02a28b68f8b55d4cdec42e3b9d6"
integrity sha512-btt/oNOiDWcSuI721MdL8VQGnjsKjlTMdrKyTcLCKeQp/n4AAMFJ961wMbp+09y8WuGPClDEv07RIItdXKIXAA==
"@types/node@14.0.26":
version "14.0.26"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.26.tgz#22a3b8a46510da8944b67bfc27df02c34a35331c"
integrity sha512-W+fpe5s91FBGE0pEa0lnqGLL4USgpLgs4nokw16SrBBco/gQxuua7KnArSEOd5iaMqbbSHV10vUDkJYJJqpXKA==
"@types/normalize-package-data@^2.4.0":
version "2.4.0"
@@ -682,6 +687,16 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
ajv@^6.12.2:
version "6.12.3"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706"
integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==
dependencies:
fast-deep-equal "^3.1.1"
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
ansi-colors@4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
@@ -1162,7 +1177,7 @@ chai@4.2.0:
pathval "^1.1.0"
type-detect "^4.0.5"
chalk@4.1.0:
chalk@4.1.0, chalk@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
@@ -1236,6 +1251,21 @@ chokidar@^2.1.8:
optionalDependencies:
fsevents "^1.2.7"
chokidar@^3.4.1:
version "3.4.1"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.1.tgz#e905bdecf10eaa0a0b1db0c664481cc4cbc22ba1"
integrity sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==
dependencies:
anymatch "~3.1.1"
braces "~3.0.2"
glob-parent "~5.1.0"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.4.0"
optionalDependencies:
fsevents "~2.1.2"
chownr@^1.1.1:
version "1.1.4"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
@@ -1753,7 +1783,7 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0:
dependencies:
once "^1.4.0"
enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0:
enhanced-resolve@^4.0.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66"
integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==
@@ -1771,6 +1801,15 @@ enhanced-resolve@^4.1.1:
memory-fs "^0.5.0"
tapable "^1.0.0"
enhanced-resolve@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126"
integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==
dependencies:
graceful-fs "^4.1.2"
memory-fs "^0.5.0"
tapable "^1.0.0"
enquirer@^2.3.5:
version "2.3.5"
resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.5.tgz#3ab2b838df0a9d8ab9e7dff235b0e8712ef92381"
@@ -1936,10 +1975,10 @@ eslint-plugin-no-null@1.0.2:
resolved "https://registry.yarnpkg.com/eslint-plugin-no-null/-/eslint-plugin-no-null-1.0.2.tgz#1236a812391390a1877ad4007c26e745341c951f"
integrity sha1-EjaoEjkTkKGHetQAfCbnRTQclR8=
eslint-plugin-prefer-arrow@1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.1.tgz#9e2943cdae4476e41f94f50dd7a250f267db6865"
integrity sha512-CPAvdTGG0YbFAJrUKdRBrOJ0X1I7jTtF5VIM4m2Bw1/A2jrhfUeUAcPy4pAEB5DNaUuDqc59f3pKTeiVeamS1A==
eslint-plugin-prefer-arrow@1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.2.tgz#0c6d25a6b94cb3e0110a23d129760af5860edb6e"
integrity sha512-C8YMhL+r8RMeMdYAw/rQtE6xNdMulj+zGWud/qIGnlmomiPRaLDGLMeskZ3alN6uMBojmooRimtdrXebLN4svQ==
eslint-plugin-unicorn@21.0.0:
version "21.0.0"
@@ -2356,20 +2395,21 @@ fork-ts-checker-notifier-webpack-plugin@3.0.0:
dependencies:
node-notifier "^6.0.0"
fork-ts-checker-webpack-plugin@5.0.7:
version "5.0.7"
resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-5.0.7.tgz#a462bd863bbd654bad14a25518006ab99b7b13a0"
integrity sha512-X7zHKTx4is5YSKa9bDiXGzv8v5K3bsUrZlZgr3F8DeCVsb3oik/+0Mo+K138Sdjh4mpzoHcuUgsrIgZeLIXovw==
fork-ts-checker-webpack-plugin@5.0.11:
version "5.0.11"
resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-5.0.11.tgz#40a49a45403910c118c6ae7f3415dbdb317e4574"
integrity sha512-7QFCTfjayFhoX7uxncnHHi3ICWwffUQMoYaHldElA6wYy/9aDTsRIi6QcS8MDAkZa7xdDyv0YKuqcGYjAzboyQ==
dependencies:
"@babel/code-frame" "^7.8.3"
chalk "^2.4.1"
"@types/json-schema" "^7.0.5"
chalk "^4.1.0"
cosmiconfig "^6.0.0"
deepmerge "^4.2.2"
fs-extra "^9.0.0"
memfs "^3.1.2"
minimatch "^3.0.4"
schema-utils "1.0.0"
semver "^5.6.0"
schema-utils "2.7.0"
semver "^7.3.2"
tapable "^1.0.0"
form-data@~2.3.2:
@@ -4095,7 +4135,7 @@ performance-now@^2.1.0:
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.0.7:
picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.0.7, picomatch@^2.2.1:
version "2.2.2"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
@@ -4365,6 +4405,13 @@ readdirp@~3.3.0:
dependencies:
picomatch "^2.0.7"
readdirp@~3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada"
integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==
dependencies:
picomatch "^2.2.1"
reflect-metadata@0.1.13:
version "0.1.13"
resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08"
@@ -4580,7 +4627,16 @@ safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
schema-utils@1.0.0, schema-utils@^1.0.0:
schema-utils@2.7.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7"
integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
dependencies:
"@types/json-schema" "^7.0.4"
ajv "^6.12.2"
ajv-keywords "^3.4.1"
schema-utils@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
@@ -5408,14 +5464,23 @@ vm-browserify@^1.0.1:
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
watchpack@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.1.tgz#280da0a8718592174010c078c7585a74cd8cd0e2"
integrity sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==
watchpack-chokidar2@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0"
integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==
dependencies:
chokidar "^2.1.8"
watchpack@^1.7.4:
version "1.7.4"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b"
integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==
dependencies:
graceful-fs "^4.1.2"
neo-async "^2.5.0"
optionalDependencies:
chokidar "^3.4.1"
watchpack-chokidar2 "^2.0.0"
webpack-cli@3.3.12:
version "3.3.12"
@@ -5447,10 +5512,10 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1:
source-list-map "^2.0.0"
source-map "~0.6.1"
webpack@4.43.0:
version "4.43.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6"
integrity sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==
webpack@4.44.0:
version "4.44.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.0.tgz#3b08f88a89470175f036f4a9496b8a0428668802"
integrity sha512-wAuJxK123sqAw31SpkPiPW3iKHgFUiKvO7E7UZjtdExcsRe3fgav4mvoMM7vvpjLHVoJ6a0Mtp2fzkoA13e0Zw==
dependencies:
"@webassemblyjs/ast" "1.9.0"
"@webassemblyjs/helper-module-context" "1.9.0"
@@ -5460,7 +5525,7 @@ webpack@4.43.0:
ajv "^6.10.2"
ajv-keywords "^3.4.1"
chrome-trace-event "^1.0.2"
enhanced-resolve "^4.1.0"
enhanced-resolve "^4.3.0"
eslint-scope "^4.0.3"
json-parse-better-errors "^1.0.2"
loader-runner "^2.4.0"
@@ -5473,7 +5538,7 @@ webpack@4.43.0:
schema-utils "^1.0.0"
tapable "^1.1.3"
terser-webpack-plugin "^1.4.3"
watchpack "^1.6.1"
watchpack "^1.7.4"
webpack-sources "^1.4.1"
which-module@^2.0.0: