diff --git a/README.md b/README.md index 189c6a6b..479cbcb4 100755 --- a/README.md +++ b/README.md @@ -120,6 +120,7 @@ interface EmberCLIBabelConfig { disableDebugTooling?: boolean; disablePresetEnv?: boolean; disableEmberModulesAPIPolyfill?: boolean; + disableEmberDataPackagesPolyfill?: boolean; disableDecoratorTransforms?: boolean; extensions?: string[]; }; diff --git a/index.js b/index.js index 6010ab74..26e70141 100644 --- a/index.js +++ b/index.js @@ -301,6 +301,7 @@ module.exports = { userPlugins, this._getDebugMacroPlugins(config), this._getEmberModulesAPIPolyfill(config), + this._getEmberDataPackagesPolyfill(config), shouldCompileModules && this._getModulesPlugin(), userPostTransformPlugins ).filter(Boolean); @@ -444,6 +445,16 @@ module.exports = { } }, + _getEmberDataPackagesPolyfill(config) { + let addonOptions = config['ember-cli-babel'] || {}; + + if (addonOptions.disableEmberDataPackagesPolyfill) { return; } + + if (this._emberDataVersionRequiresPackagesPolyfill()) { + return [[require.resolve('babel-plugin-ember-data-packages-polyfill')]]; + } + }, + _getPresetEnv(config) { let options = config.options; @@ -511,6 +522,20 @@ module.exports = { return true; }, + _emberDataVersionRequiresPackagesPolyfill() { + let checker = new VersionChecker(this.project); + let dep = checker.for('ember-data'); + let hasEmberData = dep.exists(); + + if (hasEmberData) { + if (!dep.version) { + throw new Error('EmberData missing version'); + } + return semver.lt(dep.version, '3.12.0-alpha.0'); + } + return false; + }, + _getEmberModulesAPIBlacklist() { const blacklist = { '@ember/debug': ['assert', 'deprecate', 'warn'], diff --git a/node-tests/addon-test.js b/node-tests/addon-test.js index 597ee270..229d312a 100644 --- a/node-tests/addon-test.js +++ b/node-tests/addon-test.js @@ -8,10 +8,23 @@ const CoreObject = require('core-object'); const AddonMixin = require('../index'); const CommonTags = require('common-tags'); const stripIndent = CommonTags.stripIndent; +const FixturifyProject = require('fixturify-project'); +const EmberProject = require('ember-cli/lib/models/project'); +const MockCLI = require('ember-cli/tests/helpers/mock-cli'); const BroccoliTestHelper = require('broccoli-test-helper'); const createBuilder = BroccoliTestHelper.createBuilder; const createTempDir = BroccoliTestHelper.createTempDir; const terminateWorkerPool = require('./utils/terminate-workers'); +const path = require('path'); +const fs = require('fs'); + +function prepareAddon(addon) { + addon.pkg.keywords.push('ember-addon'); + addon.pkg['ember-addon'] = {}; + addon.files['index.js'] = 'module.exports = { name: require("./package").name };'; + + return addon; +} let Addon = CoreObject.extend(AddonMixin); @@ -22,6 +35,8 @@ describe('ember-cli-babel', function() { beforeEach(function() { this.ui = new MockUI(); let project = { + isEmberCLIProject: () => true, + _addonsInitialized: true, root: __dirname, emberCLIVersion: () => '2.16.2', dependencies() { return {}; }, @@ -1214,3 +1229,134 @@ describe('ember-cli-babel', function() { }); }); }); + +describe('EmberData Packages Polyfill', function() { + this.timeout(0); + + let input; + let output; + let subject; + let setupForVersion; + let project; + let unlink; + + beforeEach(function() { + setupForVersion = async (v) => { + let fixturifyProject = new FixturifyProject('whatever', '0.0.1'); + fixturifyProject.addDependency('ember-data', v, addon => { + return prepareAddon(addon); + }); + fixturifyProject.addDependency('ember-cli-babel', 'babel/ember-cli-babel#master'); + fixturifyProject.addDependency('random-addon', '0.0.1', addon => { + return prepareAddon(addon); + }); + let pkg = JSON.parse(fixturifyProject.toJSON('package.json')); + fixturifyProject.writeSync(); + + let linkPath = path.join(fixturifyProject.root, '/whatever/node_modules/ember-cli-babel'); + let addonPath = path.resolve(__dirname, '../'); + fs.rmdirSync(linkPath, { recursive: true }); + fs.symlinkSync(addonPath, linkPath); + unlink = () => { + fs.unlinkSync(linkPath); + }; + + let cli = new MockCLI(); + let root = path.join(fixturifyProject.root, 'whatever'); + project = new EmberProject(root, pkg, cli.ui, cli); + project.initializeAddons(); + + this.addon = project.addons.find(a => { return a.name === 'ember-cli-babel'; }); + + input = await createTempDir(); + }; + }); + + afterEach(async function() { + unlink(); + await input.dispose(); + await output.dispose(); + // shut down workers after the tests are run so that mocha doesn't hang + await terminateWorkerPool(); + }); + + it("does not convert when _emberDataVersionRequiresPackagesPolyfill returns false", async function() { + await setupForVersion('3.12.0-alpha.0'); + input.write({ + "foo.js": `export { default } from '@ember-data/store';`, + "bar.js": `import Model, { attr } from '@ember-data/model';\nexport var User = Model;\nexport var name = attr;`, + }); + + subject = this.addon.transpileTree(input.path(), { + 'ember-cli-babel': { + compileModules: false, + disableDebugTooling: true, + disableEmberDataPackagesPolyfill: true + } + }); + + output = createBuilder(subject); + + await output.build(); + + expect( + output.read() + ).to.deep.equal({ + "foo.js": `export { default } from '@ember-data/store';`, + "bar.js": `import Model, { attr } from '@ember-data/model';\nexport var User = Model;\nexport var name = attr;`, + }); + }); + + it("does not convert for EmberData when _emberDataVersionRequiresPackagesPolyfill returns true and disableEmberDataPackagesPolyfill is true", async function() { + await setupForVersion('3.11.0'); + input.write({ + "foo.js": `export { default } from '@ember-data/store';`, + "bar.js": `import Model, { attr } from '@ember-data/model';\nexport var User = Model;\nexport var name = attr;`, + }); + + subject = this.addon.transpileTree(input.path(), { + 'ember-cli-babel': { + compileModules: false, + disableDebugTooling: true, + disableEmberDataPackagesPolyfill: true + } + }); + + output = createBuilder(subject); + + await output.build(); + + expect( + output.read() + ).to.deep.equal({ + "foo.js": `export { default } from '@ember-data/store';`, + "bar.js": `import Model, { attr } from '@ember-data/model';\nexport var User = Model;\nexport var name = attr;`, + }); + }); + + it("it does convert for EmberData when _emberDataVersionRequiresPackagesPolyfill returns true", async function() { + await setupForVersion('3.11.99'); + input.write({ + "foo.js": `export { default } from '@ember-data/store';`, + "bar.js": `import Model, { attr } from '@ember-data/model';\nexport var User = Model;export var name = attr;`, + }); + + subject = this.addon.transpileTree(input.path(), { + 'ember-cli-babel': { + compileModules: false, + disableDebugTooling: true, + } + }); + + output = createBuilder(subject); + + await output.build(); + + expect( + output.read() + ).to.deep.equal({ + "foo.js": `import DS from "ember-data";\nexport default DS.Store;`, + "bar.js": `import DS from "ember-data";\nexport var User = DS.Model;\nexport var name = DS.attr;`, + }); + }); +}); diff --git a/package.json b/package.json index 7e55d9e7..3c288969 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "@babel/runtime": "^7.8.3", "amd-name-resolver": "^1.2.1", "babel-plugin-debug-macros": "^0.3.0", + "babel-plugin-ember-data-packages-polyfill": "^0.1.0", "babel-plugin-ember-modules-api-polyfill": "^2.12.0", "babel-plugin-module-resolver": "^3.1.1", "broccoli-babel-transpiler": "^7.4.0", @@ -58,8 +59,9 @@ "broccoli-source": "^1.1.0", "clone": "^2.1.2", "ember-cli-babel-plugin-helpers": "^1.1.0", - "ember-cli-version-checker": "^2.1.2", + "ember-cli-version-checker": "^4.1.0", "ensure-posix-path": "^1.0.2", + "fixturify-project": "^1.10.0", "semver": "^5.5.0" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 1c57703f..33166e73 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== @@ -39,6 +39,16 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/generator@^7.7.4": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.7.tgz#859ac733c44c74148e1a72980a64ec84b85f4f45" + integrity sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ== + dependencies: + "@babel/types" "^7.7.4" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + "@babel/generator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.3.tgz#0e22c005b0a94c1c74eafe19ef78ce53a4d45c03" @@ -121,6 +131,15 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helper-function-name@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e" + integrity sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ== + dependencies: + "@babel/helper-get-function-arity" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/types" "^7.7.4" + "@babel/helper-function-name@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" @@ -218,6 +237,13 @@ "@babel/template" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/helper-split-export-declaration@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8" + integrity sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug== + dependencies: + "@babel/types" "^7.7.4" + "@babel/helper-split-export-declaration@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" @@ -253,7 +279,12 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.8.3": +"@babel/parser@^7.0.0", "@babel/parser@^7.7.4": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.7.tgz#1b886595419cf92d811316d5b715a53ff38b4937" + integrity sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw== + +"@babel/parser@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.3.tgz#790874091d2001c9be6ec426c2eed47bc7679081" integrity sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ== @@ -760,7 +791,22 @@ "@babel/parser" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.8.3": +"@babel/traverse@^7.0.0": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558" + integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.7.4" + "@babel/helper-function-name" "^7.7.4" + "@babel/helper-split-export-declaration" "^7.7.4" + "@babel/parser" "^7.7.4" + "@babel/types" "^7.7.4" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/traverse@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.3.tgz#a826215b011c9b4f73f3a893afbc05151358bf9a" integrity sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg== @@ -775,7 +821,16 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.8.3": +"@babel/types@^7.0.0", "@babel/types@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193" + integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@babel/types@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== @@ -784,6 +839,11 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@ember-data/rfc395-data@^0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@ember-data/rfc395-data/-/rfc395-data-0.0.4.tgz#ecb86efdf5d7733a76ff14ea651a1b0ed1f8a843" + integrity sha512-tGRdvgC9/QMQSuSuJV45xoyhI0Pzjm7A9o/MVVA3HakXIImJbbzx/k/6dO9CUEQXIyS2y0fW6C1XaYOG7rY0FQ== + "@ember/test-helpers@^1.7.1": version "1.7.1" resolved "https://registry.yarnpkg.com/@ember/test-helpers/-/test-helpers-1.7.1.tgz#cc22a954b3b46856518f034bd492a74e0482389f" @@ -906,7 +966,14 @@ resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== -"@types/glob@^7.1.1": +"@types/fs-extra@^5.0.5": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-5.1.0.tgz#2a325ef97901504a3828718c390d34b8426a10a1" + integrity sha512-AInn5+UBFIK9FK5xc9yP5e3TQSPNNgjHByqYcj9g5elVBnDQcQL7PlO1CIRy2gWlbwK7UPYqi7vRvFA44dCmYQ== + dependencies: + "@types/node" "*" + +"@types/glob@*", "@types/glob@^7.1.1": version "7.1.1" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== @@ -925,6 +992,14 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.6.2.tgz#a5ccec6abb6060d5f20d256fb03ed743e9774999" integrity sha512-gojym4tX0FWeV2gsW4Xmzo5wxGjXGm550oVUII7f7G5o4BV6c7DBdiG1RRQd+y1bvqRyYtPfMK85UM95vsapqQ== +"@types/rimraf@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-2.0.3.tgz#0199a46af106729ba14213fda7b981278d8c84f2" + integrity sha512-dZfyfL/u9l/oi984hEXdmAjX3JHry7TLWw43u1HQ8HhPv6KtfxnrZ3T/bleJ0GEvnk9t5sM7eePkgMqz3yBcGg== + dependencies: + "@types/glob" "*" + "@types/node" "*" + "@types/symlink-or-copy@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@types/symlink-or-copy/-/symlink-or-copy-1.2.0.tgz#4151a81b4052c80bc2becbae09f3a9ec010a9c7a" @@ -1494,6 +1569,13 @@ babel-plugin-dynamic-import-node@^2.3.0: dependencies: object.assign "^4.1.0" +babel-plugin-ember-data-packages-polyfill@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-ember-data-packages-polyfill/-/babel-plugin-ember-data-packages-polyfill-0.1.0.tgz#fa63867de4a717df572776ba528d270ff74db125" + integrity sha512-MZBdY+i1aZuShfTDq2RIcuE8usGFsqle0+ziV0kZjf6nTzZjEILYRkiaXG6om6I7qKYYoS1Lcs8zsQA9ZJ1Xkw== + dependencies: + "@ember-data/rfc395-data" "^0.0.4" + babel-plugin-ember-modules-api-polyfill@^2.12.0, babel-plugin-ember-modules-api-polyfill@^2.6.0: version "2.12.0" resolved "https://registry.yarnpkg.com/babel-plugin-ember-modules-api-polyfill/-/babel-plugin-ember-modules-api-polyfill-2.12.0.tgz#a5e703205ba4e625a7fab9bb1aea64ef3222cf75" @@ -3634,6 +3716,15 @@ ember-cli-version-checker@^3.0.0: resolve-package-path "^1.2.6" semver "^5.6.0" +ember-cli-version-checker@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ember-cli-version-checker/-/ember-cli-version-checker-4.1.0.tgz#7fc9836bdbc87451d286ba6a9a89b23591d8bbb7" + integrity sha512-yLf2YqotTSsjiXwx9Dt6H7AU0QcldFn5SLk/pG3Zqb0aHNeanBOPlx4/Ysa46ILGWYIh0fDH34AEVRueXTrQBQ== + dependencies: + resolve-package-path "^2.0.0" + semver "^6.3.0" + silent-error "^1.1.1" + ember-cli@~3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/ember-cli/-/ember-cli-3.3.0.tgz#534ebe72453a4fb064a34077a0874ad69ea84be4" @@ -4513,6 +4604,14 @@ fireworm@^0.7.0: lodash.flatten "^3.0.2" minimatch "^3.0.2" +fixturify-project@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/fixturify-project/-/fixturify-project-1.10.0.tgz#091c452a9bb15f09b6b9cc7cf5c0ad559f1d9aad" + integrity sha512-L1k9uiBQuN0Yr8tA9Noy2VSQ0dfg0B8qMdvT7Wb5WQKc7f3dn3bzCbSrqlb+etLW+KDV4cBC7R1OvcMg3kcxmA== + dependencies: + fixturify "^1.2.0" + tmp "^0.0.33" + fixturify@^0.3.2: version "0.3.4" resolved "https://registry.yarnpkg.com/fixturify/-/fixturify-0.3.4.tgz#c676de404a7f8ee8e64d0b76118e62ec95ab7b25" @@ -4521,6 +4620,17 @@ fixturify@^0.3.2: fs-extra "^0.30.0" matcher-collection "^1.0.4" +fixturify@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fixturify/-/fixturify-1.2.0.tgz#abe8c52dd27dbbfdb874a02893781c93425663ea" + integrity sha512-b5CMQmBZKsGR6HGqdSrLOGYGHIqrR0CUrcGU/lDL0mYy+DtGm5cnb61Z0UiIUqMVZIoV0CbN+u9/Gwjj+ICg0A== + dependencies: + "@types/fs-extra" "^5.0.5" + "@types/minimatch" "^3.0.3" + "@types/rimraf" "^2.0.2" + fs-extra "^7.0.1" + matcher-collection "^2.0.0" + flat-cache@^1.2.1: version "1.3.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" @@ -4643,7 +4753,7 @@ fs-extra@^5.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^7.0.0: +fs-extra@^7.0.0, fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== @@ -6574,6 +6684,14 @@ matcher-collection@^1.0.0, matcher-collection@^1.0.4, matcher-collection@^1.1.1: dependencies: minimatch "^3.0.2" +matcher-collection@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/matcher-collection/-/matcher-collection-2.0.1.tgz#90be1a4cf58d6f2949864f65bb3b0f3e41303b29" + integrity sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ== + dependencies: + "@types/minimatch" "^3.0.3" + minimatch "^3.0.2" + math-random@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" @@ -8121,6 +8239,14 @@ resolve-package-path@^1.0.11, resolve-package-path@^1.2.6: path-root "^0.1.1" resolve "^1.10.0" +resolve-package-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-package-path/-/resolve-package-path-2.0.0.tgz#7f258ab86ff074fff4ff8027a28f94d17d6fb1df" + integrity sha512-/CLuzodHO2wyyHTzls5Qr+EFeG6RcW4u6//gjYvUfcfyuplIX1SSccU+A5A9A78Gmezkl3NBkFAMxLbzTY9TJA== + dependencies: + path-root "^0.1.1" + resolve "^1.13.1" + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -8140,6 +8266,13 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.0, resolve@^1.3.2, resolve@^1.3.3, dependencies: path-parse "^1.0.6" +resolve@^1.13.1: + version "1.15.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5" + integrity sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw== + dependencies: + path-parse "^1.0.6" + responselike@1.0.2, responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -8421,7 +8554,7 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= -silent-error@^1.0.0, silent-error@^1.0.1, silent-error@^1.1.0: +silent-error@^1.0.0, silent-error@^1.0.1, silent-error@^1.1.0, silent-error@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/silent-error/-/silent-error-1.1.1.tgz#f72af5b0d73682a2ba1778b7e32cd8aa7c2d8662" integrity sha512-n4iEKyNcg4v6/jpb3c0/iyH2G1nzUNl7Gpqtn/mHIJK9S/q/7MCfoO4rwVOoO59qPFIc0hVHvMbiOJ0NdtxKKw==