function validatePlugins(pluginInfos) {
  var hadWarning = false;
  pluginInfos.forEach(function(info) {
    var npmInfo = info.npmInfo;
    var pluginInfo = info.pluginInfo;
    info.ownersToRemove = [];
    info.ownersToAdd = [];
    if (npmInfo) {
      var warnings = [];
      if (npmInfo.name != pluginInfo.id) {
        warnings.push('Plugin ID is different on NPM: ' + npmInfo.name);
      }
      var latestVer = npmInfo['dist-tags']['latest'];
      var expectedLocalVer = semver.inc(latestVer, 'patch') + '-dev';
      if (pluginInfo.version != latestVer && pluginInfo.version != expectedLocalVer) {
        warnings.push('Published version is ' + latestVer + ' but local version is ' + pluginInfo.version);
      }
      var expectedAttachment = pluginInfo.id + '-' + latestVer + '.tgz';
      var attachments = npmInfo._attachments;
      if (!attachments[expectedAttachment] || attachments[expectedAttachment].length < 1000) {
        warnings.push('Looks to be missing .tgz!');
      }
      info.npmOwners.forEach(function(owner) {
        if (!TARGET_OWNERS[owner]) {
          warnings.push('Has extra owner "' + owner + '"');
          info.ownersToRemove.push(owner);
        }
      });
      Object.keys(TARGET_OWNERS).forEach(function(owner) {
        if (info.npmOwners.indexOf(owner) == -1) {
          warnings.push('Missing owner "' + owner + '"');
          info.ownersToAdd.push(owner);
        }
      });
      if (warnings.length) {
        warnings.forEach(function(msg) {
          console.warn(pluginInfo.id + ': ' + msg);
        });
        hadWarning = true;
      } else {
        console.log(pluginInfo.id + '@' + latestVer + ': Everything checks out.');
      }
    } else {
      console.log(pluginInfo.id + ': Is not published yet.');
    }
  });
  return Q(hadWarning);
}
function fixPlugins(pluginInfos) {
  var ret = Q();
  pluginInfos.forEach(function(info) {
    var pluginId = info.pluginInfo.id;
    info.ownersToRemove.forEach(function(owner) {
      ret = ret.then(function() {
        console.log('plugman owner rm ' + owner + ' ' + pluginId);
        return cordovalib.plugman.raw.owner(['rm', owner, pluginId]);
      });
    });
    info.ownersToAdd.forEach(function(owner) {
      ret = ret.then(function() {
        console.log('plugman owner add ' + owner + ' ' + pluginId);
        return cordovalib.plugman.raw.owner(['add', owner, pluginId]);
      });
    });
  });
  return ret;
}
Example #3
0
Document.prototype.read = function() {
    if (!this.path) {
        return Q("");
    }
    return Q.nfbind(this.service.invoke)('read', this.path, this.creatorId);
};
Example #4
0
    defer.resolve(doc);
  });

  return defer.promise;
}

var
testKeyword = 'mobile phone',
testPages = 3,
testPageSize = 10,
storedKw;

// Connect to database
mongoose.connect(config.mongo.uri, config.mongo.options);

