get-range-to-reference.js 1005 B

1234567891011121314151617181920212223242526272829303132
  1. "use strict";
  2. const npa = require("npm-package-arg");
  3. const path = require("path");
  4. const semver = require("semver");
  5. module.exports.getRangeToReference = getRangeToReference;
  6. /** @typedef {import("npm-package-arg").Result & { version: string; saveRelativeFileSpec?: boolean; }} DecoratedSpec */
  7. /**
  8. * Determine version range used when serializing changes or choosing packages to change.
  9. * @param {DecoratedSpec} spec
  10. * @param {Record<string, string>} deps
  11. * @param {string} loc
  12. * @param {string} prefix
  13. */
  14. function getRangeToReference(spec, deps, loc, prefix) {
  15. const current = deps[spec.name];
  16. const resolved = spec.type === "tag" ? `${prefix}${spec.version}` : spec.fetchSpec;
  17. if (spec.saveRelativeFileSpec) {
  18. // "version" has been resolved to pkg.location in getPackageVersion()
  19. return npa.resolve(spec.name, path.relative(loc, spec.version), loc).saveSpec;
  20. }
  21. if (prefix && current && semver.intersects(current, resolved)) {
  22. return current;
  23. }
  24. return resolved;
  25. }