mirror of
https://github.com/bower/bower.git
synced 2026-02-11 22:44:58 -05:00
Avoid having to deal with circular references when outputting json.
This commit is contained in:
@@ -104,8 +104,6 @@ Manager.prototype.install = function () {
|
||||
tag: 'install',
|
||||
data: name + (release ? '#' + release : ''),
|
||||
pkgMeta: decEndpoint.pkgMeta,
|
||||
origin: name,
|
||||
endpoint: decEndpoint
|
||||
});
|
||||
|
||||
// Remove existent and copy canonical package
|
||||
@@ -125,7 +123,9 @@ Manager.prototype.install = function () {
|
||||
return decEndpoint.pkgMeta;
|
||||
});
|
||||
})
|
||||
.then(deferred.resolve, deferred.reject, deferred.notify);
|
||||
.then(deferred.resolve, deferred.reject, function (notification) {
|
||||
return that._extendNotification(notification);
|
||||
});
|
||||
|
||||
// Unset working flag when done
|
||||
return deferred.promise
|
||||
@@ -199,15 +199,13 @@ Manager.prototype._fetch = function (decEndpoint) {
|
||||
.spread(this._onFetch.bind(this, deferred, decEndpoint))
|
||||
// If it fails, we make the whole process to error out
|
||||
.fail(function (err) {
|
||||
err.origin = that._getOrigin(decEndpoint);
|
||||
err.endpoint = decEndpoint;
|
||||
that._extendNotification(err, decEndpoint);
|
||||
deferred.reject(err);
|
||||
})
|
||||
// Listen to progress to proxy them to the resolve deferred
|
||||
// Note that we also mark where the notification is coming from
|
||||
.progress(function (notification) {
|
||||
notification.origin = that._getOrigin(decEndpoint);
|
||||
notification.endpoint = decEndpoint;
|
||||
that._extendNotification(notification, decEndpoint);
|
||||
deferred.notify(notification);
|
||||
});
|
||||
|
||||
@@ -389,8 +387,15 @@ Manager.prototype._dissect = function () {
|
||||
this._deferred.resolve(pkgMetas);
|
||||
};
|
||||
|
||||
Manager.prototype._getOrigin = function (decEndpoint) {
|
||||
return decEndpoint.name || decEndpoint.registryName || decEndpoint.resolverName;
|
||||
Manager.prototype._extendNotification = function (notification, decEndpoint) {
|
||||
notification.origin = decEndpoint.name || decEndpoint.registryName || decEndpoint.resolverName;
|
||||
notification.endpoint = {
|
||||
name: decEndpoint.name,
|
||||
source: decEndpoint.source,
|
||||
target: decEndpoint.target
|
||||
};
|
||||
|
||||
return notification;
|
||||
};
|
||||
|
||||
Manager.prototype._findHighestVersion = function (comparators) {
|
||||
|
||||
@@ -44,7 +44,6 @@ PackageRepository.prototype.fetch = function (decEndpoint) {
|
||||
deferred.notify({
|
||||
level: 'action',
|
||||
tag: 'resolve',
|
||||
resolver: resolver,
|
||||
data: resolver.getSource() + '#' + resolver.getTarget()
|
||||
});
|
||||
return that._resolve(resolver);
|
||||
@@ -84,7 +83,6 @@ PackageRepository.prototype.fetch = function (decEndpoint) {
|
||||
level: 'info',
|
||||
tag: 'cached',
|
||||
data: 'Got cached ' + resolver.getSource() + (pkgMeta._release ? '#' + pkgMeta._release: '') + ' entry',
|
||||
canonicalPkg: canonicalPkg,
|
||||
pkgMeta: pkgMeta
|
||||
});
|
||||
|
||||
@@ -99,9 +97,7 @@ PackageRepository.prototype.fetch = function (decEndpoint) {
|
||||
level: 'action',
|
||||
tag: 'check',
|
||||
data: 'Checking ' + resolver.getSource() + '#' + resolver.getTarget() + ' for newer version',
|
||||
canonicalPkg: canonicalPkg,
|
||||
pkgMeta: pkgMeta,
|
||||
resolver: resolver
|
||||
pkgMeta: pkgMeta
|
||||
});
|
||||
});
|
||||
|
||||
@@ -117,13 +113,10 @@ PackageRepository.prototype.fetch = function (decEndpoint) {
|
||||
deferred.notify({
|
||||
type: 'info',
|
||||
data: 'There\'s a new version for ' + resolver.getSource() + '#' + resolver.getTarget(),
|
||||
canonicalPkg: canonicalPkg,
|
||||
pkgMeta: pkgMeta,
|
||||
resolver: resolver
|
||||
pkgMeta: pkgMeta
|
||||
});
|
||||
deferred.notify({
|
||||
type: 'resolve',
|
||||
resolver: resolver,
|
||||
data: 'Resolving ' + resolver.getSource() + '#' + resolver.getTarget()
|
||||
});
|
||||
|
||||
@@ -132,8 +125,13 @@ PackageRepository.prototype.fetch = function (decEndpoint) {
|
||||
});
|
||||
})
|
||||
.then(deferred.resolve, deferred.reject, function (notification) {
|
||||
// Store the resolver for each notification
|
||||
notification.resolver = res;
|
||||
// Store the resolver info for each notification
|
||||
notification.resolver = {
|
||||
name: res.getName(),
|
||||
source: res.getSource(),
|
||||
target: res.getTarget()
|
||||
};
|
||||
|
||||
deferred.notify(notification);
|
||||
});
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var circularJson = require('circular-json');
|
||||
// TODO: take care of trailing ,
|
||||
|
||||
function renderHead() {
|
||||
return '[';
|
||||
@@ -27,7 +27,7 @@ function uncolor(str) {
|
||||
}
|
||||
|
||||
function stringify(data) {
|
||||
return uncolor(circularJson.stringify(data, null, ' '));
|
||||
return uncolor(JSON.stringify(data, null, ' '));
|
||||
}
|
||||
|
||||
// -------------------------
|
||||
|
||||
Reference in New Issue
Block a user