{"bugs":{"url":"https://github.com/rwjblue/ember-cli-version-checker/issues"},"dist":{"shasum":"27b938228306cb0dbc4f74e95c536cdd6448e499","tarball":"https://registry.npmjs.org/ember-cli-version-checker/-/ember-cli-version-checker-4.1.1.tgz","fileCount":11,"integrity":"sha512-bzEWsTMXUGEJfxcAGWPe6kI7oHEGD3jaxUWDYPTqzqGhNkgPwXTBgoWs9zG1RaSMaOPFnloWuxRcoHi4TrYS3Q==","signatures":[{"sig":"MEYCIQCPLSsqcwW+sRD+vokUFAzCU055Gcg8bznSVmQwRHRwpAIhAK0Gs7Y6VH4hpIXOz8caIYzMJDa88aNVScQcUTyhaYcC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25449,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexqZxCRA9TVsSAnZWagAA2xoP/1CDr4jsDKftzpXzPprU\n+5eXP9VMv+TZJIs4aJ6mi8G4EXS3WY41bNDmNz7ZHnLKMkzK/IynC2bpIIZG\n0NIOf/mlBQ6K0QtrjAYgnv1HTh7MirYykvsTYfKCUq4cDT/Jt5XK45E6ajeN\nsUILpvAeQgwe5yPGuZ+WAlYXyRNDsfC7OmF61ypEdkcNlmnEmwq4RJ7Fvfjc\ntzMsAzS7NWPbDcMlyjNMBviFBV1lM9e2S0C5N6bDldxvT+L+RUxNO0WKpYdh\nZVXKkg3OsYpuGAc5IXauDBRqc+33ql8y90vAYfkOQQUQpJB82qzN550oRm7R\nUOg3gNGxDiyyf1GxeDY33a+khRjTrg9OOK039QQe05+xu605vZ6EVCGwPJX8\nHMqpWYjh/erzxSQDPZFg3cipzhp2ZbfkrTWGvXFZ2TyD/f2aLsrpGqvu+L3D\nnDAyt+3WuNJSr4g6WfopIMqJ7WVGSRpf3bK8e8oTDY+9k02NE+cLA7UIuwNt\ndQm4MjW6NZkIzMLaKNd2QU39xpdwz5h+pVA5jA5XJX2icsjN1D1Ovwp3p9V9\nUV4qVkHX9lVLVQj9pAoSc42+FEWz8W2XILvYTolkC3pz+zeUhtrjLaFXK08V\n4jVWPseS9tmU/YwpNSi6Maxb1Wuv10Q/6Vp+AcCsf4yior4nft4X8iLxn91L\naR82\r\n=frpf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","name":"ember-cli-version-checker","volta":{"node":"8.17.0"},"author":{"name":"Robert Jackson","email":"me@rwjblue.com"},"readme":"# Ember CLI Version Checker\n\n[![npm version](https://badge.fury.io/js/ember-cli-version-checker.svg)](https://badge.fury.io/js/ember-cli-version-checker)\n[![Build Status](https://travis-ci.org/ember-cli/ember-cli-version-checker.svg?branch=master)](https://travis-ci.org/ember-cli/ember-cli-version-checker)\n\nMakes it easier to determine if a compatible version of a given NPM or Bower package is present.\n\n## Usage\n\nExample:\n\nYou want to provide two different sets of templates, based on the currently running Ember version.\n\n```javascript\nlet path = require('path');\nlet VersionChecker = require('ember-cli-version-checker');\n\nmodule.exports = {\n  name: 'awesome-addon',\n  treeForAddonTemplates(tree) {\n    let checker = new VersionChecker(this.project);\n    let dep = checker.for('ember', 'bower');\n\n    let baseTemplatesPath = path.join(this.root, 'addon/templates');\n\n    if (dep.satisfies('>= 1.13.0')) {\n      return this.treeGenerator(path.join(baseTemplatesPath, 'current'));\n    } else {\n      return this.treeGenerator(path.join(baseTemplatesPath, 'legacy'));\n    }\n  }\n};\n```\n\n## API\n\n### Semver Methods (gt, lt, gte, lte, eq, neq, satisfies)\n\nSee https://github.com/npm/node-semver#comparison and https://github.com/npm/node-semver#ranges-1 for more info\n\n```js\nlet VersionChecker = require('ember-cli-version-checker');\n\nmodule.exports = {\n  name: 'awesome-addon',\n  init() {\n    this._super.init.apply(this, arguments);\n\n    let checker = new VersionChecker(this.project);\n    let dep = checker.for('ember-cli');\n\n    if (dep.gte('2.0.0')) {\n      /* deal with 2.0.0+ stuff */\n    } else {\n      /* provide backwards compat */\n    };\n  }\n};\n```\n\n### assertAbove\n\nThrows an error with the given message if a minimum version isn't met.\n\n```javascript\nlet VersionChecker = require('ember-cli-version-checker');\n\nmodule.exports = {\n  name: 'awesome-addon',\n  init() {\n    this._super.init.apply(this, arguments);\n\n    let checker = new VersionChecker(this.project);\n\n    checker.for('ember-cli').assertAbove('2.0.0');\n  }\n};\n```\n\nYou can also provide a specific message as the third argument to `assertAbove` if you'd like to customize the output.\n\n```javascript\nlet VersionChecker = require('ember-cli-version-checker');\n\nmodule.exports = {\n  name: 'awesome-addon',\n  init() {\n    this._super.init.apply(this, arguments);\n\n    let checker = new VersionChecker(this.project);\n\n    checker.for('ember-cli').assertAbove('2.0.0', 'To use awesome-addon you must have ember-cli 2.0.0');\n  }\n};\n```\n\n### isAbove\n\nReturns `true` if the packages version is above the specified comparison range.\n\n```javascript\nlet VersionChecker = require('ember-cli-version-checker');\n\nmodule.exports = {\n  name: 'awesome-addon',\n  init() {\n    this._super.init.apply(this, arguments);\n\n    let checker = new VersionChecker(this.project);\n    let dep = checker.for('ember-cli');\n\n    if (dep.isAbove('2.0.0')) {\n      /* deal with 2.0.0 stuff */\n    } else {\n      /* provide backwards compat */\n    };\n  }\n};\n```\n\n### forEmber\n\nSince ember introduced the `ember-source` from NPM, ember has two ways to be\nshipped. One from bower `ember` and other from NPM `ember-source`. The\nfunction `forEmber` will look for `ember-source` from NPM, if it doesn't\nfind it, it will look for `ember` in bower.\n\n```javascript\nlet VersionChecker = require('ember-cli-version-checker');\n\nmodule.exports = {\n  name: 'awesome-addon',\n  init() {\n    this._super.init.apply(this, arguments);\n\n    let checker = new VersionChecker(this.project);\n    let ember = checker.forEmber();\n\n    if (ember.isAbove('2.10.0')) {\n      /* deal with 2.10.0 stuff */\n    };\n  }\n};\n```\n\n### exists\n\nReturns `true` or `false` indicating if the dependency exists (at any version).\n\n```js\nlet VersionChecker = require('ember-cli-version-checker');\n\nmodule.exports = {\n  name: 'awesome-addon',\n  init() {\n    this._super.init.apply(this, arguments);\n\n    let checker = new VersionChecker(this.project);\n    let dep = checker.for('ember-cli-qunit');\n\n    if (dep.exists()) {\n      /* do things when present */\n    };\n  }\n};\n```\n\n### version\n\nA property that returns the version for the dependency, if the dependency is not found\n`undefined` will be returned.\n\n```js\nlet VersionChecker = require('ember-cli-version-checker');\n\nmodule.exports = {\n  name: 'awesome-addon',\n  init() {\n    this._super.init.apply(this, arguments);\n\n    let checker = new VersionChecker(this.project);\n    let dep = checker.for('ember-cli-qunit');\n\n    // do something with dep.version\n  }\n};\n```\n\n### hasSingleImplementation\n\nReturns `true` if there is only single implementation in node_modules of the\naddon. It can either be at app top-level or as a nested dependency. This API\ndoes not work with non-addon npm dependency.\n\nA unique addon can still be included multiple times if it's a nested\ndependency, but they are guaranteed to be resolved to same version in\nnode_modules. This happens when the dependency in problem specifies a valid\nversion range or the app uses [yarn\n  resolutions](https://yarnpkg.com/lang/en/docs/selective-version-resolutions/).\n\nThis is useful if the app wants to make sure there's no unexpected assets from\nthe addon on being included but still alow the addon being included in the\nhierarchy's build process.\n\n```js\nconst VersionChecker = require('ember-cli-version-checker');\n\nmodule.exports = {\n  name: 'awesome-addon',\n  included() {\n    this._super.included.apply(this, arguments);\n\n    let checker = VersionChecker.forProject(this.project);\n\n    if (checker.hasSingleImplementation('<my-addon>')) {\n      /* do things when <my-addon> is unique */\n    }\n  }\n};\n```\n\n### assertSingleImplementation\n\nThrows an error if the addon isn't unique, and receives an optional message\nparam to customize the error message.\n\n```js\nconst VersionChecker = require('ember-cli-version-checker');\n\nmodule.exports = {\n  name: 'awesome-addon',\n  included() {\n    this._super.included.apply(this, arguments);\n\n    let checker = VersionChecker.forProject(this.project);\n\n    checker.assertSingleImplementation('<my-addon>', 'Please make sure <my-addon> has only one implementation, please correct and here is a helpful message!');\n  }\n};\n```\n\n### filterAddonsByName\n\nFind all addon instances with the same name\n\n```js\nconst VersionChecker = require('ember-cli-version-checker');\n\nmodule.exports = {\n  name: 'awesome-addon',\n  included() {\n    this._super.included.apply(this, arguments);\n\n    let checker = VersionChecker.forProject(this.project);\n\n    checker.filterAddonsByName('<my-addon>'); // => an array of addon instances who have the name `<my-addon>`\n  }\n};\n```\n\n\n### allAddons\n\nAn iterator which gives acccess to all addon instances\n\n```js\nconst VersionChecker = require('ember-cli-version-checker');\n\nmodule.exports = {\n  name: 'awesome-addon',\n  included() {\n    this._super.included.apply(this, arguments);\n\n    let checker = VersionChecker.forProject(this.project);\n\n    for (let { name, root } = checker.allAddons()) {\n      // access to the add-on, in this case root + name\n    }\n  }\n};\n```\n\n## Note\n\n### How does the version resolution works?\n\nWhen creating `VersionChecker(addonOrAppOrProject)`, the param needs to have a `root`\nproperty for the VersionChecker to perform node's\n[module resolution](https://nodejs.org/api/modules.html#modules_all_together).\n\n### Should I use project or parent?\n\nThe two primary options that are valid are:\n\n- `new VersionChecker(this.project)`\n- `new VersionChecker(this.parent)`\n\nWhich one to use depends on if the addon is trying to find a known top-level library or its parent's.\n\nFor example, you may want to check `this.project` root path to find `ember-cli` or `ember-source`,\nwhich are expected to be top-level.\nOr you may want to check your parent's specific dependency that affects your addon's behavior, you should create\nfrom `this.parent`.\n\nIf you create via `new VersionChecker(this)` in an addon, it will resolve from your addon's path and have your\nown dependency's version instead of top-level dependency's if exists. This will result in unreliable result.\n","engines":{"node":"8.* || 10.* || >= 12.*"},"gitHead":"35079252b06f41ff3e653807756661f0b376acd7","license":"MIT","scripts":{"test":"mocha tests","changelog":"lerna-changelog","test:debug":"mocha debug tests"},"_npmUser":{"name":"rwjblue","email":"me@rwjblue.com"},"homepage":"https://github.com/rwjblue/ember-cli-version-checker","prettier":{"singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/rwjblue/ember-cli-version-checker.git","type":"git"},"_npmVersion":"6.13.4","description":"Determine if your addon is being used by a minimum version of Ember CLI.","directories":{"test":"tests"},"maintainers":[{"name":"ember-cli","email":"stefan.penner+ember-cli@gmail.com"},{"name":"nathanhammond","email":"npm@nathanhammond.com"},{"name":"rwjblue","email":"me@rwjblue.com"},{"name":"stefanpenner","email":"stefan.penner@gmail.com"},{"name":"turbo87","email":"tobias.bieniek@gmx.de"}],"_nodeVersion":"8.17.0","dependencies":{"semver":"^6.3.0","silent-error":"^1.1.1","resolve-package-path":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"mocha":"^7.0.0","prettier":"^1.19.1","mocha-eslint":"^6.0.0","lerna-changelog":"^0.8.3","broccoli-test-helper":"^2.0.0","eslint-config-prettier":"^6.9.0","eslint-plugin-prettier":"^3.1.2"},"_npmOperationalInternal":{"tmp":"tmp/ember-cli-version-checker_4.1.1_1590077041048_0.2703330721665269","host":"s3://npm-registry-packages"},"_id":"ember-cli-version-checker@4.1.1","version":"4.1.1"}