mirror of
https://github.com/atom/atom.git
synced 2026-04-28 03:01:47 -04:00
Move deprecated-packages functions into PackageManager
This commit is contained in:
@@ -1,43 +0,0 @@
|
||||
semver = require 'semver'
|
||||
|
||||
deprecatedPackages = require('../package.json')?._deprecatedPackages ? {}
|
||||
ranges = {}
|
||||
|
||||
exports.getDeprecatedPackageMetadata = (name) ->
|
||||
metadata = null
|
||||
if deprecatedPackages.hasOwnProperty(name)
|
||||
metadata = deprecatedPackages[name]
|
||||
Object.freeze(metadata) if metadata
|
||||
metadata
|
||||
|
||||
exports.isDeprecatedPackage = (name, version) ->
|
||||
return false unless deprecatedPackages.hasOwnProperty(name)
|
||||
|
||||
deprecatedVersionRange = deprecatedPackages[name].version
|
||||
return true unless deprecatedVersionRange
|
||||
|
||||
semver.valid(version) and satisfies(version, deprecatedVersionRange)
|
||||
|
||||
satisfies = (version, rawRange) ->
|
||||
unless parsedRange = ranges[rawRange]
|
||||
parsedRange = new Range(rawRange)
|
||||
ranges[rawRange] = parsedRange
|
||||
parsedRange.test(version)
|
||||
|
||||
# Extend semver.Range to memoize matched versions for speed
|
||||
class Range extends semver.Range
|
||||
constructor: ->
|
||||
super
|
||||
@matchedVersions = new Set()
|
||||
@unmatchedVersions = new Set()
|
||||
|
||||
test: (version) ->
|
||||
return true if @matchedVersions.has(version)
|
||||
return false if @unmatchedVersions.has(version)
|
||||
|
||||
matches = super
|
||||
if matches
|
||||
@matchedVersions.add(version)
|
||||
else
|
||||
@unmatchedVersions.add(version)
|
||||
matches
|
||||
@@ -335,3 +335,5 @@ exports.add = function (directoryPath, metadata) {
|
||||
}
|
||||
|
||||
exports.cache = cache
|
||||
|
||||
exports.Range = Range
|
||||
|
||||
@@ -9,7 +9,7 @@ const CSON = require('season')
|
||||
const ServiceHub = require('service-hub')
|
||||
const Package = require('./package')
|
||||
const ThemePackage = require('./theme-package')
|
||||
const {isDeprecatedPackage, getDeprecatedPackageMetadata} = require('./deprecated-packages')
|
||||
const ModuleCache = require('./module-cache')
|
||||
const packageJSON = require('../package.json')
|
||||
|
||||
// Extended: Package manager for coordinating the lifecycle of Atom packages.
|
||||
@@ -42,6 +42,8 @@ module.exports = class PackageManager {
|
||||
this.triggeredActivationHooks = new Set()
|
||||
this.packagesCache = packageJSON._atomPackages != null ? packageJSON._atomPackages : {}
|
||||
this.packageDependencies = packageJSON.packageDependencies != null ? packageJSON.packageDependencies : {}
|
||||
this.deprecatedPackages = packageJSON._deprecatedPackages || {}
|
||||
this.deprecatedPackageRanges = {}
|
||||
this.initialPackagesLoaded = false
|
||||
this.initialPackagesActivated = false
|
||||
this.preloadedPackages = {}
|
||||
@@ -220,11 +222,26 @@ module.exports = class PackageManager {
|
||||
}
|
||||
|
||||
isDeprecatedPackage (name, version) {
|
||||
return isDeprecatedPackage(name, version)
|
||||
const metadata = this.deprecatedPackages[name]
|
||||
if (!metadata) return false
|
||||
if (!metadata.version) return true
|
||||
|
||||
let range = this.deprecatedPackageRanges[metadata.version]
|
||||
if (!range) {
|
||||
try {
|
||||
range = new ModuleCache.Range(metadata.version)
|
||||
} catch (error) {
|
||||
range = NullVersionRange
|
||||
}
|
||||
this.deprecatedPackageRanges[metadata.version] = range
|
||||
}
|
||||
return range.test(version)
|
||||
}
|
||||
|
||||
getDeprecatedPackageMetadata (name) {
|
||||
return getDeprecatedPackageMetadata(name)
|
||||
const metadata = this.deprecatedPackages[name]
|
||||
if (metadata) Object.freeze(metadata)
|
||||
return metadata
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -871,3 +888,7 @@ module.exports = class PackageManager {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const NullVersionRange = {
|
||||
test () { return false }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user