Q([])
  .then(function(){
    return saveKeyword(testKeyword);
  })
  .then(function(savedKeyword){
    console.log(savedKeyword);

    storedKw = savedKeyword;

    return checkKeyword(storedKw.keyword, testPages, testPageSize);
  })
  .then(function(checkResult){
    return saveKeywordCheck(storedKw._id, checkResult);
  })
  .catch(function(err){
    if(util.isError(err)) {
Example #5
0
var filter = function(stations) {
	return q(stations.filter(function(station) {
		return !!station.location;
	}));
};
 beforeDataTrigger = function() {return Q(true)};
 afterDataTrigger = function() {return Q(true)};
Example #8
0
 return mapAsList(arr, (value, key) => {
     return Q(iter(value, key))
     .then((result) => {
         return [key, result];
     });
 })
Example #9
0
    beforeEach(() => {
        sandbox.stub(promiseUtils);
        promiseUtils.sequence.returns(q());

        sandbox.stub(temp);
    });
Example #10
0
 function check() {
   if (api.requests.length === count) {
     return Q(api.requests);
   }
   return Q.delay(10).then(check);
 }
	.then(function(user) {
		return Q(user.destroy())
		.then(function() {
			res.json(200, {})
		})
	})
Example #12
0
BitGo.prototype.reject = function(msg, callback) {
  return Q().thenReject(new Error(msg)).nodeify(callback);
};
Example #13
0
    function formatItem(info, item) {
        var objformat = dataobjformatters.format;

        return Q(objformat(item, info.pickList.get('formatter')))
            .then(function(title) { return {value: item.url(), title: title}; });
    }
Example #14
0
 // From table picklist;
 //
 function fromTable(info) {
     var plModel = schema.getModel(info.pickList.get('tablename'));
     var plItemCollection = new plModel.LazyCollection({domainfilter: true});
     return Q(plItemCollection.fetch({ limit: info.limit }))
         .then(function() { return formatItems(info, plItemCollection); });
 }
Example #15
0
Document.prototype.write = function(content) {
    if (!this.path) {
        return Q(null);
    }
    return Q.nfbind(this.service.invoke)('write', this.path, content, this.creatorId);
};
Example #16
0
 isEnabled: function (selectedItemIds) {
     return Q(action.hasPropertyValue('enabled') ? invokeProperty(selectedItemIds, function () {
        return action.propertyValue('enabled');
     }) : true).then(function (v) { return !!v });
 },
Example #17
0
 isHidden: function (selectedItemIds) {                         
     return Q(action.hasPropertyValue('hidden') ? invokeProperty(selectedItemIds, function () {
         return action.propertyValue('hidden');
     }) : false).then(function (v) { return !!v });
 },
Example #18
0
				return torrenter.removeTorrent(item, true).then(function() {
					return Q(undefined);
				}).catch(function(error) {
Example #19
0
 return function(...args) {
     return Q()
     .then(() => {
         return func(...args);
     });
 };
			square(10).then(function(result) {
					//Transform result data and continue chaining
					var transformedData = result / 2;
					return Q(transformedData);
				})
const hook_preSave = function(next, options) {
  //console.log('PRE-SAVE HOOK %j', this._id);
  if(this.__noon_status) {
    //console.log('DUPLICATE PRE-SAVE %j', this._id);
    return next();
  }
  var THIS = this;
  var isUpdate = !this.isNew;
  
  //Hang onto some info we need to retain for the "post" hook
  this.__noon_status = {
    options,
    isUpdate
  };

  var beforeDataTrigger;
  if(options.skipTriggers) {
    beforeDataTrigger = function() {return Q(true)};
  }
  else {
    beforeDataTrigger = datatrigger[isUpdate ? 'processBeforeUpdate' : 'processBeforeCreate'];    
    if(options.currentUser) {
      THIS._current_user = options.currentUser;
    }
  }

  var keyFilter;
  if(options.filterTriggers) {
    keyFilter = options.filterTriggers;
  }

  var firstPromise;
  if(isUpdate) {
    //Grab prev version
    firstPromise = db[THIS._bo_meta_data.class_name].findOne({_id:THIS._id}).exec().then(function(result) {
      if(!result) {
        console.log('Save called on deleted object: %s.%s', THIS._bo_meta_data.class_name, THIS._id);
        return next(new Error("$update-on-deleted"));
      }

      //Check that the version id matches:
      var newVer = new VersionId(THIS.__ver);
      var currVer = new VersionId(result.__ver);
      if(!currVer.relationshipTo(newVer).same) {
        console.log('Version mismatch on %s.%s - THIS: %s current: %s', THIS._bo_meta_data.class_name, THIS._id, THIS.__ver, result.__ver);
        return next(new Error("$version-mismatch-error"));
      }

      THIS._previous = {__ver:result.__ver};
      for(var fieldName in THIS._bo_meta_data.type_desc_map) {
        if(fieldName.indexOf('_') !== 0)
          THIS._previous[fieldName] = result[fieldName];
      }
    });
  }
  else {
    firstPromise = Q(true);
  }
  
  firstPromise
    .then(beforeDataTrigger.bind(null, THIS, keyFilter, options)) //invoke "before" data triggers
    .then(
      function() {
        //console.log("SAVE after 'before' triggers: %j", THIS);
        FieldTypeService.processToDb(THIS);

        //"Increment" version id
        if(options.useVersionId) {
          THIS.__ver = options.useVersionId; //New one may be provided by caller (for replication, bootstrap)
        }
        else {
          if(isUpdate) {
            var vid = new VersionId(THIS._previous.__ver);
            vid.increment();
            THIS.__ver = vid.toString();
          }
          else {
            THIS.__ver = VersionId.newVersionIdString();
          }
        }

        next();
      },
      function(err) {
        err = err instanceof Error ? err : new Error(err);
        next(err);
      }
    );
};
 it('should demonstrate Q.isPromise', function (done) {
     //NOTE: This checks if Q promise specifically
     expect(Q.isPromise(true)).toBeFalsy();
     expect(Q.isPromise(Q(999))).toBeTruthy();
     done();
 });
Example #23
0
module.exports.check_requirements = function(project_root) {
    return Q(); // Requirements always met.
};
 it('should demonstrate Q.isPromiseAlike', function (done) {
     //NOTE: This checks if a promise (i.e., that has a then function)
     expect(Q.isPromiseAlike(true)).toBeFalsy();
     expect(Q.isPromiseAlike(Q(999))).toBeTruthy();
     done();
 });
Example #25
0
 var sm = createSessionManager(function(mocks){
     mocks['q-io/fs'].exists = sinon.stub().returns(Q(false));
 });
 it('should demonstrate promise.all', function (done) {
     Q.all([Q(), Q(999)]).done(function (result) {
         expect(result).toEqual([ undefined, 999 ]);
         done();
     });
 });
Example #27
0
 return prepareTemplate(scriptContent).then(function(template) {
     return Q({
         request: { template: template, context: reporter.context }, 
         response: {}
     });
 });
Example #28
0
 .then(function() {
   // Create a convenience gitignore
   shelljs.cp('-f', path.join(ccaRoot, 'templates', 'DEFAULT_GITIGNORE'), path.join('.', '.gitignore'));
   return Q();
 })
Example #29
0
 return steps.reduce(Q.when, Q()).then(function () { return Q(that); });
Example #30
0
 refundPledge: function(pledge,options){
     // There's no refunding to do!
     // Credit Card will never take anything that's not claimed
     return Q(true);
 },