You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by an...@apache.org on 2016/05/27 07:09:18 UTC
[25/51] [abbrv] [partial] cordova-windows git commit: CB-11117:
Bundle updated node modules
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/cordova-common/node_modules/unorm/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/node_modules/unorm/package.json b/node_modules/cordova-common/node_modules/unorm/package.json
deleted file mode 100644
index e3559f6..0000000
--- a/node_modules/cordova-common/node_modules/unorm/package.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- "name": "unorm",
- "version": "1.4.1",
- "description": "JavaScript Unicode 8.0 Normalization - NFC, NFD, NFKC, NFKD. Read <http://unicode.org/reports/tr15/> UAX #15 Unicode Normalization Forms.",
- "author": {
- "name": "Bjarke Walling",
- "email": "bwp@bwp.dk"
- },
- "license": "MIT or GPL-2.0",
- "contributors": [
- {
- "name": "Bjarke Walling",
- "email": "bwp@bwp.dk"
- },
- {
- "name": "Oleg Grenrus",
- "email": "oleg.grenrus@iki.fi"
- },
- {
- "name": "Matsuza",
- "email": "matsuza@gmail.com"
- }
- ],
- "repository": {
- "type": "git",
- "url": "git+ssh://git@github.com/walling/unorm.git"
- },
- "main": "./lib/unorm.js",
- "engines": {
- "node": ">= 0.4.0"
- },
- "scripts": {
- "test": "grunt test"
- },
- "devDependencies": {
- "benchmark": "~1.0.0",
- "unorm": "1.4.1",
- "grunt-contrib-jshint": "~0.8.0",
- "grunt-contrib-watch": "~0.5.0",
- "grunt-simple-mocha": "~0.4.0",
- "grunt": "~0.4.1"
- },
- "gitHead": "e802d0d7844cf74b03742bce1147a82ace218396",
- "bugs": {
- "url": "https://github.com/walling/unorm/issues"
- },
- "homepage": "https://github.com/walling/unorm",
- "_id": "unorm@1.4.1",
- "_shasum": "364200d5f13646ca8bcd44490271335614792300",
- "_from": "unorm@>=1.3.3 <2.0.0",
- "_npmVersion": "1.4.28",
- "_npmUser": {
- "name": "walling",
- "email": "bwp@bwp.dk"
- },
- "maintainers": [
- {
- "name": "walling",
- "email": "bwp@bwp.dk"
- }
- ],
- "dist": {
- "shasum": "364200d5f13646ca8bcd44490271335614792300",
- "tarball": "http://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz",
- "readme": "ERROR: No README data found!"
-}
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/cordova-common/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/package.json b/node_modules/cordova-common/package.json
index 9a2eb2b..97f6916 100644
--- a/node_modules/cordova-common/package.json
+++ b/node_modules/cordova-common/package.json
@@ -1,36 +1,57 @@
{
- "author": {
- "name": "Apache Software Foundation"
+ "_args": [
+ [
+ "cordova-common@^1.3.0",
+ "D:\\Cordova\\cordova-windows"
+ ]
+ ],
+ "_from": "cordova-common@>=1.3.0 <2.0.0",
+ "_id": "cordova-common@1.3.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/cordova-common",
+ "_nodeVersion": "5.4.1",
+ "_npmOperationalInternal": {
+ "host": "packages-16-east.internal.npmjs.com",
+ "tmp": "tmp/cordova-common-1.3.0.tgz_1464130094288_0.48495062021538615"
},
- "name": "cordova-common",
- "description": "Apache Cordova tools and platforms shared routines",
- "license": "Apache-2.0",
- "version": "1.2.0",
- "repository": {
- "type": "git",
- "url": "git://git-wip-us.apache.org/repos/asf/cordova-common.git"
+ "_npmUser": {
+ "email": "stevengill97@gmail.com",
+ "name": "stevegill"
},
- "bugs": {
- "url": "https://issues.apache.org/jira/browse/CB",
- "email": "dev@cordova.apache.org"
+ "_npmVersion": "3.9.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "cordova-common",
+ "raw": "cordova-common@^1.3.0",
+ "rawSpec": "^1.3.0",
+ "scope": null,
+ "spec": ">=1.3.0 <2.0.0",
+ "type": "range"
},
- "main": "cordova-common.js",
- "engines": {
- "node": ">=0.9.9"
+ "_requiredBy": [
+ "/"
+ ],
+ "_resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-1.3.0.tgz",
+ "_shasum": "f75161f6aa7cef5486fd5d69a3b0a1f628334491",
+ "_shrinkwrap": null,
+ "_spec": "cordova-common@^1.3.0",
+ "_where": "D:\\Cordova\\cordova-windows",
+ "author": {
+ "name": "Apache Software Foundation"
},
- "scripts": {
- "test": "npm run jshint && npm run jasmine",
- "jshint": "node node_modules/jshint/bin/jshint src && node node_modules/jshint/bin/jshint spec",
- "jasmine": "node node_modules/jasmine-node/bin/jasmine-node --captureExceptions --color spec",
- "cover": "node node_modules/istanbul/lib/cli.js cover --root src --print detail node_modules/jasmine-node/bin/jasmine-node -- spec"
+ "bugs": {
+ "email": "dev@cordova.apache.org",
+ "url": "https://issues.apache.org/jira/browse/CB"
},
- "engineStrict": true,
+ "contributors": [],
"dependencies": {
"ansi": "^0.3.1",
"bplist-parser": "^0.1.0",
"cordova-registry-mapper": "^1.1.8",
"elementtree": "^0.1.6",
"glob": "^5.0.13",
+ "minimatch": "^3.0.0",
"osenv": "^0.1.3",
"plist": "^1.2.0",
"q": "^1.4.1",
@@ -39,6 +60,7 @@
"underscore": "^1.8.3",
"unorm": "^1.3.3"
},
+ "description": "Apache Cordova tools and platforms shared routines",
"devDependencies": {
"istanbul": "^0.3.17",
"jasmine-node": "^1.14.5",
@@ -46,11 +68,55 @@
"promise-matchers": "^0.9.6",
"rewire": "^2.5.1"
},
- "contributors": [],
- "readme": "<!--\n#\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements. See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership. The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License. You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied. See the License for the\n# specific language governing permissions and limitations\n# under the License.\n#\n-->\n\n# cordova-common\nExpoeses shared functionality used by [cordova-lib](https://github.com/apache/cordova-lib/) and Cordova platforms.\n## Exposed APIs\n\n### `eve
nts`\n \nRepresents special instance of NodeJS EventEmitter which is intended to be used to post events to cordova-lib and cordova-cli\n\nUsage:\n```\nvar events = require('cordova-common').events;\nevents.emit('warn', 'Some warning message')\n```\n\nThere are the following events supported by cordova-cli: `verbose`, `log`, `info`, `warn`, `error`.\n\n### `CordovaError`\n\nAn error class used by Cordova to throw cordova-specific errors. The CordovaError class is inherited from Error, so CordovaError instances is also valid Error instances (`instanceof` check succeeds).\n\nUsage:\n\n```\nvar CordovaError = require('cordova-common').CordovaError;\nthrow new CordovaError('Some error message', SOME_ERR_CODE);\n```\n\nSee [CordovaError](src/CordovaError/CordovaError.js) for supported error codes.\n\n### `ConfigParser`\n\nExposes functionality to deal with cordova project `config.xml` files. For ConfigParser API reference check [ConfigParser Readme](src/ConfigParser/README.md).\n\nUsage:
\n```\nvar ConfigParser = require('cordova-common').ConfigParser;\nvar appConfig = new ConfigParser('path/to/cordova-app/config.xml');\nconsole.log(appconfig.name() + ':' + appConfig.version());\n```\n\n### `PluginInfoProvider` and `PluginInfo`\n\n`PluginInfo` is a wrapper for cordova plugins' `plugin.xml` files. This class may be instantiated directly or via `PluginInfoProvider`. The difference is that `PluginInfoProvider` caches `PluginInfo` instances based on plugin source directory.\n\nUsage:\n```\nvar PluginInfo: require('cordova-common').PluginInfo;\nvar PluginInfoProvider: require('cordova-common').PluginInfoProvider;\n\n// The following instances are equal\nvar plugin1 = new PluginInfo('path/to/plugin_directory');\nvar plugin2 = new PluginInfoProvider().get('path/to/plugin_directory');\n\nconsole.log('The plugin ' + plugin1.id + ' has version ' + plugin1.version)\n```\n\n### `ActionStack`\n\nUtility module for dealing with sequential tasks. Provides a set of tasks that are n
eeded to be done and reverts all tasks that are already completed if one of those tasks fail to complete. Used internally by cordova-lib and platform's plugin installation routines.\n\nUsage:\n```\nvar ActionStack = require('cordova-common').ActionStack;\nvar stack = new ActionStack()\n\nvar action1 = stack.createAction(task1, [<task parameters>], task1_reverter, [<reverter_parameters>]);\nvar action2 = stack.createAction(task2, [<task parameters>], task2_reverter, [<reverter_parameters>]);\n\nstack.push(action1);\nstack.push(action2);\n\nstack.process()\n.then(function() {\n // all actions succeded\n})\n.catch(function(error){\n // One of actions failed with error\n})\n```\n\n### `superspawn`\n\nModule for spawning child processes with some advanced logic.\n\nUsage:\n```\nvar superspawn = require('cordova-common').superspawn;\nsuperspawn.spawn('adb', ['devices'])\n.progress(function(data){\n if (data.stderr)\n console.error('\"adb devices\" raised an error: ' + data
.stderr);\n})\n.then(function(devices){\n // Do something...\n})\n```\n\n### `xmlHelpers`\n\nA set of utility methods for dealing with xml files.\n\nUsage:\n```\nvar xml = require('cordova-common').xmlHelpers;\n\nvar xmlDoc1 = xml.parseElementtreeSync('some/xml/file');\nvar xmlDoc2 = xml.parseElementtreeSync('another/xml/file');\n\nxml.mergeXml(doc1, doc2); // doc2 now contains all the nodes from doc1\n```\n\n### Other APIs\n\nThe APIs listed below are also exposed but are intended to be only used internally by cordova plugin installation routines.\n\n```\nPlatformJson\nConfigChanges\nConfigKeeper\nConfigFile\nmungeUtil\n```\n\n## Setup\n* Clone this repository onto your local machine\n `git clone https://git-wip-us.apache.org/repos/asf/cordova-lib.git`\n* In terminal, navigate to the inner cordova-common directory\n `cd cordova-lib/cordova-common`\n* Install dependencies and npm-link\n `npm install && npm link`\n* Navigate to cordova-lib directory and link cordova-commo
n\n `cd ../cordova-lib && npm link cordova-common && npm install`\n",
- "readmeFilename": "README.md",
- "_id": "cordova-common@1.2.0",
- "_shasum": "474b7f77c6c89d3f995c947d96046edf2e8c404d",
- "_resolved": "file:cordova-dist\\tools\\cordova-common-1.2.0.tgz",
- "_from": "cordova-common@1.2.0"
+ "directories": {},
+ "dist": {
+ "shasum": "f75161f6aa7cef5486fd5d69a3b0a1f628334491",
+ "tarball": "https://registry.npmjs.org/cordova-common/-/cordova-common-1.3.0.tgz"
+ },
+ "engineStrict": true,
+ "engines": {
+ "node": ">=0.9.9"
+ },
+ "license": "Apache-2.0",
+ "main": "cordova-common.js",
+ "maintainers": [
+ {
+ "email": "bowserj@apache.org",
+ "name": "bowserj"
+ },
+ {
+ "email": "kotikov.vladimir@gmail.com",
+ "name": "kotikov.vladimir"
+ },
+ {
+ "email": "purplecabbage@gmail.com",
+ "name": "purplecabbage"
+ },
+ {
+ "email": "shazron@gmail.com",
+ "name": "shazron"
+ },
+ {
+ "email": "stevengill97@gmail.com",
+ "name": "stevegill"
+ },
+ {
+ "email": "npmjs@barhams.info",
+ "name": "timbarham"
+ }
+ ],
+ "name": "cordova-common",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git://git-wip-us.apache.org/repos/asf/cordova-common.git"
+ },
+ "scripts": {
+ "cover": "node node_modules/istanbul/lib/cli.js cover --root src --print detail node_modules/jasmine-node/bin/jasmine-node -- spec",
+ "jasmine": "node node_modules/jasmine-node/bin/jasmine-node --captureExceptions --color spec",
+ "jshint": "node node_modules/jshint/bin/jshint src && node node_modules/jshint/bin/jshint spec",
+ "test": "npm run jshint && npm run jasmine"
+ },
+ "version": "1.3.0"
}
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/cordova-common/src/ConfigChanges/ConfigFile.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/ConfigChanges/ConfigFile.js b/node_modules/cordova-common/src/ConfigChanges/ConfigFile.js
index dd9ebbc..9c540b9 100644
--- a/node_modules/cordova-common/src/ConfigChanges/ConfigFile.js
+++ b/node_modules/cordova-common/src/ConfigChanges/ConfigFile.js
@@ -17,13 +17,17 @@
var fs = require('fs');
var path = require('path');
-var bplist = require('bplist-parser');
-var et = require('elementtree');
-var glob = require('glob');
-var plist = require('plist');
-
-var plist_helpers = require('../util/plist-helpers');
-var xml_helpers = require('../util/xml-helpers');
+var modules = {};
+var addProperty = require('../util/addProperty');
+
+// Use delay loading to ensure plist and other node modules to not get loaded
+// on Android, Windows platforms
+addProperty(module, 'bplist', 'bplist-parser', modules);
+addProperty(module, 'et', 'elementtree', modules);
+addProperty(module, 'glob', 'glob', modules);
+addProperty(module, 'plist', 'plist', modules);
+addProperty(module, 'plist_helpers', '../util/plist-helpers', modules);
+addProperty(module, 'xml_helpers', '../util/xml-helpers', modules);
/******************************************************************************
* ConfigFile class
@@ -67,7 +71,7 @@ function ConfigFile_load() {
// the same in a future release
if (ext == '.xml' || ext == '.appxmanifest') {
self.type = 'xml';
- self.data = xml_helpers.parseElementtreeSync(filepath);
+ self.data = modules.xml_helpers.parseElementtreeSync(filepath);
} else {
// plist file
self.type = 'plist';
@@ -76,8 +80,8 @@ function ConfigFile_load() {
// Do we still need to support binary plist?
// If yes, use plist.parseStringSync() and read the file once.
self.data = isBinaryPlist(filepath) ?
- bplist.parseBuffer(fs.readFileSync(filepath)) :
- plist.parse(fs.readFileSync(filepath, 'utf8'));
+ modules.bplist.parseBuffer(fs.readFileSync(filepath)) :
+ modules.plist.parse(fs.readFileSync(filepath, 'utf8'));
}
}
@@ -88,7 +92,7 @@ ConfigFile.prototype.save = function ConfigFile_save() {
} else {
// plist
var regExp = new RegExp('<string>[ \t\r\n]+?</string>', 'g');
- fs.writeFileSync(self.filepath, plist.build(self.data).replace(regExp, '<string></string>'));
+ fs.writeFileSync(self.filepath, modules.plist.build(self.data).replace(regExp, '<string></string>'));
}
self.is_changed = false;
};
@@ -98,16 +102,16 @@ ConfigFile.prototype.graft_child = function ConfigFile_graft_child(selector, xml
var filepath = self.filepath;
var result;
if (self.type === 'xml') {
- var xml_to_graft = [et.XML(xml_child.xml)];
- result = xml_helpers.graftXML(self.data, xml_to_graft, selector, xml_child.after);
+ var xml_to_graft = [modules.et.XML(xml_child.xml)];
+ result = modules.xml_helpers.graftXML(self.data, xml_to_graft, selector, xml_child.after);
if ( !result) {
- throw new Error('grafting xml at selector "' + selector + '" from "' + filepath + '" during config install went bad :(');
+ throw new Error('Unable to graft xml at selector "' + selector + '" from "' + filepath + '" during config install');
}
} else {
// plist file
- result = plist_helpers.graftPLIST(self.data, xml_child.xml, selector);
+ result = modules.plist_helpers.graftPLIST(self.data, xml_child.xml, selector);
if ( !result ) {
- throw new Error('grafting to plist "' + filepath + '" during config install went bad :(');
+ throw new Error('Unable to graft plist "' + filepath + '" during config install');
}
}
self.is_changed = true;
@@ -118,11 +122,11 @@ ConfigFile.prototype.prune_child = function ConfigFile_prune_child(selector, xml
var filepath = self.filepath;
var result;
if (self.type === 'xml') {
- var xml_to_graft = [et.XML(xml_child.xml)];
- result = xml_helpers.pruneXML(self.data, xml_to_graft, selector);
+ var xml_to_graft = [modules.et.XML(xml_child.xml)];
+ result = modules.xml_helpers.pruneXML(self.data, xml_to_graft, selector);
} else {
// plist file
- result = plist_helpers.prunePLIST(self.data, xml_child.xml, selector);
+ result = modules.plist_helpers.prunePLIST(self.data, xml_child.xml, selector);
}
if (!result) {
var err_msg = 'Pruning at selector "' + selector + '" from "' + filepath + '" went bad.';
@@ -140,7 +144,7 @@ function resolveConfigFilePath(project_dir, platform, file) {
if (file.indexOf('*') > -1) {
// handle wildcards in targets using glob.
- matches = glob.sync(path.join(project_dir, '**', file));
+ matches = modules.glob.sync(path.join(project_dir, '**', file));
if (matches.length) filepath = matches[0];
// [CB-5989] multiple Info.plist files may exist. default to $PROJECT_NAME-Info.plist
@@ -167,7 +171,7 @@ function resolveConfigFilePath(project_dir, platform, file) {
} else if (platform == 'android') {
filepath = path.join(project_dir, 'res', 'xml', 'config.xml');
} else {
- matches = glob.sync(path.join(project_dir, '**', 'config.xml'));
+ matches = modules.glob.sync(path.join(project_dir, '**', 'config.xml'));
if (matches.length) filepath = matches[0];
}
return filepath;
@@ -180,7 +184,7 @@ function resolveConfigFilePath(project_dir, platform, file) {
// Find out the real name of an iOS project
// TODO: glob is slow, need a better way or caching, or avoid using more than once.
function getIOSProjectname(project_dir) {
- var matches = glob.sync(path.join(project_dir, '*.xcodeproj'));
+ var matches = modules.glob.sync(path.join(project_dir, '*.xcodeproj'));
var iospath;
if (matches.length === 1) {
iospath = path.basename(matches[0],'.xcodeproj');
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/cordova-common/src/CordovaLogger.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/CordovaLogger.js b/node_modules/cordova-common/src/CordovaLogger.js
index 852d298..71bc7e8 100644
--- a/node_modules/cordova-common/src/CordovaLogger.js
+++ b/node_modules/cordova-common/src/CordovaLogger.js
@@ -89,7 +89,7 @@ CordovaLogger.prototype.log = function (logLevel, message) {
var isVerbose = this.logLevel === 'verbose';
var cursor = this.stdoutCursor;
- if(message instanceof Error || logLevel === CordovaLogger.ERROR) {
+ if (message instanceof Error || logLevel === CordovaLogger.ERROR) {
message = formatError(message, isVerbose);
cursor = this.stderrCursor;
}
@@ -196,10 +196,10 @@ CordovaLogger.prototype.subscribe = function (eventEmitter) {
function formatError(error, isVerbose) {
var message = '';
- if(error instanceof CordovaError) {
+ if (error instanceof CordovaError) {
message = error.toString(isVerbose);
- } else if(error instanceof Error) {
- if(isVerbose) {
+ } else if (error instanceof Error) {
+ if (isVerbose) {
message = error.stack;
} else {
message = error.message;
@@ -209,7 +209,7 @@ function formatError(error, isVerbose) {
message = error;
}
- if(message.toUpperCase().indexOf('ERROR:') !== 0) {
+ if (typeof message === 'string' && message.toUpperCase().indexOf('ERROR:') !== 0) {
// Needed for backward compatibility with external tools
message = 'Error: ' + message;
}
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/cordova-common/src/FileUpdater.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/FileUpdater.js b/node_modules/cordova-common/src/FileUpdater.js
new file mode 100644
index 0000000..a09f39c
--- /dev/null
+++ b/node_modules/cordova-common/src/FileUpdater.js
@@ -0,0 +1,422 @@
+/**
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+
+"use strict";
+
+var fs = require("fs");
+var path = require("path");
+var shell = require("shelljs");
+var minimatch = require("minimatch");
+
+/**
+ * Logging callback used in the FileUpdater methods.
+ * @callback loggingCallback
+ * @param {string} message A message describing a single file update operation.
+ */
+
+/**
+ * Updates a target file or directory with a source file or directory. (Directory updates are
+ * not recursive.) Stats for target and source items must be passed in. This is an internal
+ * helper function used by other methods in this module.
+ *
+ * @param {?string} sourcePath Source file or directory to be used to update the
+ * destination. If the source is null, then the destination is deleted if it exists.
+ * @param {?fs.Stats} sourceStats An instance of fs.Stats for the source path, or null if
+ * the source does not exist.
+ * @param {string} targetPath Required destination file or directory to be updated. If it does
+ * not exist, it will be created.
+ * @param {?fs.Stats} targetStats An instance of fs.Stats for the target path, or null if
+ * the target does not exist.
+ * @param {Object} [options] Optional additional parameters for the update.
+ * @param {string} [options.rootDir] Optional root directory (such as a project) to which target
+ * and source path parameters are relative; may be omitted if the paths are absolute. The
+ * rootDir is always omitted from any logged paths, to make the logs easier to read.
+ * @param {boolean} [options.all] If true, all files are copied regardless of last-modified times.
+ * Otherwise, a file is copied if the source's last-modified time is greather than or
+ * equal to the target's last-modified time, or if the file sizes are different.
+ * @param {loggingCallback} [log] Optional logging callback that takes a string message
+ * describing any file operations that are performed.
+ * @return {boolean} true if any changes were made, or false if the force flag is not set
+ * and everything was up to date
+ */
+function updatePathWithStats(sourcePath, sourceStats, targetPath, targetStats, options, log) {
+ var updated = false;
+
+ var rootDir = (options && options.rootDir) || "";
+ var copyAll = (options && options.all) || false;
+
+ var targetFullPath = path.join(rootDir || "", targetPath);
+
+ if (sourceStats) {
+ var sourceFullPath = path.join(rootDir || "", sourcePath);
+
+ if (targetStats) {
+ // The target exists. But if the directory status doesn't match the source, delete it.
+ if (targetStats.isDirectory() && !sourceStats.isDirectory()) {
+ log("rmdir " + targetPath + " (source is a file)");
+ shell.rm("-rf", targetFullPath);
+ targetStats = null;
+ updated = true;
+ } else if (!targetStats.isDirectory() && sourceStats.isDirectory()) {
+ log("delete " + targetPath + " (source is a directory)");
+ shell.rm("-f", targetFullPath);
+ targetStats = null;
+ updated = true;
+ }
+ }
+
+ if (!targetStats) {
+ if (sourceStats.isDirectory()) {
+ // The target directory does not exist, so it should be created.
+ log("mkdir " + targetPath);
+ shell.mkdir("-p", targetFullPath);
+ updated = true;
+ } else if (sourceStats.isFile()) {
+ // The target file does not exist, so it should be copied from the source.
+ log("copy " + sourcePath + " " + targetPath + (copyAll ? "" : " (new file)"));
+ shell.cp("-f", sourceFullPath, targetFullPath);
+ updated = true;
+ }
+ } else if (sourceStats.isFile() && targetStats.isFile()) {
+ // The source and target paths both exist and are files.
+ if (copyAll) {
+ // The caller specified all files should be copied.
+ log("copy " + sourcePath + " " + targetPath);
+ shell.cp("-f", sourceFullPath, targetFullPath);
+ updated = true;
+ } else {
+ // Copy if the source has been modified since it was copied to the target, or if
+ // the file sizes are different. (The latter catches most cases in which something
+ // was done to the file after copying.) Comparison is >= rather than > to allow
+ // for timestamps lacking sub-second precision in some filesystems.
+ if (sourceStats.mtime.getTime() >= targetStats.mtime.getTime() ||
+ sourceStats.size !== targetStats.size) {
+ log("copy " + sourcePath + " " + targetPath + " (updated file)");
+ shell.cp("-f", sourceFullPath, targetFullPath);
+ updated = true;
+ }
+ }
+ }
+ } else if (targetStats) {
+ // The target exists but the source is null, so the target should be deleted.
+ if (targetStats.isDirectory()) {
+ log("rmdir " + targetPath + (copyAll ? "" : " (no source)"));
+ shell.rm("-rf", targetFullPath);
+ } else {
+ log("delete " + targetPath + (copyAll ? "" : " (no source)"));
+ shell.rm("-f", targetFullPath);
+ }
+ updated = true;
+ }
+
+ return updated;
+}
+
+/**
+ * Helper for updatePath and updatePaths functions. Queries stats for source and target
+ * and ensures target directory exists before copying a file.
+ */
+function updatePathInternal(sourcePath, targetPath, options, log) {
+ var rootDir = (options && options.rootDir) || "";
+ var targetFullPath = path.join(rootDir, targetPath);
+ var targetStats = fs.existsSync(targetFullPath) ? fs.statSync(targetFullPath) : null;
+ var sourceStats = null;
+
+ if (sourcePath) {
+ // A non-null source path was specified. It should exist.
+ var sourceFullPath = path.join(rootDir, sourcePath);
+ if (!fs.existsSync(sourceFullPath)) {
+ throw new Error("Source path does not exist: " + sourcePath);
+ }
+
+ sourceStats = fs.statSync(sourceFullPath);
+
+ // Create the target's parent directory if it doesn't exist.
+ var parentDir = path.dirname(targetFullPath);
+ if (!fs.existsSync(parentDir)) {
+ shell.mkdir("-p", parentDir);
+ }
+ }
+
+ return updatePathWithStats(sourcePath, sourceStats, targetPath, targetStats, options, log);
+}
+
+/**
+ * Updates a target file or directory with a source file or directory. (Directory updates are
+ * not recursive.)
+ *
+ * @param {?string} sourcePath Source file or directory to be used to update the
+ * destination. If the source is null, then the destination is deleted if it exists.
+ * @param {string} targetPath Required destination file or directory to be updated. If it does
+ * not exist, it will be created.
+ * @param {Object} [options] Optional additional parameters for the update.
+ * @param {string} [options.rootDir] Optional root directory (such as a project) to which target
+ * and source path parameters are relative; may be omitted if the paths are absolute. The
+ * rootDir is always omitted from any logged paths, to make the logs easier to read.
+ * @param {boolean} [options.all] If true, all files are copied regardless of last-modified times.
+ * Otherwise, a file is copied if the source's last-modified time is greather than or
+ * equal to the target's last-modified time, or if the file sizes are different.
+ * @param {loggingCallback} [log] Optional logging callback that takes a string message
+ * describing any file operations that are performed.
+ * @return {boolean} true if any changes were made, or false if the force flag is not set
+ * and everything was up to date
+ */
+function updatePath(sourcePath, targetPath, options, log) {
+ if (sourcePath !== null && typeof sourcePath !== "string") {
+ throw new Error("A source path (or null) is required.");
+ }
+
+ if (!targetPath || typeof targetPath !== "string") {
+ throw new Error("A target path is required.");
+ }
+
+ log = log || function(message) { };
+
+ return updatePathInternal(sourcePath, targetPath, options, log);
+}
+
+/**
+ * Updates files and directories based on a mapping from target paths to source paths. Targets
+ * with null sources in the map are deleted.
+ *
+ * @param {Object} pathMap A dictionary mapping from target paths to source paths.
+ * @param {Object} [options] Optional additional parameters for the update.
+ * @param {string} [options.rootDir] Optional root directory (such as a project) to which target
+ * and source path parameters are relative; may be omitted if the paths are absolute. The
+ * rootDir is always omitted from any logged paths, to make the logs easier to read.
+ * @param {boolean} [options.all] If true, all files are copied regardless of last-modified times.
+ * Otherwise, a file is copied if the source's last-modified time is greather than or
+ * equal to the target's last-modified time, or if the file sizes are different.
+ * @param {loggingCallback} [log] Optional logging callback that takes a string message
+ * describing any file operations that are performed.
+ * @return {boolean} true if any changes were made, or false if the force flag is not set
+ * and everything was up to date
+ */
+function updatePaths(pathMap, options, log) {
+ if (!pathMap || typeof pathMap !== "object" || Array.isArray(pathMap)) {
+ throw new Error("An object mapping from target paths to source paths is required.");
+ }
+
+ log = log || function(message) { };
+
+ var updated = false;
+
+ // Iterate in sorted order to ensure directories are created before files under them.
+ Object.keys(pathMap).sort().forEach(function (targetPath) {
+ var sourcePath = pathMap[targetPath];
+ updated = updatePathInternal(sourcePath, targetPath, options, log) || updated;
+ });
+
+ return updated;
+}
+
+/**
+ * Updates a target directory with merged files and subdirectories from source directories.
+ *
+ * @param {string|string[]} sourceDirs Required source directory or array of source directories
+ * to be merged into the target. The directories are listed in order of precedence; files in
+ * directories later in the array supersede files in directories earlier in the array
+ * (regardless of timestamps).
+ * @param {string} targetDir Required destination directory to be updated. If it does not exist,
+ * it will be created. If it exists, newer files from source directories will be copied over,
+ * and files missing in the source directories will be deleted.
+ * @param {Object} [options] Optional additional parameters for the update.
+ * @param {string} [options.rootDir] Optional root directory (such as a project) to which target
+ * and source path parameters are relative; may be omitted if the paths are absolute. The
+ * rootDir is always omitted from any logged paths, to make the logs easier to read.
+ * @param {boolean} [options.all] If true, all files are copied regardless of last-modified times.
+ * Otherwise, a file is copied if the source's last-modified time is greather than or
+ * equal to the target's last-modified time, or if the file sizes are different.
+ * @param {string|string[]} [options.include] Optional glob string or array of glob strings that
+ * are tested against both target and source relative paths to determine if they are included
+ * in the merge-and-update. If unspecified, all items are included.
+ * @param {string|string[]} [options.exclude] Optional glob string or array of glob strings that
+ * are tested against both target and source relative paths to determine if they are excluded
+ * from the merge-and-update. Exclusions override inclusions. If unspecified, no items are
+ * excluded.
+ * @param {loggingCallback} [log] Optional logging callback that takes a string message
+ * describing any file operations that are performed.
+ * @return {boolean} true if any changes were made, or false if the force flag is not set
+ * and everything was up to date
+ */
+function mergeAndUpdateDir(sourceDirs, targetDir, options, log) {
+ if (sourceDirs && typeof sourceDirs === "string") {
+ sourceDirs = [ sourceDirs ];
+ } else if (!Array.isArray(sourceDirs)) {
+ throw new Error("A source directory path or array of paths is required.");
+ }
+
+ if (!targetDir || typeof targetDir !== "string") {
+ throw new Error("A target directory path is required.");
+ }
+
+ log = log || function(message) { };
+
+ var rootDir = (options && options.rootDir) || "";
+
+ var include = (options && options.include) || [ "**" ];
+ if (typeof include === "string") {
+ include = [ include ];
+ } else if (!Array.isArray(include)) {
+ throw new Error("Include parameter must be a glob string or array of glob strings.");
+ }
+
+ var exclude = (options && options.exclude) || [];
+ if (typeof exclude === "string") {
+ exclude = [ exclude ];
+ } else if (!Array.isArray(exclude)) {
+ throw new Error("Exclude parameter must be a glob string or array of glob strings.");
+ }
+
+ // Scan the files in each of the source directories.
+ var sourceMaps = [];
+ for (var i in sourceDirs) {
+ var sourceFullPath = path.join(rootDir, sourceDirs[i]);
+ if (!fs.existsSync(sourceFullPath)) {
+ throw new Error("Source directory does not exist: " + sourceDirs[i]);
+ }
+ sourceMaps[i] = mapDirectory(rootDir, sourceDirs[i], include, exclude);
+ }
+
+ // Scan the files in the target directory, if it exists.
+ var targetMap = {};
+ var targetFullPath = path.join(rootDir, targetDir);
+ if (fs.existsSync(targetFullPath)) {
+ targetMap = mapDirectory(rootDir, targetDir, include, exclude);
+ }
+
+ var pathMap = mergePathMaps(sourceMaps, targetMap, targetDir);
+
+ var updated = false;
+
+ // Iterate in sorted order to ensure directories are created before files under them.
+ Object.keys(pathMap).sort().forEach(function (subPath) {
+ var entry = pathMap[subPath];
+ updated = updatePathWithStats(
+ entry.sourcePath,
+ entry.sourceStats,
+ entry.targetPath,
+ entry.targetStats,
+ options,
+ log) || updated;
+ });
+
+ return updated;
+}
+
+/**
+ * Creates a dictionary map of all files and directories under a path.
+ */
+function mapDirectory(rootDir, subDir, include, exclude) {
+ var dirMap = { "": { subDir: subDir, stats: fs.statSync(path.join(rootDir, subDir)) } };
+ mapSubdirectory(rootDir, subDir, "", include, exclude, dirMap);
+ return dirMap;
+
+ function mapSubdirectory(rootDir, subDir, relativeDir, include, exclude, dirMap) {
+ var itemMapped = false;
+ var items = fs.readdirSync(path.join(rootDir, subDir, relativeDir));
+ for (var i in items) {
+ var relativePath = path.join(relativeDir, items[i]);
+
+ // Skip any files or directories (and everything under) that match an exclude glob.
+ if (matchGlobArray(relativePath, exclude)) {
+ continue;
+ }
+
+ // Stats obtained here (required at least to know where to recurse in directories)
+ // are saved for later, where the modified times may also be used. This minimizes
+ // the number of file I/O operations performed.
+ var fullPath = path.join(rootDir, subDir, relativePath);
+ var stats = fs.statSync(fullPath);
+
+ if (stats.isDirectory()) {
+ // Directories are included if either something under them is included or they
+ // match an include glob.
+ if (mapSubdirectory(rootDir, subDir, relativePath, include, exclude, dirMap) ||
+ matchGlobArray(relativePath, include)) {
+ dirMap[relativePath] = { subDir: subDir, stats: stats };
+ itemMapped = true;
+ }
+ } else if (stats.isFile()) {
+ // Files are included only if they match an include glob.
+ if (matchGlobArray(relativePath, include)) {
+ dirMap[relativePath] = { subDir: subDir, stats: stats };
+ itemMapped = true;
+ }
+ }
+ }
+ return itemMapped;
+ }
+
+ function matchGlobArray(path, globs) {
+ for (var i in globs) {
+ if (minimatch(path, globs[i])) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
+
+/**
+ * Merges together multiple source maps and a target map into a single mapping from
+ * relative paths to objects with target and source paths and stats.
+ */
+function mergePathMaps(sourceMaps, targetMap, targetDir) {
+ // Merge multiple source maps together, along with target path info.
+ // Entries in later source maps override those in earlier source maps.
+ // Target stats will be filled in below for targets that exist.
+ var pathMap = {};
+ sourceMaps.forEach(function (sourceMap) {
+ for (var sourceSubPath in sourceMap) {
+ var sourceEntry = sourceMap[sourceSubPath];
+ pathMap[sourceSubPath] = {
+ targetPath: path.join(targetDir, sourceSubPath),
+ targetStats: null,
+ sourcePath: path.join(sourceEntry.subDir, sourceSubPath),
+ sourceStats: sourceEntry.stats
+ };
+ }
+ });
+
+ // Fill in target stats for targets that exist, and create entries
+ // for targets that don't have any corresponding sources.
+ for (var subPath in targetMap) {
+ var entry = pathMap[subPath];
+ if (entry) {
+ entry.targetStats = targetMap[subPath].stats;
+ } else {
+ pathMap[subPath] = {
+ targetPath: path.join(targetDir, subPath),
+ targetStats: targetMap[subPath].stats,
+ sourcePath: null,
+ sourceStats: null
+ };
+ }
+ }
+
+ return pathMap;
+}
+
+module.exports = {
+ updatePath: updatePath,
+ updatePaths: updatePaths,
+ mergeAndUpdateDir: mergeAndUpdateDir
+};
+
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/cordova-common/src/PluginInfo/PluginInfo.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/PluginInfo/PluginInfo.js b/node_modules/cordova-common/src/PluginInfo/PluginInfo.js
index e1a1b31..77199ec 100644
--- a/node_modules/cordova-common/src/PluginInfo/PluginInfo.js
+++ b/node_modules/cordova-common/src/PluginInfo/PluginInfo.js
@@ -331,7 +331,7 @@ function PluginInfo(dirname) {
///// PluginInfo Constructor logic /////
self.filepath = path.join(dirname, 'plugin.xml');
if (!fs.existsSync(self.filepath)) {
- throw new CordovaError('Cannot find plugin.xml for plugin \'' + path.basename(dirname) + '\'. Please try adding it again.');
+ throw new CordovaError('Cannot find plugin.xml for plugin "' + path.basename(dirname) + '". Please try adding it again.');
}
self.dir = dirname;
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/cordova-common/src/events.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/events.js b/node_modules/cordova-common/src/events.js
index 8751976..e702bd8 100644
--- a/node_modules/cordova-common/src/events.js
+++ b/node_modules/cordova-common/src/events.js
@@ -40,7 +40,7 @@ module.exports.forwardEventsTo = function (eventEmitter) {
}
if (!(eventEmitter instanceof EventEmitter))
- throw new Error('Cordova events could be redirected to another EventEmitter instance only');
+ throw new Error('Cordova events can be redirected to another EventEmitter instance only');
// CB-10940 Skipping forwarding to self to avoid infinite recursion.
// This is the case when the modules are npm-linked.
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/cordova-common/src/util/addProperty.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-common/src/util/addProperty.js b/node_modules/cordova-common/src/util/addProperty.js
new file mode 100644
index 0000000..7dc4dc1
--- /dev/null
+++ b/node_modules/cordova-common/src/util/addProperty.js
@@ -0,0 +1,32 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+
+module.exports = function addProperty(module, property, modulePath, obj) {
+
+ obj = obj || module.exports;
+ // Add properties as getter to delay load the modules on first invocation
+ Object.defineProperty(obj, property, {
+ configurable: true,
+ get: function () {
+ var delayLoadedModule = module.require(modulePath);
+ obj[property] = delayLoadedModule;
+ return delayLoadedModule;
+ }
+ });
+};
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/cordova-registry-mapper/.npmignore
----------------------------------------------------------------------
diff --git a/node_modules/cordova-registry-mapper/.npmignore b/node_modules/cordova-registry-mapper/.npmignore
new file mode 100644
index 0000000..3c3629e
--- /dev/null
+++ b/node_modules/cordova-registry-mapper/.npmignore
@@ -0,0 +1 @@
+node_modules
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/cordova-registry-mapper/.travis.yml
----------------------------------------------------------------------
diff --git a/node_modules/cordova-registry-mapper/.travis.yml b/node_modules/cordova-registry-mapper/.travis.yml
new file mode 100644
index 0000000..ae381fc
--- /dev/null
+++ b/node_modules/cordova-registry-mapper/.travis.yml
@@ -0,0 +1,7 @@
+language: node_js
+sudo: false
+node_js:
+ - "0.10"
+install: npm install
+script:
+ - npm test
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/cordova-registry-mapper/README.md
----------------------------------------------------------------------
diff --git a/node_modules/cordova-registry-mapper/README.md b/node_modules/cordova-registry-mapper/README.md
new file mode 100644
index 0000000..3b93e5f
--- /dev/null
+++ b/node_modules/cordova-registry-mapper/README.md
@@ -0,0 +1,14 @@
+[![Build Status](https://travis-ci.org/stevengill/cordova-registry-mapper.svg?branch=master)](https://travis-ci.org/stevengill/cordova-registry-mapper)
+
+#Cordova Registry Mapper
+
+This module is used to map Cordova plugin ids to package names and vice versa.
+
+When Cordova users add plugins to their projects using ids
+(e.g. `cordova plugin add org.apache.cordova.device`),
+this module will map that id to the corresponding package name so `cordova-lib` knows what to fetch from **npm**.
+
+This module was created so the Apache Cordova project could migrate its plugins from
+the [Cordova Registry](http://registry.cordova.io/)
+to [npm](https://registry.npmjs.com/)
+instead of having to maintain a registry.
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/cordova-registry-mapper/index.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-registry-mapper/index.js b/node_modules/cordova-registry-mapper/index.js
new file mode 100644
index 0000000..4550774
--- /dev/null
+++ b/node_modules/cordova-registry-mapper/index.js
@@ -0,0 +1,204 @@
+var map = {
+ 'org.apache.cordova.battery-status':'cordova-plugin-battery-status',
+ 'org.apache.cordova.camera':'cordova-plugin-camera',
+ 'org.apache.cordova.console':'cordova-plugin-console',
+ 'org.apache.cordova.contacts':'cordova-plugin-contacts',
+ 'org.apache.cordova.device':'cordova-plugin-device',
+ 'org.apache.cordova.device-motion':'cordova-plugin-device-motion',
+ 'org.apache.cordova.device-orientation':'cordova-plugin-device-orientation',
+ 'org.apache.cordova.dialogs':'cordova-plugin-dialogs',
+ 'org.apache.cordova.file':'cordova-plugin-file',
+ 'org.apache.cordova.file-transfer':'cordova-plugin-file-transfer',
+ 'org.apache.cordova.geolocation':'cordova-plugin-geolocation',
+ 'org.apache.cordova.globalization':'cordova-plugin-globalization',
+ 'org.apache.cordova.inappbrowser':'cordova-plugin-inappbrowser',
+ 'org.apache.cordova.media':'cordova-plugin-media',
+ 'org.apache.cordova.media-capture':'cordova-plugin-media-capture',
+ 'org.apache.cordova.network-information':'cordova-plugin-network-information',
+ 'org.apache.cordova.splashscreen':'cordova-plugin-splashscreen',
+ 'org.apache.cordova.statusbar':'cordova-plugin-statusbar',
+ 'org.apache.cordova.vibration':'cordova-plugin-vibration',
+ 'org.apache.cordova.test-framework':'cordova-plugin-test-framework',
+ 'com.msopentech.websql' : 'cordova-plugin-websql',
+ 'com.msopentech.indexeddb' : 'cordova-plugin-indexeddb',
+ 'com.microsoft.aad.adal' : 'cordova-plugin-ms-adal',
+ 'com.microsoft.capptain' : 'capptain-cordova',
+ 'com.microsoft.services.aadgraph' : 'cordova-plugin-ms-aad-graph',
+ 'com.microsoft.services.files' : 'cordova-plugin-ms-files',
+ 'om.microsoft.services.outlook' : 'cordova-plugin-ms-outlook',
+ 'com.pbakondy.sim' : 'cordova-plugin-sim',
+ 'android.support.v4' : 'cordova-plugin-android-support-v4',
+ 'android.support.v7-appcompat' : 'cordova-plugin-android-support-v7-appcompat',
+ 'com.google.playservices' : 'cordova-plugin-googleplayservices',
+ 'com.google.cordova.admob' : 'cordova-plugin-admobpro',
+ 'com.rjfun.cordova.extension' : 'cordova-plugin-extension',
+ 'com.rjfun.cordova.plugin.admob' : 'cordova-plugin-admob',
+ 'com.rjfun.cordova.flurryads' : 'cordova-plugin-flurry',
+ 'com.rjfun.cordova.facebookads' : 'cordova-plugin-facebookads',
+ 'com.rjfun.cordova.httpd' : 'cordova-plugin-httpd',
+ 'com.rjfun.cordova.iad' : 'cordova-plugin-iad',
+ 'com.rjfun.cordova.iflyspeech' : 'cordova-plugin-iflyspeech',
+ 'com.rjfun.cordova.lianlianpay' : 'cordova-plugin-lianlianpay',
+ 'com.rjfun.cordova.mobfox' : 'cordova-plugin-mobfox',
+ 'com.rjfun.cordova.mopub' : 'cordova-plugin-mopub',
+ 'com.rjfun.cordova.mmedia' : 'cordova-plugin-mmedia',
+ 'com.rjfun.cordova.nativeaudio' : 'cordova-plugin-nativeaudio',
+ 'com.rjfun.cordova.plugin.paypalmpl' : 'cordova-plugin-paypalmpl',
+ 'com.rjfun.cordova.smartadserver' : 'cordova-plugin-smartadserver',
+ 'com.rjfun.cordova.sms' : 'cordova-plugin-sms',
+ 'com.rjfun.cordova.wifi' : 'cordova-plugin-wifi',
+ 'com.ohh2ahh.plugins.appavailability' : 'cordova-plugin-appavailability',
+ 'org.adapt-it.cordova.fonts' : 'cordova-plugin-fonts',
+ 'de.martinreinhardt.cordova.plugins.barcodeScanner' : 'cordova-plugin-barcodescanner',
+ 'de.martinreinhardt.cordova.plugins.urlhandler' : 'cordova-plugin-urlhandler',
+ 'de.martinreinhardt.cordova.plugins.email' : 'cordova-plugin-email',
+ 'de.martinreinhardt.cordova.plugins.certificates' : 'cordova-plugin-certificates',
+ 'de.martinreinhardt.cordova.plugins.sqlite' : 'cordova-plugin-sqlite',
+ 'fr.smile.cordova.fileopener' : 'cordova-plugin-fileopener',
+ 'org.smile.websqldatabase.initializer' : 'cordova-plugin-websqldatabase-initializer',
+ 'org.smile.websqldatabase.wpdb' : 'cordova-plugin-websqldatabase',
+ 'org.jboss.aerogear.cordova.push' : 'aerogear-cordova-push',
+ 'org.jboss.aerogear.cordova.oauth2' : 'aerogear-cordova-oauth2',
+ 'org.jboss.aerogear.cordova.geo' : 'aerogear-cordova-geo',
+ 'org.jboss.aerogear.cordova.crypto' : 'aerogear-cordova-crypto',
+ 'org.jboss.aerogaer.cordova.otp' : 'aerogear-cordova-otp',
+ 'uk.co.ilee.applewatch' : 'cordova-plugin-apple-watch',
+ 'uk.co.ilee.directions' : 'cordova-plugin-directions',
+ 'uk.co.ilee.gamecenter' : 'cordova-plugin-game-center',
+ 'uk.co.ilee.jailbreakdetection' : 'cordova-plugin-jailbreak-detection',
+ 'uk.co.ilee.nativetransitions' : 'cordova-plugin-native-transitions',
+ 'uk.co.ilee.pedometer' : 'cordova-plugin-pedometer',
+ 'uk.co.ilee.shake' : 'cordova-plugin-shake',
+ 'uk.co.ilee.touchid' : 'cordova-plugin-touchid',
+ 'com.knowledgecode.cordova.websocket' : 'cordova-plugin-websocket',
+ 'com.elixel.plugins.settings' : 'cordova-plugin-settings',
+ 'com.cowbell.cordova.geofence' : 'cordova-plugin-geofence',
+ 'com.blackberry.community.preventsleep' : 'cordova-plugin-preventsleep',
+ 'com.blackberry.community.gamepad' : 'cordova-plugin-gamepad',
+ 'com.blackberry.community.led' : 'cordova-plugin-led',
+ 'com.blackberry.community.thumbnail' : 'cordova-plugin-thumbnail',
+ 'com.blackberry.community.mediakeys' : 'cordova-plugin-mediakeys',
+ 'com.blackberry.community.simplebtlehrplugin' : 'cordova-plugin-bluetoothheartmonitor',
+ 'com.blackberry.community.simplebeaconplugin' : 'cordova-plugin-bluetoothibeacon',
+ 'com.blackberry.community.simplebtsppplugin' : 'cordova-plugin-bluetoothspp',
+ 'com.blackberry.community.clipboard' : 'cordova-plugin-clipboard',
+ 'com.blackberry.community.curl' : 'cordova-plugin-curl',
+ 'com.blackberry.community.qt' : 'cordova-plugin-qtbridge',
+ 'com.blackberry.community.upnp' : 'cordova-plugin-upnp',
+ 'com.blackberry.community.PasswordCrypto' : 'cordova-plugin-password-crypto',
+ 'com.blackberry.community.deviceinfoplugin' : 'cordova-plugin-deviceinfo',
+ 'com.blackberry.community.gsecrypto' : 'cordova-plugin-bb-crypto',
+ 'com.blackberry.community.mongoose' : 'cordova-plugin-mongoose',
+ 'com.blackberry.community.sysdialog' : 'cordova-plugin-bb-sysdialog',
+ 'com.blackberry.community.screendisplay' : 'cordova-plugin-screendisplay',
+ 'com.blackberry.community.messageplugin' : 'cordova-plugin-bb-messageretrieve',
+ 'com.blackberry.community.emailsenderplugin' : 'cordova-plugin-emailsender',
+ 'com.blackberry.community.audiometadata' : 'cordova-plugin-audiometadata',
+ 'com.blackberry.community.deviceemails' : 'cordova-plugin-deviceemails',
+ 'com.blackberry.community.audiorecorder' : 'cordova-plugin-audiorecorder',
+ 'com.blackberry.community.vibration' : 'cordova-plugin-vibrate-intense',
+ 'com.blackberry.community.SMSPlugin' : 'cordova-plugin-bb-sms',
+ 'com.blackberry.community.extractZipFile' : 'cordova-plugin-bb-zip',
+ 'com.blackberry.community.lowlatencyaudio' : 'cordova-plugin-bb-nativeaudio',
+ 'com.blackberry.community.barcodescanner' : 'phonegap-plugin-barcodescanner',
+ 'com.blackberry.app' : 'cordova-plugin-bb-app',
+ 'com.blackberry.bbm.platform' : 'cordova-plugin-bbm',
+ 'com.blackberry.connection' : 'cordova-plugin-bb-connection',
+ 'com.blackberry.identity' : 'cordova-plugin-bb-identity',
+ 'com.blackberry.invoke.card' : 'cordova-plugin-bb-card',
+ 'com.blackberry.invoke' : 'cordova-plugin-bb-invoke',
+ 'com.blackberry.invoked' : 'cordova-plugin-bb-invoked',
+ 'com.blackberry.io.filetransfer' : 'cordova-plugin-bb-filetransfer',
+ 'com.blackberry.io' : 'cordova-plugin-bb-io',
+ 'com.blackberry.notification' : 'cordova-plugin-bb-notification',
+ 'com.blackberry.payment' : 'cordova-plugin-bb-payment',
+ 'com.blackberry.pim.calendar' : 'cordova-plugin-bb-calendar',
+ 'com.blackberry.pim.contacts' : 'cordova-plugin-bb-contacts',
+ 'com.blackberry.pim.lib' : 'cordova-plugin-bb-pimlib',
+ 'com.blackberry.push' : 'cordova-plugin-bb-push',
+ 'com.blackberry.screenshot' : 'cordova-plugin-screenshot',
+ 'com.blackberry.sensors' : 'cordova-plugin-bb-sensors',
+ 'com.blackberry.system' : 'cordova-plugin-bb-system',
+ 'com.blackberry.ui.contextmenu' : 'cordova-plugin-bb-ctxmenu',
+ 'com.blackberry.ui.cover' : 'cordova-plugin-bb-cover',
+ 'com.blackberry.ui.dialog' : 'cordova-plugin-bb-dialog',
+ 'com.blackberry.ui.input' : 'cordova-plugin-touch-keyboard',
+ 'com.blackberry.ui.toast' : 'cordova-plugin-toast',
+ 'com.blackberry.user.identity' : 'cordova-plugin-bb-idservice',
+ 'com.blackberry.utils' : 'cordova-plugin-bb-utils',
+ 'net.yoik.cordova.plugins.screenorientation' : 'cordova-plugin-screen-orientation',
+ 'com.phonegap.plugins.barcodescanner' : 'phonegap-plugin-barcodescanner',
+ 'com.manifoldjs.hostedwebapp' : 'cordova-plugin-hostedwebapp',
+ 'com.initialxy.cordova.themeablebrowser' : 'cordova-plugin-themeablebrowser',
+ 'gr.denton.photosphere' : 'cordova-plugin-panoramaviewer',
+ 'nl.x-services.plugins.actionsheet' : 'cordova-plugin-actionsheet',
+ 'nl.x-services.plugins.socialsharing' : 'cordova-plugin-x-socialsharing',
+ 'nl.x-services.plugins.googleplus' : 'cordova-plugin-googleplus',
+ 'nl.x-services.plugins.insomnia' : 'cordova-plugin-insomnia',
+ 'nl.x-services.plugins.toast' : 'cordova-plugin-x-toast',
+ 'nl.x-services.plugins.calendar' : 'cordova-plugin-calendar',
+ 'nl.x-services.plugins.launchmyapp' : 'cordova-plugin-customurlscheme',
+ 'nl.x-services.plugins.flashlight' : 'cordova-plugin-flashlight',
+ 'nl.x-services.plugins.sslcertificatechecker' : 'cordova-plugin-sslcertificatechecker',
+ 'com.bridge.open' : 'cordova-open',
+ 'com.bridge.safe' : 'cordova-safe',
+ 'com.disusered.open' : 'cordova-open',
+ 'com.disusered.safe' : 'cordova-safe',
+ 'me.apla.cordova.app-preferences' : 'cordova-plugin-app-preferences',
+ 'com.konotor.cordova' : 'cordova-plugin-konotor',
+ 'io.intercom.cordova' : 'cordova-plugin-intercom',
+ 'com.onesignal.plugins.onesignal' : 'onesignal-cordova-plugin',
+ 'com.danjarvis.document-contract': 'cordova-plugin-document-contract',
+ 'com.eface2face.iosrtc' : 'cordova-plugin-iosrtc',
+ 'com.mobileapptracking.matplugin' : 'cordova-plugin-tune',
+ 'com.marianhello.cordova.background-geolocation' : 'cordova-plugin-mauron85-background-geolocation',
+ 'fr.louisbl.cordova.locationservices' : 'cordova-plugin-locationservices',
+ 'fr.louisbl.cordova.gpslocation' : 'cordova-plugin-gpslocation',
+ 'com.hiliaox.weibo' : 'cordova-plugin-weibo',
+ 'com.uxcam.cordova.plugin' : 'cordova-uxcam',
+ 'de.fastr.phonegap.plugins.downloader' : 'cordova-plugin-fastrde-downloader',
+ 'de.fastr.phonegap.plugins.injectView' : 'cordova-plugin-fastrde-injectview',
+ 'de.fastr.phonegap.plugins.CheckGPS' : 'cordova-plugin-fastrde-checkgps',
+ 'de.fastr.phonegap.plugins.md5chksum' : 'cordova-plugin-fastrde-md5',
+ 'io.repro.cordova' : 'cordova-plugin-repro',
+ 're.notifica.cordova': 'cordova-plugin-notificare-push',
+ 'com.megster.cordova.ble': 'cordova-plugin-ble-central',
+ 'com.megster.cordova.bluetoothserial': 'cordova-plugin-bluetooth-serial',
+ 'com.megster.cordova.rfduino': 'cordova-plugin-rfduino',
+ 'cz.velda.cordova.plugin.devicefeedback': 'cordova-plugin-velda-devicefeedback',
+ 'cz.Velda.cordova.plugin.devicefeedback': 'cordova-plugin-velda-devicefeedback',
+ 'org.scriptotek.appinfo': 'cordova-plugin-appinfo',
+ 'com.yezhiming.cordova.appinfo': 'cordova-plugin-appinfo',
+ 'pl.makingwaves.estimotebeacons': 'cordova-plugin-estimote',
+ 'com.evothings.ble': 'cordova-plugin-ble',
+ 'com.appsee.plugin' : 'cordova-plugin-appsee',
+ 'am.armsoft.plugins.listpicker': 'cordova-plugin-listpicker',
+ 'com.pushbots.push': 'pushbots-cordova-plugin',
+ 'com.admob.google': 'cordova-admob',
+ 'admob.ads.google': 'cordova-admob-ads',
+ 'admob.google.plugin': 'admob-google',
+ 'com.admob.admobads': 'admob-ads',
+ 'com.connectivity.monitor': 'cordova-connectivity-monitor',
+ 'com.ios.libgoogleadmobads': 'cordova-libgoogleadmobads',
+ 'com.google.play.services': 'cordova-google-play-services',
+ 'android.support.v13': 'cordova-android-support-v13',
+ 'android.support.v4': 'cordova-android-support-v4', // Duplicated key ;)
+ 'com.analytics.google': 'cordova-plugin-analytics',
+ 'com.analytics.adid.google': 'cordova-plugin-analytics-adid',
+ 'com.chariotsolutions.nfc.plugin': 'phonegap-nfc',
+ 'com.samz.mixpanel': 'cordova-plugin-mixpanel',
+ 'de.appplant.cordova.common.RegisterUserNotificationSettings': 'cordova-plugin-registerusernotificationsettings',
+ 'plugin.google.maps': 'cordova-plugin-googlemaps',
+ 'xu.li.cordova.wechat': 'cordova-plugin-wechat',
+ 'es.keensoft.fullscreenimage': 'cordova-plugin-fullscreenimage',
+ 'com.arcoirislabs.plugin.mqtt' : 'cordova-plugin-mqtt'
+};
+
+module.exports.oldToNew = map;
+
+var reverseMap = {};
+Object.keys(map).forEach(function(elem){
+ reverseMap[map[elem]] = elem;
+});
+
+module.exports.newToOld = reverseMap;
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/cordova-registry-mapper/package.json
----------------------------------------------------------------------
diff --git a/node_modules/cordova-registry-mapper/package.json b/node_modules/cordova-registry-mapper/package.json
new file mode 100644
index 0000000..592e202
--- /dev/null
+++ b/node_modules/cordova-registry-mapper/package.json
@@ -0,0 +1,77 @@
+{
+ "_args": [
+ [
+ "cordova-registry-mapper@^1.1.8",
+ "D:\\Cordova\\cordova-windows\\node_modules\\cordova-common"
+ ]
+ ],
+ "_from": "cordova-registry-mapper@>=1.1.8 <2.0.0",
+ "_id": "cordova-registry-mapper@1.1.15",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/cordova-registry-mapper",
+ "_nodeVersion": "5.4.1",
+ "_npmUser": {
+ "email": "stevengill97@gmail.com",
+ "name": "stevegill"
+ },
+ "_npmVersion": "3.5.3",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "cordova-registry-mapper",
+ "raw": "cordova-registry-mapper@^1.1.8",
+ "rawSpec": "^1.1.8",
+ "scope": null,
+ "spec": ">=1.1.8 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/cordova-common"
+ ],
+ "_resolved": "https://registry.npmjs.org/cordova-registry-mapper/-/cordova-registry-mapper-1.1.15.tgz",
+ "_shasum": "e244b9185b8175473bff6079324905115f83dc7c",
+ "_shrinkwrap": null,
+ "_spec": "cordova-registry-mapper@^1.1.8",
+ "_where": "D:\\Cordova\\cordova-windows\\node_modules\\cordova-common",
+ "author": {
+ "name": "Steve Gill"
+ },
+ "bugs": {
+ "url": "https://github.com/stevengill/cordova-registry-mapper/issues"
+ },
+ "dependencies": {},
+ "description": "Maps old plugin ids to new plugin names for fetching from npm",
+ "devDependencies": {
+ "tape": "^3.5.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "e244b9185b8175473bff6079324905115f83dc7c",
+ "tarball": "http://registry.npmjs.org/cordova-registry-mapper/-/cordova-registry-mapper-1.1.15.tgz"
+ },
+ "gitHead": "00af0f028ec94154a364eeabe38b8e22320647bd",
+ "homepage": "https://github.com/stevengill/cordova-registry-mapper#readme",
+ "keywords": [
+ "cordova",
+ "plugins"
+ ],
+ "license": "Apache version 2.0",
+ "main": "index.js",
+ "maintainers": [
+ {
+ "email": "stevengill97@gmail.com",
+ "name": "stevegill"
+ }
+ ],
+ "name": "cordova-registry-mapper",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/stevengill/cordova-registry-mapper.git"
+ },
+ "scripts": {
+ "test": "node tests/test.js"
+ },
+ "version": "1.1.15"
+}
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/cordova-registry-mapper/tests/test.js
----------------------------------------------------------------------
diff --git a/node_modules/cordova-registry-mapper/tests/test.js b/node_modules/cordova-registry-mapper/tests/test.js
new file mode 100644
index 0000000..35343be
--- /dev/null
+++ b/node_modules/cordova-registry-mapper/tests/test.js
@@ -0,0 +1,11 @@
+var test = require('tape');
+var oldToNew = require('../index').oldToNew;
+var newToOld = require('../index').newToOld;
+
+test('plugin mappings exist', function(t) {
+ t.plan(2);
+
+ t.equal('cordova-plugin-device', oldToNew['org.apache.cordova.device']);
+
+ t.equal('org.apache.cordova.device', newToOld['cordova-plugin-device']);
+})
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/elementtree/node_modules/sax/AUTHORS
----------------------------------------------------------------------
diff --git a/node_modules/elementtree/node_modules/sax/AUTHORS b/node_modules/elementtree/node_modules/sax/AUTHORS
deleted file mode 100644
index 26d8659..0000000
--- a/node_modules/elementtree/node_modules/sax/AUTHORS
+++ /dev/null
@@ -1,9 +0,0 @@
-# contributors sorted by whether or not they're me.
-Isaac Z. Schlueter <i...@izs.me>
-Stein Martin Hustad <st...@hustad.com>
-Mikeal Rogers <mi...@gmail.com>
-Laurie Harper <la...@holoweb.net>
-Jann Horn <ja...@Jann-PC.fritz.box>
-Elijah Insua <tm...@gmail.com>
-Henry Rawas <he...@schakra.com>
-Justin Makeig <jm...@makeig.com>
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/elementtree/node_modules/sax/LICENSE
----------------------------------------------------------------------
diff --git a/node_modules/elementtree/node_modules/sax/LICENSE b/node_modules/elementtree/node_modules/sax/LICENSE
deleted file mode 100644
index 05a4010..0000000
--- a/node_modules/elementtree/node_modules/sax/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-Copyright 2009, 2010, 2011 Isaac Z. Schlueter.
-All rights reserved.
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
http://git-wip-us.apache.org/repos/asf/cordova-windows/blob/5a6cb728/node_modules/elementtree/node_modules/sax/README.md
----------------------------------------------------------------------
diff --git a/node_modules/elementtree/node_modules/sax/README.md b/node_modules/elementtree/node_modules/sax/README.md
deleted file mode 100644
index 9c63dc4..0000000
--- a/node_modules/elementtree/node_modules/sax/README.md
+++ /dev/null
@@ -1,213 +0,0 @@
-# sax js
-
-A sax-style parser for XML and HTML.
-
-Designed with [node](http://nodejs.org/) in mind, but should work fine in
-the browser or other CommonJS implementations.
-
-## What This Is
-
-* A very simple tool to parse through an XML string.
-* A stepping stone to a streaming HTML parser.
-* A handy way to deal with RSS and other mostly-ok-but-kinda-broken XML
- docs.
-
-## What This Is (probably) Not
-
-* An HTML Parser - That's a fine goal, but this isn't it. It's just
- XML.
-* A DOM Builder - You can use it to build an object model out of XML,
- but it doesn't do that out of the box.
-* XSLT - No DOM = no querying.
-* 100% Compliant with (some other SAX implementation) - Most SAX
- implementations are in Java and do a lot more than this does.
-* An XML Validator - It does a little validation when in strict mode, but
- not much.
-* A Schema-Aware XSD Thing - Schemas are an exercise in fetishistic
- masochism.
-* A DTD-aware Thing - Fetching DTDs is a much bigger job.
-
-## Regarding `<!DOCTYPE`s and `<!ENTITY`s
-
-The parser will handle the basic XML entities in text nodes and attribute
-values: `& < > ' "`. It's possible to define additional
-entities in XML by putting them in the DTD. This parser doesn't do anything
-with that. If you want to listen to the `ondoctype` event, and then fetch
-the doctypes, and read the entities and add them to `parser.ENTITIES`, then
-be my guest.
-
-Unknown entities will fail in strict mode, and in loose mode, will pass
-through unmolested.
-
-## Usage
-
- var sax = require("./lib/sax"),
- strict = true, // set to false for html-mode
- parser = sax.parser(strict);
-
- parser.onerror = function (e) {
- // an error happened.
- };
- parser.ontext = function (t) {
- // got some text. t is the string of text.
- };
- parser.onopentag = function (node) {
- // opened a tag. node has "name" and "attributes"
- };
- parser.onattribute = function (attr) {
- // an attribute. attr has "name" and "value"
- };
- parser.onend = function () {
- // parser stream is done, and ready to have more stuff written to it.
- };
-
- parser.write('<xml>Hello, <who name="world">world</who>!</xml>').close();
-
- // stream usage
- // takes the same options as the parser
- var saxStream = require("sax").createStream(strict, options)
- saxStream.on("error", function (e) {
- // unhandled errors will throw, since this is a proper node
- // event emitter.
- console.error("error!", e)
- // clear the error
- this._parser.error = null
- this._parser.resume()
- })
- saxStream.on("opentag", function (node) {
- // same object as above
- })
- // pipe is supported, and it's readable/writable
- // same chunks coming in also go out.
- fs.createReadStream("file.xml")
- .pipe(saxStream)
- .pipe(fs.createReadStream("file-copy.xml"))
-
-
-
-## Arguments
-
-Pass the following arguments to the parser function. All are optional.
-
-`strict` - Boolean. Whether or not to be a jerk. Default: `false`.
-
-`opt` - Object bag of settings regarding string formatting. All default to `false`.
-
-Settings supported:
-
-* `trim` - Boolean. Whether or not to trim text and comment nodes.
-* `normalize` - Boolean. If true, then turn any whitespace into a single
- space.
-* `lowercasetags` - Boolean. If true, then lowercase tags in loose mode,
- rather than uppercasing them.
-* `xmlns` - Boolean. If true, then namespaces are supported.
-
-## Methods
-
-`write` - Write bytes onto the stream. You don't have to do this all at
-once. You can keep writing as much as you want.
-
-`close` - Close the stream. Once closed, no more data may be written until
-it is done processing the buffer, which is signaled by the `end` event.
-
-`resume` - To gracefully handle errors, assign a listener to the `error`
-event. Then, when the error is taken care of, you can call `resume` to
-continue parsing. Otherwise, the parser will not continue while in an error
-state.
-
-## Members
-
-At all times, the parser object will have the following members:
-
-`line`, `column`, `position` - Indications of the position in the XML
-document where the parser currently is looking.
-
-`startTagPosition` - Indicates the position where the current tag starts.
-
-`closed` - Boolean indicating whether or not the parser can be written to.
-If it's `true`, then wait for the `ready` event to write again.
-
-`strict` - Boolean indicating whether or not the parser is a jerk.
-
-`opt` - Any options passed into the constructor.
-
-`tag` - The current tag being dealt with.
-
-And a bunch of other stuff that you probably shouldn't touch.
-
-## Events
-
-All events emit with a single argument. To listen to an event, assign a
-function to `on<eventname>`. Functions get executed in the this-context of
-the parser object. The list of supported events are also in the exported
-`EVENTS` array.
-
-When using the stream interface, assign handlers using the EventEmitter
-`on` function in the normal fashion.
-
-`error` - Indication that something bad happened. The error will be hanging
-out on `parser.error`, and must be deleted before parsing can continue. By
-listening to this event, you can keep an eye on that kind of stuff. Note:
-this happens *much* more in strict mode. Argument: instance of `Error`.
-
-`text` - Text node. Argument: string of text.
-
-`doctype` - The `<!DOCTYPE` declaration. Argument: doctype string.
-
-`processinginstruction` - Stuff like `<?xml foo="blerg" ?>`. Argument:
-object with `name` and `body` members. Attributes are not parsed, as
-processing instructions have implementation dependent semantics.
-
-`sgmldeclaration` - Random SGML declarations. Stuff like `<!ENTITY p>`
-would trigger this kind of event. This is a weird thing to support, so it
-might go away at some point. SAX isn't intended to be used to parse SGML,
-after all.
-
-`opentag` - An opening tag. Argument: object with `name` and `attributes`.
-In non-strict mode, tag names are uppercased, unless the `lowercasetags`
-option is set. If the `xmlns` option is set, then it will contain
-namespace binding information on the `ns` member, and will have a
-`local`, `prefix`, and `uri` member.
-
-`closetag` - A closing tag. In loose mode, tags are auto-closed if their
-parent closes. In strict mode, well-formedness is enforced. Note that
-self-closing tags will have `closeTag` emitted immediately after `openTag`.
-Argument: tag name.
-
-`attribute` - An attribute node. Argument: object with `name` and `value`,
-and also namespace information if the `xmlns` option flag is set.
-
-`comment` - A comment node. Argument: the string of the comment.
-
-`opencdata` - The opening tag of a `<![CDATA[` block.
-
-`cdata` - The text of a `<![CDATA[` block. Since `<![CDATA[` blocks can get
-quite large, this event may fire multiple times for a single block, if it
-is broken up into multiple `write()`s. Argument: the string of random
-character data.
-
-`closecdata` - The closing tag (`]]>`) of a `<![CDATA[` block.
-
-`opennamespace` - If the `xmlns` option is set, then this event will
-signal the start of a new namespace binding.
-
-`closenamespace` - If the `xmlns` option is set, then this event will
-signal the end of a namespace binding.
-
-`end` - Indication that the closed stream has ended.
-
-`ready` - Indication that the stream has reset, and is ready to be written
-to.
-
-`noscript` - In non-strict mode, `<script>` tags trigger a `"script"`
-event, and their contents are not checked for special xml characters.
-If you pass `noscript: true`, then this behavior is suppressed.
-
-## Reporting Problems
-
-It's best to write a failing test if you find an issue. I will always
-accept pull requests with failing tests if they demonstrate intended
-behavior, but it is very hard to figure out what issue you're describing
-without a test. Writing a test is also the best way for you yourself
-to figure out if you really understand the issue you think you have with
-sax-js.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org