cordova-android
Advanced tools
Comparing version
{ | ||
"_args": [ | ||
[ | ||
"cordova-common@^1.3.0", | ||
"D:\\Cordova\\cordova-android" | ||
{ | ||
"raw": "cordova-common@^1.4.0", | ||
"scope": null, | ||
"escapedName": "cordova-common", | ||
"name": "cordova-common", | ||
"rawSpec": "^1.4.0", | ||
"spec": ">=1.4.0 <2.0.0", | ||
"type": "range" | ||
}, | ||
"/Users/steveng/repo/cordova/cordova-android" | ||
] | ||
], | ||
"_from": "cordova-common@>=1.3.0 <2.0.0", | ||
"_id": "cordova-common@1.3.0", | ||
"_from": "cordova-common@>=1.4.0 <2.0.0", | ||
"_id": "cordova-common@1.4.0", | ||
"_inCache": true, | ||
"_installable": true, | ||
"_location": "/cordova-common", | ||
"_nodeVersion": "5.4.1", | ||
"_nodeVersion": "6.3.0", | ||
"_npmOperationalInternal": { | ||
"host": "packages-16-east.internal.npmjs.com", | ||
"tmp": "tmp/cordova-common-1.3.0.tgz_1464130094288_0.48495062021538615" | ||
"tmp": "tmp/cordova-common-1.4.0.tgz_1469092638680_0.9961137105710804" | ||
}, | ||
"_npmUser": { | ||
"email": "stevengill97@gmail.com", | ||
"name": "stevegill" | ||
"name": "kotikov.vladimir", | ||
"email": "kotikov.vladimir@gmail.com" | ||
}, | ||
"_npmVersion": "3.9.0", | ||
"_npmVersion": "3.10.5", | ||
"_phantomChildren": {}, | ||
"_requested": { | ||
"raw": "cordova-common@^1.4.0", | ||
"scope": null, | ||
"escapedName": "cordova-common", | ||
"name": "cordova-common", | ||
"raw": "cordova-common@^1.3.0", | ||
"rawSpec": "^1.3.0", | ||
"scope": null, | ||
"spec": ">=1.3.0 <2.0.0", | ||
"rawSpec": "^1.4.0", | ||
"spec": ">=1.4.0 <2.0.0", | ||
"type": "range" | ||
@@ -35,7 +44,7 @@ }, | ||
], | ||
"_resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-1.3.0.tgz", | ||
"_shasum": "f75161f6aa7cef5486fd5d69a3b0a1f628334491", | ||
"_resolved": "http://registry.npmjs.org/cordova-common/-/cordova-common-1.4.0.tgz", | ||
"_shasum": "b3ba73595caa34fe8250ac11f20a4ed44e7c84e4", | ||
"_shrinkwrap": null, | ||
"_spec": "cordova-common@^1.3.0", | ||
"_where": "D:\\Cordova\\cordova-android", | ||
"_spec": "cordova-common@^1.4.0", | ||
"_where": "/Users/steveng/repo/cordova/cordova-android", | ||
"author": { | ||
@@ -45,4 +54,4 @@ "name": "Apache Software Foundation" | ||
"bugs": { | ||
"email": "dev@cordova.apache.org", | ||
"url": "https://issues.apache.org/jira/browse/CB" | ||
"url": "https://issues.apache.org/jira/browse/CB", | ||
"email": "dev@cordova.apache.org" | ||
}, | ||
@@ -75,4 +84,4 @@ "contributors": [], | ||
"dist": { | ||
"shasum": "f75161f6aa7cef5486fd5d69a3b0a1f628334491", | ||
"tarball": "https://registry.npmjs.org/cordova-common/-/cordova-common-1.3.0.tgz" | ||
"shasum": "b3ba73595caa34fe8250ac11f20a4ed44e7c84e4", | ||
"tarball": "https://registry.npmjs.org/cordova-common/-/cordova-common-1.4.0.tgz" | ||
}, | ||
@@ -87,24 +96,24 @@ "engineStrict": true, | ||
{ | ||
"email": "bowserj@apache.org", | ||
"name": "bowserj" | ||
"name": "bowserj", | ||
"email": "bowserj@apache.org" | ||
}, | ||
{ | ||
"email": "kotikov.vladimir@gmail.com", | ||
"name": "kotikov.vladimir" | ||
"name": "kotikov.vladimir", | ||
"email": "kotikov.vladimir@gmail.com" | ||
}, | ||
{ | ||
"email": "purplecabbage@gmail.com", | ||
"name": "purplecabbage" | ||
"name": "purplecabbage", | ||
"email": "purplecabbage@gmail.com" | ||
}, | ||
{ | ||
"email": "shazron@gmail.com", | ||
"name": "shazron" | ||
"name": "shazron", | ||
"email": "shazron@gmail.com" | ||
}, | ||
{ | ||
"email": "stevengill97@gmail.com", | ||
"name": "stevegill" | ||
"name": "stevegill", | ||
"email": "stevengill97@gmail.com" | ||
}, | ||
{ | ||
"email": "npmjs@barhams.info", | ||
"name": "timbarham" | ||
"name": "timbarham", | ||
"email": "npmjs@barhams.info" | ||
} | ||
@@ -125,3 +134,3 @@ ], | ||
}, | ||
"version": "1.3.0" | ||
"version": "1.4.0" | ||
} |
@@ -31,3 +31,3 @@ <!-- | ||
Usage: | ||
``` | ||
```js | ||
var events = require('cordova-common').events; | ||
@@ -45,3 +45,3 @@ events.emit('warn', 'Some warning message') | ||
``` | ||
```js | ||
var CordovaError = require('cordova-common').CordovaError; | ||
@@ -58,3 +58,3 @@ throw new CordovaError('Some error message', SOME_ERR_CODE); | ||
Usage: | ||
``` | ||
```js | ||
var ConfigParser = require('cordova-common').ConfigParser; | ||
@@ -70,3 +70,3 @@ var appConfig = new ConfigParser('path/to/cordova-app/config.xml'); | ||
Usage: | ||
``` | ||
```js | ||
var PluginInfo: require('cordova-common').PluginInfo; | ||
@@ -87,3 +87,3 @@ var PluginInfoProvider: require('cordova-common').PluginInfoProvider; | ||
Usage: | ||
``` | ||
```js | ||
var ActionStack = require('cordova-common').ActionStack; | ||
@@ -112,3 +112,3 @@ var stack = new ActionStack() | ||
Usage: | ||
``` | ||
```js | ||
var superspawn = require('cordova-common').superspawn; | ||
@@ -130,3 +130,3 @@ superspawn.spawn('adb', ['devices']) | ||
Usage: | ||
``` | ||
```js | ||
var xml = require('cordova-common').xmlHelpers; | ||
@@ -133,0 +133,0 @@ |
@@ -23,2 +23,5 @@ <!-- | ||
### 1.4.0 (Jul 12, 2016) | ||
* [CB-11023](https://issues.apache.org/jira/browse/CB-11023) Add edit-config functionality | ||
### 1.3.0 (May 12, 2016) | ||
@@ -25,0 +28,0 @@ * [CB-11259](https://issues.apache.org/jira/browse/CB-11259): Improving prepare and build logging |
@@ -39,5 +39,7 @@ /* | ||
events = require('../events'), | ||
ConfigKeeper = require('./ConfigKeeper'); | ||
ConfigKeeper = require('./ConfigKeeper'), | ||
CordovaLogger = require('../CordovaLogger'); | ||
var mungeutil = require('./munge-util'); | ||
var xml_helpers = require('../util/xml-helpers'); | ||
@@ -99,5 +101,6 @@ exports.PlatformMunger = PlatformMunger; | ||
platform_config.dependent_plugins[pluginInfo.id]; | ||
var edit_config_changes = pluginInfo.getEditConfigs(self.platform); | ||
// get config munge, aka how did this plugin change various config files | ||
var config_munge = self.generate_plugin_config_munge(pluginInfo, plugin_vars); | ||
var config_munge = self.generate_plugin_config_munge(pluginInfo, plugin_vars, edit_config_changes); | ||
// global munge looks at all plugins' changes to config files | ||
@@ -130,8 +133,36 @@ var global_munge = platform_config.config_munge; | ||
PlatformMunger.prototype.add_plugin_changes = add_plugin_changes; | ||
function add_plugin_changes(pluginInfo, plugin_vars, is_top_level, should_increment) { | ||
function add_plugin_changes(pluginInfo, plugin_vars, is_top_level, should_increment, plugin_force) { | ||
var self = this; | ||
var platform_config = self.platformJson.root; | ||
var edit_config_changes = pluginInfo.getEditConfigs(self.platform); | ||
var config_munge; | ||
// get config munge, aka how should this plugin change various config files | ||
var config_munge = self.generate_plugin_config_munge(pluginInfo, plugin_vars); | ||
if (!edit_config_changes || edit_config_changes.length === 0) { | ||
// get config munge, aka how should this plugin change various config files | ||
config_munge = self.generate_plugin_config_munge(pluginInfo, plugin_vars); | ||
} | ||
else { | ||
var isConflictingInfo = is_conflicting(edit_config_changes, platform_config.config_munge, self, plugin_force); | ||
if (plugin_force) { | ||
CordovaLogger.get().log(CordovaLogger.WARN, '--force is used. edit-config will overwrite conflicts if any. Conflicting plugins may not work as expected.'); | ||
// remove conflicting munges | ||
var conflict_munge = mungeutil.decrement_munge(platform_config.config_munge, isConflictingInfo.conflictingMunge); | ||
for (var conflict_file in conflict_munge.files) { | ||
self.apply_file_munge(conflict_file, conflict_munge.files[conflict_file], /* remove = */ true); | ||
} | ||
// force add new munges | ||
config_munge = self.generate_plugin_config_munge(pluginInfo, plugin_vars, edit_config_changes); | ||
} | ||
else if(isConflictingInfo.conflictFound) { | ||
throw new Error('There was a conflict trying to modify attributes with <edit-config> in plugin ' + pluginInfo.id + | ||
'. The conflicting plugin, ' + isConflictingInfo.conflictingPlugin + ', already modified the same attributes. The conflict must be resolved before ' + | ||
pluginInfo.id + ' can be added. You may use --force to add the plugin and overwrite the conflicting attributes.'); | ||
} | ||
else { | ||
// no conflicts, will handle edit-config | ||
config_munge = self.generate_plugin_config_munge(pluginInfo, plugin_vars, edit_config_changes); | ||
} | ||
} | ||
// global munge looks at all plugins' changes to config files | ||
@@ -192,3 +223,3 @@ | ||
PlatformMunger.prototype.generate_plugin_config_munge = generate_plugin_config_munge; | ||
function generate_plugin_config_munge(pluginInfo, vars) { | ||
function generate_plugin_config_munge(pluginInfo, vars, edit_config_changes) { | ||
var self = this; | ||
@@ -200,2 +231,6 @@ | ||
if(edit_config_changes) { | ||
Array.prototype.push.apply(changes, edit_config_changes); | ||
} | ||
// Demux 'package.appxmanifest' into relevant platform-specific appx manifests. | ||
@@ -299,3 +334,8 @@ // Only spend the cycles if there are version-specific plugin settings | ||
// 2. add into munge | ||
mungeutil.deep_add(munge, change.target, change.parent, { xml: stringified, count: 1, after: change.after }); | ||
if (change.mode) { | ||
mungeutil.deep_add(munge, change.file, change.target, { xml: stringified, count: 1, mode: change.mode, plugin: pluginInfo.id }); | ||
} | ||
else { | ||
mungeutil.deep_add(munge, change.target, change.parent, { xml: stringified, count: 1, after: change.after }); | ||
} | ||
}); | ||
@@ -306,2 +346,54 @@ }); | ||
function is_conflicting(editchanges, config_munge, self, force) { | ||
var files = config_munge.files; | ||
var conflictFound = false; | ||
var conflictingMunge = { files: {} }; | ||
var conflictingParent; | ||
var conflictingPlugin; | ||
editchanges.forEach(function(editchange) { | ||
if (files[editchange.file]) { | ||
var parents = files[editchange.file].parents; | ||
var target = parents[editchange.target]; | ||
// Check if the edit target will resolve to an existing target | ||
if (!target || target.length === 0) { | ||
var file_xml = self.config_keeper.get(self.project_dir, self.platform, editchange.file).data; | ||
var resolveEditTarget = xml_helpers.resolveParent(file_xml, editchange.target); | ||
var resolveTarget; | ||
if (resolveEditTarget) { | ||
for (var parent in parents) { | ||
resolveTarget = xml_helpers.resolveParent(file_xml, parent); | ||
if (resolveEditTarget === resolveTarget) { | ||
conflictingParent = parent; | ||
target = parents[parent]; | ||
break; | ||
} | ||
} | ||
} | ||
} | ||
else { | ||
conflictingParent = editchange.target; | ||
} | ||
if (target.length !== 0) { | ||
// conflict has been found, exit and throw an error | ||
conflictFound = true; | ||
if (!force) { | ||
// since there has been modifications to the attributes at this target, | ||
// the current plugin should not modify the attributes | ||
conflictingPlugin = target[0].plugin; | ||
return; | ||
} | ||
// need to find all conflicts when --force is used, track conflicting munges | ||
mungeutil.deep_add(conflictingMunge, editchange.file, conflictingParent, target[0]); | ||
} | ||
} | ||
}); | ||
return {conflictFound: conflictFound, conflictingPlugin: conflictingPlugin, conflictingMunge: conflictingMunge}; | ||
} | ||
// Go over the prepare queue and apply the config munges for each plugin | ||
@@ -323,3 +415,3 @@ // that has been (un)installed. | ||
var pluginInfo = self.pluginInfoProvider.get(path.join(plugins_dir, u.plugin)); | ||
self.add_plugin_changes(pluginInfo, u.vars, u.topLevel, true); | ||
self.add_plugin_changes(pluginInfo, u.vars, u.topLevel, true, u.force); | ||
}); | ||
@@ -326,0 +418,0 @@ |
@@ -106,3 +106,12 @@ /* | ||
var xml_to_graft = [modules.et.XML(xml_child.xml)]; | ||
result = modules.xml_helpers.graftXML(self.data, xml_to_graft, selector, xml_child.after); | ||
switch (xml_child.mode) { | ||
case 'merge': | ||
result = modules.xml_helpers.graftXMLMerge(self.data, xml_to_graft, selector, xml_child); | ||
break; | ||
case 'overwrite': | ||
result = modules.xml_helpers.graftXMLOverwrite(self.data, xml_to_graft, selector, xml_child); | ||
break; | ||
default: | ||
result = modules.xml_helpers.graftXML(self.data, xml_to_graft, selector, xml_child.after); | ||
} | ||
if ( !result) { | ||
@@ -127,3 +136,10 @@ throw new Error('Unable to graft xml at selector "' + selector + '" from "' + filepath + '" during config install'); | ||
var xml_to_graft = [modules.et.XML(xml_child.xml)]; | ||
result = modules.xml_helpers.pruneXML(self.data, xml_to_graft, selector); | ||
switch (xml_child.mode) { | ||
case 'merge': | ||
case 'overwrite': | ||
result = modules.xml_helpers.pruneXMLRestore(self.data, selector, xml_child); | ||
break; | ||
default: | ||
result = modules.xml_helpers.pruneXML(self.data, xml_to_graft, selector); | ||
} | ||
} else { | ||
@@ -130,0 +146,0 @@ // plist file |
@@ -55,2 +55,5 @@ /* | ||
if (found) { | ||
if (parentArray[index].oldAttrib) { | ||
k.oldAttrib = _.extend({}, parentArray[index].oldAttrib); | ||
} | ||
found.count -= k.count; | ||
@@ -57,0 +60,0 @@ if (found.count > 0) { |
@@ -165,4 +165,4 @@ /* | ||
PlatformJson.prototype.addInstalledPluginToPrepareQueue = function(pluginDirName, vars, is_top_level) { | ||
this.root.prepare_queue.installed.push({'plugin':pluginDirName, 'vars':vars, 'topLevel':is_top_level}); | ||
PlatformJson.prototype.addInstalledPluginToPrepareQueue = function(pluginDirName, vars, is_top_level, force) { | ||
this.root.prepare_queue.installed.push({'plugin':pluginDirName, 'vars':vars, 'topLevel':is_top_level, 'force':force}); | ||
}; | ||
@@ -280,2 +280,1 @@ | ||
module.exports = PlatformJson; | ||
@@ -149,2 +149,18 @@ /** | ||
self.getEditConfigs = getEditConfigs; | ||
function getEditConfigs(platform) { | ||
var editConfigs = _getTags(self._et, 'edit-config', platform, _parseEditConfigs); | ||
return editConfigs; | ||
} | ||
function _parseEditConfigs(tag) { | ||
var editConfig = | ||
{ file : tag.attrib['file'] | ||
, target : tag.attrib['target'] | ||
, mode : tag.attrib['mode'] | ||
, xmls : tag.getchildren() | ||
}; | ||
return editConfig; | ||
} | ||
// <info> tags, both global and within a <platform> | ||
@@ -386,3 +402,3 @@ // TODO (kamrik): Do we ever use <info> under <platform>? Example wanted. | ||
// Same as _getTags() but only looks inside a platfrom section. | ||
// Same as _getTags() but only looks inside a platform section. | ||
function _getTagsInPlatform(pelem, tag, platform, transform) { | ||
@@ -389,0 +405,0 @@ var platformTag = pelem.find('./platform[@name="' + platform + '"]'); |
@@ -126,3 +126,3 @@ /* | ||
// anything about managing dependencies - it's responsibility of caller. | ||
self.munger.add_plugin_changes(plugin, options.variables, /*is_top_level=*/true, /*should_increment=*/true); | ||
self.munger.add_plugin_changes(plugin, options.variables, /*is_top_level=*/true, /*should_increment=*/true, options.force); | ||
self.munger.platformJson.addPluginMetadata(plugin); | ||
@@ -129,0 +129,0 @@ } else { |
@@ -32,2 +32,5 @@ /* | ||
var ROOT = /^\/([^\/]*)/, | ||
ABSOLUTE = /^\/([^\/]*)\/(.*)/; | ||
module.exports = { | ||
@@ -72,3 +75,3 @@ // compare two et.XML nodes, see if they match | ||
graftXML: function(doc, nodes, selector, after) { | ||
var parent = resolveParent(doc, selector); | ||
var parent = module.exports.resolveParent(doc, selector); | ||
if (!parent) { | ||
@@ -84,3 +87,3 @@ //Try to create the parent recursively if necessary | ||
} | ||
parent = resolveParent(doc, selector); | ||
parent = module.exports.resolveParent(doc, selector); | ||
if (!parent) return false; | ||
@@ -103,5 +106,50 @@ } | ||
// adds new attributes to doc at selector | ||
// Will only merge if attribute has not been modified already or --force is used | ||
graftXMLMerge: function(doc, nodes, selector, xml) { | ||
var target = module.exports.resolveParent(doc, selector); | ||
if (!target) return false; | ||
// saves the attributes of the original xml before making changes | ||
xml.oldAttrib = _.extend({}, target.attrib); | ||
nodes.forEach(function (node) { | ||
var attributes = node.attrib; | ||
for (var attribute in attributes) { | ||
target.attrib[attribute] = node.attrib[attribute]; | ||
} | ||
}); | ||
return true; | ||
}, | ||
// overwrite all attributes to doc at selector with new attributes | ||
// Will only overwrite if attribute has not been modified already or --force is used | ||
graftXMLOverwrite: function(doc, nodes, selector, xml) { | ||
var target = module.exports.resolveParent(doc, selector); | ||
if (!target) return false; | ||
// saves the attributes of the original xml before making changes | ||
xml.oldAttrib = _.extend({}, target.attrib); | ||
// remove old attributes from target | ||
var targetAttributes = target.attrib; | ||
for (var targetAttribute in targetAttributes) { | ||
delete targetAttributes[targetAttribute]; | ||
} | ||
// add new attributes to target | ||
nodes.forEach(function (node) { | ||
var attributes = node.attrib; | ||
for (var attribute in attributes) { | ||
target.attrib[attribute] = node.attrib[attribute]; | ||
} | ||
}); | ||
return true; | ||
}, | ||
// removes node from doc at selector | ||
pruneXML: function(doc, nodes, selector) { | ||
var parent = resolveParent(doc, selector); | ||
var parent = module.exports.resolveParent(doc, selector); | ||
if (!parent) return false; | ||
@@ -121,2 +169,15 @@ | ||
// restores attributes from doc at selector | ||
pruneXMLRestore: function(doc, selector, xml) { | ||
var target = module.exports.resolveParent(doc, selector); | ||
if (!target) return false; | ||
if (xml.oldAttrib) { | ||
target.attrib = _.extend({}, xml.oldAttrib); | ||
} | ||
return true; | ||
}, | ||
parseElementtreeSync: function (filename) { | ||
@@ -129,2 +190,26 @@ var contents = fs.readFileSync(filename, 'utf-8'); | ||
return new et.ElementTree(et.XML(contents)); | ||
}, | ||
resolveParent: function (doc, selector) { | ||
var parent, tagName, subSelector; | ||
// handle absolute selector (which elementtree doesn't like) | ||
if (ROOT.test(selector)) { | ||
tagName = selector.match(ROOT)[1]; | ||
// test for wildcard "any-tag" root selector | ||
if (tagName == '*' || tagName === doc._root.tag) { | ||
parent = doc._root; | ||
// could be an absolute path, but not selecting the root | ||
if (ABSOLUTE.test(selector)) { | ||
subSelector = selector.match(ABSOLUTE)[2]; | ||
parent = parent.find(subSelector); | ||
} | ||
} else { | ||
return false; | ||
} | ||
} else { | ||
parent = doc.find(selector); | ||
} | ||
return parent; | ||
} | ||
@@ -161,29 +246,2 @@ }; | ||
var ROOT = /^\/([^\/]*)/, | ||
ABSOLUTE = /^\/([^\/]*)\/(.*)/; | ||
function resolveParent(doc, selector) { | ||
var parent, tagName, subSelector; | ||
// handle absolute selector (which elementtree doesn't like) | ||
if (ROOT.test(selector)) { | ||
tagName = selector.match(ROOT)[1]; | ||
// test for wildcard "any-tag" root selector | ||
if (tagName == '*' || tagName === doc._root.tag) { | ||
parent = doc._root; | ||
// could be an absolute path, but not selecting the root | ||
if (ABSOLUTE.test(selector)) { | ||
subSelector = selector.match(ABSOLUTE)[2]; | ||
parent = parent.find(subSelector); | ||
} | ||
} else { | ||
return false; | ||
} | ||
} else { | ||
parent = doc.find(selector); | ||
} | ||
return parent; | ||
} | ||
// Find the index at which to insert an entry. After is a ;-separated priority list | ||
@@ -267,3 +325,3 @@ // of tags after which the insertion should be made. E.g. If we need to | ||
} | ||
function removeDuplicatePreferences(xml) { | ||
@@ -275,3 +333,3 @@ // reduce preference tags to a hashtable to remove dupes | ||
}, {}); | ||
// remove all preferences | ||
@@ -281,3 +339,3 @@ xml.findall('preference[@name][@value]').forEach(function(pref) { | ||
}); | ||
// write new preferences | ||
@@ -284,0 +342,0 @@ Object.keys(prefHash).forEach(function(key, index) { |
{ | ||
"_args": [ | ||
[ | ||
"elementtree@^0.1.6", | ||
"D:\\Cordova\\cordova-android" | ||
{ | ||
"raw": "elementtree@^0.1.6", | ||
"scope": null, | ||
"escapedName": "elementtree", | ||
"name": "elementtree", | ||
"rawSpec": "^0.1.6", | ||
"spec": ">=0.1.6 <0.2.0", | ||
"type": "range" | ||
}, | ||
"/Users/steveng/repo/cordova/cordova-android" | ||
] | ||
@@ -14,4 +22,4 @@ ], | ||
"_npmUser": { | ||
"email": "ryan@trolocsis.com", | ||
"name": "rphillips" | ||
"name": "rphillips", | ||
"email": "ryan@trolocsis.com" | ||
}, | ||
@@ -21,6 +29,7 @@ "_npmVersion": "1.3.24", | ||
"_requested": { | ||
"raw": "elementtree@^0.1.6", | ||
"scope": null, | ||
"escapedName": "elementtree", | ||
"name": "elementtree", | ||
"raw": "elementtree@^0.1.6", | ||
"rawSpec": "^0.1.6", | ||
"scope": null, | ||
"spec": ">=0.1.6 <0.2.0", | ||
@@ -33,7 +42,7 @@ "type": "range" | ||
], | ||
"_resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.6.tgz", | ||
"_resolved": "http://registry.npmjs.org/elementtree/-/elementtree-0.1.6.tgz", | ||
"_shasum": "2ac4c46ea30516c8c4cbdb5e3ac7418e592de20c", | ||
"_shrinkwrap": null, | ||
"_spec": "elementtree@^0.1.6", | ||
"_where": "D:\\Cordova\\cordova-android", | ||
"_where": "/Users/steveng/repo/cordova/cordova-android", | ||
"author": { | ||
@@ -47,8 +56,8 @@ "name": "Rackspace US, Inc." | ||
{ | ||
"email": "paul.querna@rackspace.com", | ||
"name": "Paul Querna" | ||
"name": "Paul Querna", | ||
"email": "paul.querna@rackspace.com" | ||
}, | ||
{ | ||
"email": "tomaz.muraus@rackspace.com", | ||
"name": "Tomaz Muraus" | ||
"name": "Tomaz Muraus", | ||
"email": "tomaz.muraus@rackspace.com" | ||
} | ||
@@ -90,4 +99,4 @@ ], | ||
{ | ||
"email": "ryan@trolocsis.com", | ||
"name": "rphillips" | ||
"name": "rphillips", | ||
"email": "ryan@trolocsis.com" | ||
} | ||
@@ -94,0 +103,0 @@ ], |
{ | ||
"_args": [ | ||
[ | ||
"nopt@^3.0.1", | ||
"D:\\Cordova\\cordova-android" | ||
{ | ||
"raw": "nopt@^3.0.1", | ||
"scope": null, | ||
"escapedName": "nopt", | ||
"name": "nopt", | ||
"rawSpec": "^3.0.1", | ||
"spec": ">=3.0.1 <4.0.0", | ||
"type": "range" | ||
}, | ||
"/Users/steveng/repo/cordova/cordova-android" | ||
] | ||
@@ -15,4 +23,4 @@ ], | ||
"_npmUser": { | ||
"email": "ogd@aoaioxxysz.net", | ||
"name": "othiym23" | ||
"name": "othiym23", | ||
"email": "ogd@aoaioxxysz.net" | ||
}, | ||
@@ -22,6 +30,7 @@ "_npmVersion": "2.14.10", | ||
"_requested": { | ||
"raw": "nopt@^3.0.1", | ||
"scope": null, | ||
"escapedName": "nopt", | ||
"name": "nopt", | ||
"raw": "nopt@^3.0.1", | ||
"rawSpec": "^3.0.1", | ||
"scope": null, | ||
"spec": ">=3.0.1 <4.0.0", | ||
@@ -33,10 +42,10 @@ "type": "range" | ||
], | ||
"_resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", | ||
"_resolved": "http://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", | ||
"_shasum": "c6465dbf08abcd4db359317f79ac68a646b28ff9", | ||
"_shrinkwrap": null, | ||
"_spec": "nopt@^3.0.1", | ||
"_where": "D:\\Cordova\\cordova-android", | ||
"_where": "/Users/steveng/repo/cordova/cordova-android", | ||
"author": { | ||
"name": "Isaac Z. Schlueter", | ||
"email": "i@izs.me", | ||
"name": "Isaac Z. Schlueter", | ||
"url": "http://blog.izs.me/" | ||
@@ -68,12 +77,12 @@ }, | ||
{ | ||
"email": "i@izs.me", | ||
"name": "isaacs" | ||
"name": "isaacs", | ||
"email": "i@izs.me" | ||
}, | ||
{ | ||
"email": "ogd@aoaioxxysz.net", | ||
"name": "othiym23" | ||
"name": "othiym23", | ||
"email": "ogd@aoaioxxysz.net" | ||
}, | ||
{ | ||
"email": "kat@sykosomatic.org", | ||
"name": "zkat" | ||
"name": "zkat", | ||
"email": "kat@sykosomatic.org" | ||
} | ||
@@ -80,0 +89,0 @@ ], |
{ | ||
"_args": [ | ||
[ | ||
"properties-parser@^0.2.3", | ||
"D:\\Cordova\\cordova-android" | ||
{ | ||
"raw": "properties-parser@^0.2.3", | ||
"scope": null, | ||
"escapedName": "properties-parser", | ||
"name": "properties-parser", | ||
"rawSpec": "^0.2.3", | ||
"spec": ">=0.2.3 <0.3.0", | ||
"type": "range" | ||
}, | ||
"/Users/steveng/repo/cordova/cordova-android" | ||
] | ||
@@ -14,4 +22,4 @@ ], | ||
"_npmUser": { | ||
"email": "xavi.rmz@gmail.com", | ||
"name": "xavi" | ||
"name": "xavi", | ||
"email": "xavi.rmz@gmail.com" | ||
}, | ||
@@ -21,6 +29,7 @@ "_npmVersion": "1.3.23", | ||
"_requested": { | ||
"raw": "properties-parser@^0.2.3", | ||
"scope": null, | ||
"escapedName": "properties-parser", | ||
"name": "properties-parser", | ||
"raw": "properties-parser@^0.2.3", | ||
"rawSpec": "^0.2.3", | ||
"scope": null, | ||
"spec": ">=0.2.3 <0.3.0", | ||
@@ -32,7 +41,7 @@ "type": "range" | ||
], | ||
"_resolved": "https://registry.npmjs.org/properties-parser/-/properties-parser-0.2.3.tgz", | ||
"_resolved": "http://registry.npmjs.org/properties-parser/-/properties-parser-0.2.3.tgz", | ||
"_shasum": "f7591255f707abbff227c7b56b637dbb0373a10f", | ||
"_shrinkwrap": null, | ||
"_spec": "properties-parser@^0.2.3", | ||
"_where": "D:\\Cordova\\cordova-android", | ||
"_where": "/Users/steveng/repo/cordova/cordova-android", | ||
"bugs": { | ||
@@ -47,3 +56,3 @@ "url": "https://github.com/xavi-/node-properties-parser/issues" | ||
"shasum": "f7591255f707abbff227c7b56b637dbb0373a10f", | ||
"tarball": "http://registry.npmjs.org/properties-parser/-/properties-parser-0.2.3.tgz" | ||
"tarball": "https://registry.npmjs.org/properties-parser/-/properties-parser-0.2.3.tgz" | ||
}, | ||
@@ -65,4 +74,4 @@ "engines": { | ||
{ | ||
"email": "xavi.rmz@gmail.com", | ||
"name": "xavi" | ||
"name": "xavi", | ||
"email": "xavi.rmz@gmail.com" | ||
} | ||
@@ -69,0 +78,0 @@ ], |
{ | ||
"_args": [ | ||
[ | ||
"q@^1.4.1", | ||
"D:\\Cordova\\cordova-android" | ||
{ | ||
"raw": "q@^1.4.1", | ||
"scope": null, | ||
"escapedName": "q", | ||
"name": "q", | ||
"rawSpec": "^1.4.1", | ||
"spec": ">=1.4.1 <2.0.0", | ||
"type": "range" | ||
}, | ||
"/Users/steveng/repo/cordova/cordova-android" | ||
] | ||
@@ -15,4 +23,4 @@ ], | ||
"_npmUser": { | ||
"email": "kris.kowal@cixar.com", | ||
"name": "kriskowal" | ||
"name": "kriskowal", | ||
"email": "kris.kowal@cixar.com" | ||
}, | ||
@@ -22,6 +30,7 @@ "_npmVersion": "2.8.3", | ||
"_requested": { | ||
"raw": "q@^1.4.1", | ||
"scope": null, | ||
"escapedName": "q", | ||
"name": "q", | ||
"raw": "q@^1.4.1", | ||
"rawSpec": "^1.4.1", | ||
"scope": null, | ||
"spec": ">=1.4.1 <2.0.0", | ||
@@ -34,10 +43,10 @@ "type": "range" | ||
], | ||
"_resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", | ||
"_resolved": "http://registry.npmjs.org/q/-/q-1.4.1.tgz", | ||
"_shasum": "55705bcd93c5f3673530c2c2cbc0c2b3addc286e", | ||
"_shrinkwrap": null, | ||
"_spec": "q@^1.4.1", | ||
"_where": "D:\\Cordova\\cordova-android", | ||
"_where": "/Users/steveng/repo/cordova/cordova-android", | ||
"author": { | ||
"name": "Kris Kowal", | ||
"email": "kris@cixar.com", | ||
"name": "Kris Kowal", | ||
"url": "https://github.com/kriskowal" | ||
@@ -50,14 +59,14 @@ }, | ||
{ | ||
"name": "Kris Kowal", | ||
"email": "kris@cixar.com", | ||
"name": "Kris Kowal", | ||
"url": "https://github.com/kriskowal" | ||
}, | ||
{ | ||
"name": "Irakli Gozalishvili", | ||
"email": "rfobic@gmail.com", | ||
"name": "Irakli Gozalishvili", | ||
"url": "http://jeditoolkit.com" | ||
}, | ||
{ | ||
"name": "Domenic Denicola", | ||
"email": "domenic@domenicdenicola.com", | ||
"name": "Domenic Denicola", | ||
"url": "http://domenicdenicola.com" | ||
@@ -118,8 +127,8 @@ } | ||
{ | ||
"email": "kris.kowal@cixar.com", | ||
"name": "kriskowal" | ||
"name": "kriskowal", | ||
"email": "kris.kowal@cixar.com" | ||
}, | ||
{ | ||
"email": "domenic@domenicdenicola.com", | ||
"name": "domenic" | ||
"name": "domenic", | ||
"email": "domenic@domenicdenicola.com" | ||
} | ||
@@ -126,0 +135,0 @@ ], |
{ | ||
"_args": [ | ||
[ | ||
"shelljs@^0.5.3", | ||
"D:\\Cordova\\cordova-android" | ||
{ | ||
"raw": "shelljs@^0.5.3", | ||
"scope": null, | ||
"escapedName": "shelljs", | ||
"name": "shelljs", | ||
"rawSpec": "^0.5.3", | ||
"spec": ">=0.5.3 <0.6.0", | ||
"type": "range" | ||
}, | ||
"/Users/steveng/repo/cordova/cordova-android" | ||
] | ||
@@ -15,4 +23,4 @@ ], | ||
"_npmUser": { | ||
"email": "arturadib@gmail.com", | ||
"name": "artur" | ||
"name": "artur", | ||
"email": "arturadib@gmail.com" | ||
}, | ||
@@ -22,6 +30,7 @@ "_npmVersion": "2.5.1", | ||
"_requested": { | ||
"raw": "shelljs@^0.5.3", | ||
"scope": null, | ||
"escapedName": "shelljs", | ||
"name": "shelljs", | ||
"raw": "shelljs@^0.5.3", | ||
"rawSpec": "^0.5.3", | ||
"scope": null, | ||
"spec": ">=0.5.3 <0.6.0", | ||
@@ -34,10 +43,10 @@ "type": "range" | ||
], | ||
"_resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", | ||
"_resolved": "http://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", | ||
"_shasum": "c54982b996c76ef0c1e6b59fbdc5825f5b713113", | ||
"_shrinkwrap": null, | ||
"_spec": "shelljs@^0.5.3", | ||
"_where": "D:\\Cordova\\cordova-android", | ||
"_where": "/Users/steveng/repo/cordova/cordova-android", | ||
"author": { | ||
"email": "arturadib@gmail.com", | ||
"name": "Artur Adib" | ||
"name": "Artur Adib", | ||
"email": "arturadib@gmail.com" | ||
}, | ||
@@ -77,4 +86,4 @@ "bin": { | ||
{ | ||
"email": "arturadib@gmail.com", | ||
"name": "artur" | ||
"name": "artur", | ||
"email": "arturadib@gmail.com" | ||
} | ||
@@ -81,0 +90,0 @@ ], |
{ | ||
"name": "cordova-android", | ||
"version": "5.3.0-nightly.2016.7.20.39165a86", | ||
"version": "5.3.0-nightly.2016.7.23.08163713", | ||
"description": "cordova-android release", | ||
@@ -27,3 +27,3 @@ "bin": { | ||
"dependencies": { | ||
"cordova-common": "^1.3.0", | ||
"cordova-common": "^1.4.0", | ||
"elementtree": "^0.1.6", | ||
@@ -30,0 +30,0 @@ "nopt": "^3.0.1", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
Unidentified License
License(Experimental) Something that seems like a license was found, but its contents could not be matched with a known license.
Found 1 instance in 1 package
Unidentified License
License(Experimental) Something that seems like a license was found, but its contents could not be matched with a known license.
Found 1 instance in 1 package
3149183
0.3%24934
0.65%10
11.11%Updated