mirror of
https://github.com/apache/cordova-android.git
synced 2025-02-22 00:32:55 +08:00
Merge branch 'master' into StudioProjectCompat
Another merge commit to track master changes
This commit is contained in:
commit
7d282426c4
@ -20,8 +20,10 @@
|
|||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
|
||||||
jcenter()
|
jcenter()
|
||||||
|
maven {
|
||||||
|
url "https://maven.google.com"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Switch the Android Gradle plugin version requirement depending on the
|
// Switch the Android Gradle plugin version requirement depending on the
|
||||||
|
@ -21,6 +21,9 @@
|
|||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
jcenter()
|
jcenter()
|
||||||
|
maven {
|
||||||
|
url "https://maven.google.com"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:2.3.0'
|
classpath 'com.android.tools.build:gradle:2.3.0'
|
||||||
@ -33,6 +36,9 @@ buildscript {
|
|||||||
allprojects {
|
allprojects {
|
||||||
repositories {
|
repositories {
|
||||||
jcenter()
|
jcenter()
|
||||||
|
maven {
|
||||||
|
url "https://maven.google.com"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//This replaces project.properties
|
//This replaces project.properties
|
||||||
|
@ -24,8 +24,10 @@ ext {
|
|||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
|
||||||
jcenter()
|
jcenter()
|
||||||
|
maven {
|
||||||
|
url "https://maven.google.com"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
3
node_modules/abbrev/package.json
generated
vendored
3
node_modules/abbrev/package.json
generated
vendored
@ -77,7 +77,8 @@
|
|||||||
],
|
],
|
||||||
"name": "abbrev",
|
"name": "abbrev",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "# abbrev-js\n\nJust like [ruby's Abbrev](http://apidock.com/ruby/Abbrev).\n\nUsage:\n\n var abbrev = require(\"abbrev\");\n abbrev(\"foo\", \"fool\", \"folding\", \"flop\");\n \n // returns:\n { fl: 'flop'\n , flo: 'flop'\n , flop: 'flop'\n , fol: 'folding'\n , fold: 'folding'\n , foldi: 'folding'\n , foldin: 'folding'\n , folding: 'folding'\n , foo: 'foo'\n , fool: 'fool'\n }\n\nThis is handy for command-line scripts, or other cases where you want to be able to accept shorthands.\n",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+ssh://git@github.com/isaacs/abbrev-js.git"
|
"url": "git+ssh://git@github.com/isaacs/abbrev-js.git"
|
||||||
|
3
node_modules/ansi/package.json
generated
vendored
3
node_modules/ansi/package.json
generated
vendored
@ -83,7 +83,8 @@
|
|||||||
],
|
],
|
||||||
"name": "ansi",
|
"name": "ansi",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "ansi.js\n=========\n### Advanced ANSI formatting tool for Node.js\n\n`ansi.js` is a module for Node.js that provides an easy-to-use API for\nwriting ANSI escape codes to `Stream` instances. ANSI escape codes are used to do\nfancy things in a terminal window, like render text in colors, delete characters,\nlines, the entire window, or hide and show the cursor, and lots more!\n\n#### Features:\n\n * 256 color support for the terminal!\n * Make a beep sound from your terminal!\n * Works with *any* writable `Stream` instance.\n * Allows you to move the cursor anywhere on the terminal window.\n * Allows you to delete existing contents from the terminal window.\n * Allows you to hide and show the cursor.\n * Converts CSS color codes and RGB values into ANSI escape codes.\n * Low-level; you are in control of when escape codes are used, it's not abstracted.\n\n\nInstallation\n------------\n\nInstall with `npm`:\n\n``` bash\n$ npm install ansi\n```\n\n\nExample\n-------\n\n``` js\nvar ansi = require('ansi')\n , cursor = ansi(process.stdout)\n\n// You can chain your calls forever:\ncursor\n .red() // Set font color to red\n .bg.grey() // Set background color to grey\n .write('Hello World!') // Write 'Hello World!' to stdout\n .bg.reset() // Reset the bgcolor before writing the trailing \\n,\n // to avoid Terminal glitches\n .write('\\n') // And a final \\n to wrap things up\n\n// Rendering modes are persistent:\ncursor.hex('#660000').bold().underline()\n\n// You can use the regular logging functions, text will be green:\nconsole.log('This is blood red, bold text')\n\n// To reset just the foreground color:\ncursor.fg.reset()\n\nconsole.log('This will still be bold')\n\n// to go to a location (x,y) on the console\n// note: 1-indexed, not 0-indexed:\ncursor.goto(10, 5).write('Five down, ten over')\n\n// to clear the current line:\ncursor.horizontalAbsolute(0).eraseLine().write('Starting again')\n\n// to go to a different column on the current line:\ncursor.horizontalAbsolute(5).write('column five')\n\n// Clean up after yourself!\ncursor.reset()\n```\n\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git://github.com/TooTallNate/ansi.js.git"
|
"url": "git://github.com/TooTallNate/ansi.js.git"
|
||||||
|
1
node_modules/balanced-match/index.js
generated
vendored
1
node_modules/balanced-match/index.js
generated
vendored
@ -1,3 +1,4 @@
|
|||||||
|
'use strict';
|
||||||
module.exports = balanced;
|
module.exports = balanced;
|
||||||
function balanced(a, b, str) {
|
function balanced(a, b, str) {
|
||||||
if (a instanceof RegExp) a = maybeMatch(a, str);
|
if (a instanceof RegExp) a = maybeMatch(a, str);
|
||||||
|
43
node_modules/balanced-match/package.json
generated
vendored
43
node_modules/balanced-match/package.json
generated
vendored
@ -2,48 +2,48 @@
|
|||||||
"_args": [
|
"_args": [
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"raw": "balanced-match@^0.4.1",
|
"raw": "balanced-match@^1.0.0",
|
||||||
"scope": null,
|
"scope": null,
|
||||||
"escapedName": "balanced-match",
|
"escapedName": "balanced-match",
|
||||||
"name": "balanced-match",
|
"name": "balanced-match",
|
||||||
"rawSpec": "^0.4.1",
|
"rawSpec": "^1.0.0",
|
||||||
"spec": ">=0.4.1 <0.5.0",
|
"spec": ">=1.0.0 <2.0.0",
|
||||||
"type": "range"
|
"type": "range"
|
||||||
},
|
},
|
||||||
"/Users/steveng/repo/cordova/cordova-android/node_modules/brace-expansion"
|
"/Users/steveng/repo/cordova/cordova-android/node_modules/brace-expansion"
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"_from": "balanced-match@>=0.4.1 <0.5.0",
|
"_from": "balanced-match@>=1.0.0 <2.0.0",
|
||||||
"_id": "balanced-match@0.4.2",
|
"_id": "balanced-match@1.0.0",
|
||||||
"_inCache": true,
|
"_inCache": true,
|
||||||
"_location": "/balanced-match",
|
"_location": "/balanced-match",
|
||||||
"_nodeVersion": "4.4.7",
|
"_nodeVersion": "7.8.0",
|
||||||
"_npmOperationalInternal": {
|
"_npmOperationalInternal": {
|
||||||
"host": "packages-16-east.internal.npmjs.com",
|
"host": "s3://npm-registry-packages",
|
||||||
"tmp": "tmp/balanced-match-0.4.2.tgz_1468834991581_0.6590619895141572"
|
"tmp": "tmp/balanced-match-1.0.0.tgz_1497251909645_0.8755026108119637"
|
||||||
},
|
},
|
||||||
"_npmUser": {
|
"_npmUser": {
|
||||||
"name": "juliangruber",
|
"name": "juliangruber",
|
||||||
"email": "julian@juliangruber.com"
|
"email": "julian@juliangruber.com"
|
||||||
},
|
},
|
||||||
"_npmVersion": "2.15.8",
|
"_npmVersion": "4.2.0",
|
||||||
"_phantomChildren": {},
|
"_phantomChildren": {},
|
||||||
"_requested": {
|
"_requested": {
|
||||||
"raw": "balanced-match@^0.4.1",
|
"raw": "balanced-match@^1.0.0",
|
||||||
"scope": null,
|
"scope": null,
|
||||||
"escapedName": "balanced-match",
|
"escapedName": "balanced-match",
|
||||||
"name": "balanced-match",
|
"name": "balanced-match",
|
||||||
"rawSpec": "^0.4.1",
|
"rawSpec": "^1.0.0",
|
||||||
"spec": ">=0.4.1 <0.5.0",
|
"spec": ">=1.0.0 <2.0.0",
|
||||||
"type": "range"
|
"type": "range"
|
||||||
},
|
},
|
||||||
"_requiredBy": [
|
"_requiredBy": [
|
||||||
"/brace-expansion"
|
"/brace-expansion"
|
||||||
],
|
],
|
||||||
"_resolved": "http://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
|
"_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||||
"_shasum": "cb3f3e3c732dc0f01ee70b403f302e61d7709838",
|
"_shasum": "89b4d199ab2bee49de164ea02b89ce462d71b767",
|
||||||
"_shrinkwrap": null,
|
"_shrinkwrap": null,
|
||||||
"_spec": "balanced-match@^0.4.1",
|
"_spec": "balanced-match@^1.0.0",
|
||||||
"_where": "/Users/steveng/repo/cordova/cordova-android/node_modules/brace-expansion",
|
"_where": "/Users/steveng/repo/cordova/cordova-android/node_modules/brace-expansion",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Julian Gruber",
|
"name": "Julian Gruber",
|
||||||
@ -56,14 +56,15 @@
|
|||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"description": "Match balanced character pairs, like \"{\" and \"}\"",
|
"description": "Match balanced character pairs, like \"{\" and \"}\"",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"matcha": "^0.7.0",
|
||||||
"tape": "^4.6.0"
|
"tape": "^4.6.0"
|
||||||
},
|
},
|
||||||
"directories": {},
|
"directories": {},
|
||||||
"dist": {
|
"dist": {
|
||||||
"shasum": "cb3f3e3c732dc0f01ee70b403f302e61d7709838",
|
"shasum": "89b4d199ab2bee49de164ea02b89ce462d71b767",
|
||||||
"tarball": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz"
|
"tarball": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz"
|
||||||
},
|
},
|
||||||
"gitHead": "57c2ea29d89a2844ae3bdcc637c6e2cbb73725e2",
|
"gitHead": "d701a549a7653a874eebce7eca25d3577dc868ac",
|
||||||
"homepage": "https://github.com/juliangruber/balanced-match",
|
"homepage": "https://github.com/juliangruber/balanced-match",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"match",
|
"match",
|
||||||
@ -82,12 +83,14 @@
|
|||||||
],
|
],
|
||||||
"name": "balanced-match",
|
"name": "balanced-match",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "# balanced-match\n\nMatch balanced string pairs, like `{` and `}` or `<b>` and `</b>`. Supports regular expressions as well!\n\n[](http://travis-ci.org/juliangruber/balanced-match)\n[](https://www.npmjs.org/package/balanced-match)\n\n[](https://ci.testling.com/juliangruber/balanced-match)\n\n## Example\n\nGet the first matching pair of braces:\n\n```js\nvar balanced = require('balanced-match');\n\nconsole.log(balanced('{', '}', 'pre{in{nested}}post'));\nconsole.log(balanced('{', '}', 'pre{first}between{second}post'));\nconsole.log(balanced(/\\s+\\{\\s+/, /\\s+\\}\\s+/, 'pre { in{nest} } post'));\n```\n\nThe matches are:\n\n```bash\n$ node example.js\n{ start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' }\n{ start: 3,\n end: 9,\n pre: 'pre',\n body: 'first',\n post: 'between{second}post' }\n{ start: 3, end: 17, pre: 'pre', body: 'in{nest}', post: 'post' }\n```\n\n## API\n\n### var m = balanced(a, b, str)\n\nFor the first non-nested matching pair of `a` and `b` in `str`, return an\nobject with those keys:\n\n* **start** the index of the first match of `a`\n* **end** the index of the matching `b`\n* **pre** the preamble, `a` and `b` not included\n* **body** the match, `a` and `b` not included\n* **post** the postscript, `a` and `b` not included\n\nIf there's no match, `undefined` will be returned.\n\nIf the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`.\n\n### var r = balanced.range(a, b, str)\n\nFor the first non-nested matching pair of `a` and `b` in `str`, return an\narray with indexes: `[ <a index>, <b index> ]`.\n\nIf there's no match, `undefined` will be returned.\n\nIf the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]` and `{a}}` will match `[0, 2]`.\n\n## Installation\n\nWith [npm](https://npmjs.org) do:\n\n```bash\nnpm install balanced-match\n```\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git://github.com/juliangruber/balanced-match.git"
|
"url": "git://github.com/juliangruber/balanced-match.git"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"bench": "make bench",
|
||||||
"test": "make test"
|
"test": "make test"
|
||||||
},
|
},
|
||||||
"testling": {
|
"testling": {
|
||||||
@ -106,5 +109,5 @@
|
|||||||
"android-browser/4.2..latest"
|
"android-browser/4.2..latest"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"version": "0.4.2"
|
"version": "1.0.0"
|
||||||
}
|
}
|
||||||
|
7
node_modules/base64-js/package.json
generated
vendored
7
node_modules/base64-js/package.json
generated
vendored
@ -36,7 +36,7 @@
|
|||||||
"_requiredBy": [
|
"_requiredBy": [
|
||||||
"/plist"
|
"/plist"
|
||||||
],
|
],
|
||||||
"_resolved": "http://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz",
|
"_resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz",
|
||||||
"_shasum": "1101e9544f4a76b1bc3b26d452ca96d7a35e7978",
|
"_shasum": "1101e9544f4a76b1bc3b26d452ca96d7a35e7978",
|
||||||
"_shrinkwrap": null,
|
"_shrinkwrap": null,
|
||||||
"_spec": "base64-js@0.0.8",
|
"_spec": "base64-js@0.0.8",
|
||||||
@ -62,7 +62,7 @@
|
|||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
},
|
},
|
||||||
"gitHead": "b4a8a5fa9b0caeddb5ad94dd1108253d8f2a315f",
|
"gitHead": "b4a8a5fa9b0caeddb5ad94dd1108253d8f2a315f",
|
||||||
"homepage": "https://github.com/beatgammit/base64-js",
|
"homepage": "https://github.com/beatgammit/base64-js#readme",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "lib/b64.js",
|
"main": "lib/b64.js",
|
||||||
"maintainers": [
|
"maintainers": [
|
||||||
@ -77,7 +77,8 @@
|
|||||||
],
|
],
|
||||||
"name": "base64-js",
|
"name": "base64-js",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "base64-js\n=========\n\n`base64-js` does basic base64 encoding/decoding in pure JS.\n\n[](http://travis-ci.org/beatgammit/base64-js)\n\n[](https://ci.testling.com/beatgammit/base64-js)\n\nMany browsers already have base64 encoding/decoding functionality, but it is for text data, not all-purpose binary data.\n\nSometimes encoding/decoding binary data in the browser is useful, and that is what this module does.\n\n## install\n\nWith [npm](https://npmjs.org) do:\n\n`npm install base64-js`\n\n## methods\n\n`var base64 = require('base64-js')`\n\n`base64` has two exposed functions, `toByteArray` and `fromByteArray`, which both take a single argument.\n\n* `toByteArray` - Takes a base64 string and returns a byte array\n* `fromByteArray` - Takes a byte array and returns a base64 string\n\n## license\n\nMIT",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git://github.com/beatgammit/base64-js.git"
|
"url": "git://github.com/beatgammit/base64-js.git"
|
||||||
|
2364
node_modules/big-integer/BigInteger.d.ts
generated
vendored
Normal file
2364
node_modules/big-integer/BigInteger.d.ts
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
21
node_modules/big-integer/BigInteger.js
generated
vendored
21
node_modules/big-integer/BigInteger.js
generated
vendored
@ -1038,14 +1038,31 @@ var bigInt = (function (undefined) {
|
|||||||
}
|
}
|
||||||
var parseBase = function (text, base) {
|
var parseBase = function (text, base) {
|
||||||
var length = text.length;
|
var length = text.length;
|
||||||
|
var i;
|
||||||
|
var absBase = Math.abs(base);
|
||||||
|
for(var i = 0; i < length; i++) {
|
||||||
|
var c = text[i].toLowerCase();
|
||||||
|
if(c === "-") continue;
|
||||||
|
if(/[a-z0-9]/.test(c)) {
|
||||||
|
if(/[0-9]/.test(c) && +c >= absBase) {
|
||||||
|
if(c === "1" && absBase === 1) continue;
|
||||||
|
throw new Error(c + " is not a valid digit in base " + base + ".");
|
||||||
|
} else if(c.charCodeAt(0) - 87 >= absBase) {
|
||||||
|
throw new Error(c + " is not a valid digit in base " + base + ".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (2 <= base && base <= 36) {
|
if (2 <= base && base <= 36) {
|
||||||
if (length <= LOG_MAX_INT / Math.log(base)) {
|
if (length <= LOG_MAX_INT / Math.log(base)) {
|
||||||
|
var result = parseInt(text, base);
|
||||||
|
if(isNaN(result)) {
|
||||||
|
throw new Error(c + " is not a valid digit in base " + base + ".");
|
||||||
|
}
|
||||||
return new SmallInteger(parseInt(text, base));
|
return new SmallInteger(parseInt(text, base));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
base = parseValue(base);
|
base = parseValue(base);
|
||||||
var digits = [];
|
var digits = [];
|
||||||
var i;
|
|
||||||
var isNegative = text[0] === "-";
|
var isNegative = text[0] === "-";
|
||||||
for (i = isNegative ? 1 : 0; i < text.length; i++) {
|
for (i = isNegative ? 1 : 0; i < text.length; i++) {
|
||||||
var c = text[i].toLowerCase(),
|
var c = text[i].toLowerCase(),
|
||||||
@ -1227,7 +1244,7 @@ if (typeof module !== "undefined" && module.hasOwnProperty("exports")) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//amd check
|
//amd check
|
||||||
if ( typeof define === "function" && define.amd ) {
|
if ( typeof define === "function" && define.amd ) {
|
||||||
define( "big-integer", [], function() {
|
define( "big-integer", [], function() {
|
||||||
return bigInt;
|
return bigInt;
|
||||||
});
|
});
|
||||||
|
2
node_modules/big-integer/BigInteger.min.js
generated
vendored
2
node_modules/big-integer/BigInteger.min.js
generated
vendored
File diff suppressed because one or more lines are too long
4
node_modules/big-integer/README.md
generated
vendored
4
node_modules/big-integer/README.md
generated
vendored
@ -211,7 +211,7 @@ Returns `true` if the number is prime, `false` otherwise.
|
|||||||
|
|
||||||
#### `isProbablePrime([iterations])`
|
#### `isProbablePrime([iterations])`
|
||||||
|
|
||||||
Returns `true` if the number is very likely to be positive, `false` otherwise.
|
Returns `true` if the number is very likely to be prime, `false` otherwise.
|
||||||
Argument is optional and determines the amount of iterations of the test (default: `5`). The more iterations, the lower chance of getting a false positive.
|
Argument is optional and determines the amount of iterations of the test (default: `5`). The more iterations, the lower chance of getting a false positive.
|
||||||
This uses the [Fermat primality test](https://en.wikipedia.org/wiki/Fermat_primality_test).
|
This uses the [Fermat primality test](https://en.wikipedia.org/wiki/Fermat_primality_test).
|
||||||
|
|
||||||
@ -517,4 +517,4 @@ There are performance benchmarks that can be viewed from the `benchmarks/index.h
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
This project is public domain. For more details, read about the [Unlicense](http://unlicense.org/).
|
This project is public domain. For more details, read about the [Unlicense](http://unlicense.org/).
|
||||||
|
1
node_modules/big-integer/bower.json
generated
vendored
1
node_modules/big-integer/bower.json
generated
vendored
@ -24,7 +24,6 @@
|
|||||||
"bower_components",
|
"bower_components",
|
||||||
"test",
|
"test",
|
||||||
"coverage",
|
"coverage",
|
||||||
"spec",
|
|
||||||
"tests"
|
"tests"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
32
node_modules/big-integer/package.json
generated
vendored
32
node_modules/big-integer/package.json
generated
vendored
File diff suppressed because one or more lines are too long
25
node_modules/big-integer/tsconfig.json
generated
vendored
Normal file
25
node_modules/big-integer/tsconfig.json
generated
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "commonjs",
|
||||||
|
"lib": [
|
||||||
|
"es6"
|
||||||
|
],
|
||||||
|
"noImplicitAny": true,
|
||||||
|
"noImplicitThis": true,
|
||||||
|
"strictNullChecks": false,
|
||||||
|
"baseUrl": "./",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"allowJs": true,
|
||||||
|
"typeRoots": [
|
||||||
|
"./"
|
||||||
|
],
|
||||||
|
"types": [
|
||||||
|
"node"
|
||||||
|
],
|
||||||
|
"forceConsistentCasingInFileNames": true
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"BigInteger.d.ts",
|
||||||
|
"spec/tsDefinitions.ts"
|
||||||
|
]
|
||||||
|
}
|
3
node_modules/bplist-parser/package.json
generated
vendored
3
node_modules/bplist-parser/package.json
generated
vendored
@ -77,7 +77,8 @@
|
|||||||
],
|
],
|
||||||
"name": "bplist-parser",
|
"name": "bplist-parser",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "bplist-parser\n=============\n\nBinary Mac OS X Plist (property list) parser.\n\n## Installation\n\n```bash\n$ npm install bplist-parser\n```\n\n## Quick Examples\n\n```javascript\nvar bplist = require('bplist-parser');\n\nbplist.parseFile('myPlist.bplist', function(err, obj) {\n if (err) throw err;\n\n console.log(JSON.stringify(obj));\n});\n```\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Near Infinity Corporation\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/nearinfinity/node-bplist-parser.git"
|
"url": "git+https://github.com/nearinfinity/node-bplist-parser.git"
|
||||||
|
39
node_modules/brace-expansion/package.json
generated
vendored
39
node_modules/brace-expansion/package.json
generated
vendored
@ -2,25 +2,25 @@
|
|||||||
"_args": [
|
"_args": [
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"raw": "brace-expansion@^1.0.0",
|
"raw": "brace-expansion@^1.1.7",
|
||||||
"scope": null,
|
"scope": null,
|
||||||
"escapedName": "brace-expansion",
|
"escapedName": "brace-expansion",
|
||||||
"name": "brace-expansion",
|
"name": "brace-expansion",
|
||||||
"rawSpec": "^1.0.0",
|
"rawSpec": "^1.1.7",
|
||||||
"spec": ">=1.0.0 <2.0.0",
|
"spec": ">=1.1.7 <2.0.0",
|
||||||
"type": "range"
|
"type": "range"
|
||||||
},
|
},
|
||||||
"/Users/steveng/repo/cordova/cordova-android/node_modules/minimatch"
|
"/Users/steveng/repo/cordova/cordova-android/node_modules/minimatch"
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"_from": "brace-expansion@>=1.0.0 <2.0.0",
|
"_from": "brace-expansion@>=1.1.7 <2.0.0",
|
||||||
"_id": "brace-expansion@1.1.7",
|
"_id": "brace-expansion@1.1.8",
|
||||||
"_inCache": true,
|
"_inCache": true,
|
||||||
"_location": "/brace-expansion",
|
"_location": "/brace-expansion",
|
||||||
"_nodeVersion": "7.8.0",
|
"_nodeVersion": "7.8.0",
|
||||||
"_npmOperationalInternal": {
|
"_npmOperationalInternal": {
|
||||||
"host": "packages-12-west.internal.npmjs.com",
|
"host": "s3://npm-registry-packages",
|
||||||
"tmp": "tmp/brace-expansion-1.1.7.tgz_1491552830231_0.7213963181711733"
|
"tmp": "tmp/brace-expansion-1.1.8.tgz_1497251980593_0.6575565172825009"
|
||||||
},
|
},
|
||||||
"_npmUser": {
|
"_npmUser": {
|
||||||
"name": "juliangruber",
|
"name": "juliangruber",
|
||||||
@ -29,21 +29,21 @@
|
|||||||
"_npmVersion": "4.2.0",
|
"_npmVersion": "4.2.0",
|
||||||
"_phantomChildren": {},
|
"_phantomChildren": {},
|
||||||
"_requested": {
|
"_requested": {
|
||||||
"raw": "brace-expansion@^1.0.0",
|
"raw": "brace-expansion@^1.1.7",
|
||||||
"scope": null,
|
"scope": null,
|
||||||
"escapedName": "brace-expansion",
|
"escapedName": "brace-expansion",
|
||||||
"name": "brace-expansion",
|
"name": "brace-expansion",
|
||||||
"rawSpec": "^1.0.0",
|
"rawSpec": "^1.1.7",
|
||||||
"spec": ">=1.0.0 <2.0.0",
|
"spec": ">=1.1.7 <2.0.0",
|
||||||
"type": "range"
|
"type": "range"
|
||||||
},
|
},
|
||||||
"_requiredBy": [
|
"_requiredBy": [
|
||||||
"/minimatch"
|
"/minimatch"
|
||||||
],
|
],
|
||||||
"_resolved": "http://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz",
|
"_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
|
||||||
"_shasum": "3effc3c50e000531fb720eaff80f0ae8ef23cf59",
|
"_shasum": "c07b211c7c952ec1f8efd51a77ef0d1d3990a292",
|
||||||
"_shrinkwrap": null,
|
"_shrinkwrap": null,
|
||||||
"_spec": "brace-expansion@^1.0.0",
|
"_spec": "brace-expansion@^1.1.7",
|
||||||
"_where": "/Users/steveng/repo/cordova/cordova-android/node_modules/minimatch",
|
"_where": "/Users/steveng/repo/cordova/cordova-android/node_modules/minimatch",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Julian Gruber",
|
"name": "Julian Gruber",
|
||||||
@ -54,7 +54,7 @@
|
|||||||
"url": "https://github.com/juliangruber/brace-expansion/issues"
|
"url": "https://github.com/juliangruber/brace-expansion/issues"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"balanced-match": "^0.4.1",
|
"balanced-match": "^1.0.0",
|
||||||
"concat-map": "0.0.1"
|
"concat-map": "0.0.1"
|
||||||
},
|
},
|
||||||
"description": "Brace expansion as known from sh/bash",
|
"description": "Brace expansion as known from sh/bash",
|
||||||
@ -64,10 +64,10 @@
|
|||||||
},
|
},
|
||||||
"directories": {},
|
"directories": {},
|
||||||
"dist": {
|
"dist": {
|
||||||
"shasum": "3effc3c50e000531fb720eaff80f0ae8ef23cf59",
|
"shasum": "c07b211c7c952ec1f8efd51a77ef0d1d3990a292",
|
||||||
"tarball": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz"
|
"tarball": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz"
|
||||||
},
|
},
|
||||||
"gitHead": "892512024872ca7680554be90f6e8ce065053372",
|
"gitHead": "8f59e68bd5c915a0d624e8e39354e1ccf672edf6",
|
||||||
"homepage": "https://github.com/juliangruber/brace-expansion",
|
"homepage": "https://github.com/juliangruber/brace-expansion",
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -84,7 +84,8 @@
|
|||||||
],
|
],
|
||||||
"name": "brace-expansion",
|
"name": "brace-expansion",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "# brace-expansion\n\n[Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html), \nas known from sh/bash, in JavaScript.\n\n[](http://travis-ci.org/juliangruber/brace-expansion)\n[](https://www.npmjs.org/package/brace-expansion)\n[](https://greenkeeper.io/)\n\n[](https://ci.testling.com/juliangruber/brace-expansion)\n\n## Example\n\n```js\nvar expand = require('brace-expansion');\n\nexpand('file-{a,b,c}.jpg')\n// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg']\n\nexpand('-v{,,}')\n// => ['-v', '-v', '-v']\n\nexpand('file{0..2}.jpg')\n// => ['file0.jpg', 'file1.jpg', 'file2.jpg']\n\nexpand('file-{a..c}.jpg')\n// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg']\n\nexpand('file{2..0}.jpg')\n// => ['file2.jpg', 'file1.jpg', 'file0.jpg']\n\nexpand('file{0..4..2}.jpg')\n// => ['file0.jpg', 'file2.jpg', 'file4.jpg']\n\nexpand('file-{a..e..2}.jpg')\n// => ['file-a.jpg', 'file-c.jpg', 'file-e.jpg']\n\nexpand('file{00..10..5}.jpg')\n// => ['file00.jpg', 'file05.jpg', 'file10.jpg']\n\nexpand('{{A..C},{a..c}}')\n// => ['A', 'B', 'C', 'a', 'b', 'c']\n\nexpand('ppp{,config,oe{,conf}}')\n// => ['ppp', 'pppconfig', 'pppoe', 'pppoeconf']\n```\n\n## API\n\n```js\nvar expand = require('brace-expansion');\n```\n\n### var expanded = expand(str)\n\nReturn an array of all possible and valid expansions of `str`. If none are\nfound, `[str]` is returned.\n\nValid expansions are:\n\n```js\n/^(.*,)+(.+)?$/\n// {a,b,...}\n```\n\nA comma seperated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`.\n\n```js\n/^-?\\d+\\.\\.-?\\d+(\\.\\.-?\\d+)?$/\n// {x..y[..incr]}\n```\n\nA numeric sequence from `x` to `y` inclusive, with optional increment.\nIf `x` or `y` start with a leading `0`, all the numbers will be padded\nto have equal length. Negative numbers and backwards iteration work too.\n\n```js\n/^-?\\d+\\.\\.-?\\d+(\\.\\.-?\\d+)?$/\n// {x..y[..incr]}\n```\n\nAn alphabetic sequence from `x` to `y` inclusive, with optional increment.\n`x` and `y` must be exactly one character, and if given, `incr` must be a\nnumber.\n\nFor compatibility reasons, the string `${` is not eligible for brace expansion.\n\n## Installation\n\nWith [npm](https://npmjs.org) do:\n\n```bash\nnpm install brace-expansion\n```\n\n## Contributors\n\n- [Julian Gruber](https://github.com/juliangruber)\n- [Isaac Z. Schlueter](https://github.com/isaacs)\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git://github.com/juliangruber/brace-expansion.git"
|
"url": "git://github.com/juliangruber/brace-expansion.git"
|
||||||
@ -110,5 +111,5 @@
|
|||||||
"android-browser/4.2..latest"
|
"android-browser/4.2..latest"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"version": "1.1.7"
|
"version": "1.1.8"
|
||||||
}
|
}
|
||||||
|
5
node_modules/concat-map/package.json
generated
vendored
5
node_modules/concat-map/package.json
generated
vendored
@ -61,7 +61,7 @@
|
|||||||
"shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
|
"shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
|
||||||
"tarball": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
|
"tarball": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/substack/node-concat-map",
|
"homepage": "https://github.com/substack/node-concat-map#readme",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"concat",
|
"concat",
|
||||||
"concatMap",
|
"concatMap",
|
||||||
@ -79,7 +79,8 @@
|
|||||||
],
|
],
|
||||||
"name": "concat-map",
|
"name": "concat-map",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "concat-map\n==========\n\nConcatenative mapdashery.\n\n[](http://ci.testling.com/substack/node-concat-map)\n\n[](http://travis-ci.org/substack/node-concat-map)\n\nexample\n=======\n\n``` js\nvar concatMap = require('concat-map');\nvar xs = [ 1, 2, 3, 4, 5, 6 ];\nvar ys = concatMap(xs, function (x) {\n return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];\n});\nconsole.dir(ys);\n```\n\n***\n\n```\n[ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]\n```\n\nmethods\n=======\n\n``` js\nvar concatMap = require('concat-map')\n```\n\nconcatMap(xs, fn)\n-----------------\n\nReturn an array of concatenated elements by calling `fn(x, i)` for each element\n`x` and each index `i` in the array `xs`.\n\nWhen `fn(x, i)` returns an array, its result will be concatenated with the\nresult array. If `fn(x, i)` returns anything else, that value will be pushed\nonto the end of the result array.\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install concat-map\n```\n\nlicense\n=======\n\nMIT\n\nnotes\n=====\n\nThis module was written while sitting high above the ground in a tree.\n",
|
||||||
|
"readmeFilename": "README.markdown",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git://github.com/substack/node-concat-map.git"
|
"url": "git://github.com/substack/node-concat-map.git"
|
||||||
|
1
node_modules/cordova-common/.eslintignore
generated
vendored
Normal file
1
node_modules/cordova-common/.eslintignore
generated
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
spec/fixtures/*
|
11
node_modules/cordova-common/.eslintrc.yml
generated
vendored
Normal file
11
node_modules/cordova-common/.eslintrc.yml
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
root: true
|
||||||
|
extends: semistandard
|
||||||
|
rules:
|
||||||
|
indent:
|
||||||
|
- error
|
||||||
|
- 4
|
||||||
|
camelcase: off
|
||||||
|
padded-blocks: off
|
||||||
|
operator-linebreak: off
|
||||||
|
no-throw-literal: off
|
||||||
|
|
1
node_modules/cordova-common/.jshintignore
generated
vendored
1
node_modules/cordova-common/.jshintignore
generated
vendored
@ -1 +0,0 @@
|
|||||||
spec/fixtures/*
|
|
1
node_modules/cordova-common/.ratignore
generated
vendored
1
node_modules/cordova-common/.ratignore
generated
vendored
@ -1,3 +1,4 @@
|
|||||||
fixtures
|
fixtures
|
||||||
coverage
|
coverage
|
||||||
jasmine.json
|
jasmine.json
|
||||||
|
appveyor.yml
|
||||||
|
15
node_modules/cordova-common/.travis.yml
generated
vendored
Normal file
15
node_modules/cordova-common/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
language: node_js
|
||||||
|
sudo: false
|
||||||
|
git:
|
||||||
|
depth: 10
|
||||||
|
node_js:
|
||||||
|
- "4"
|
||||||
|
- "6"
|
||||||
|
install:
|
||||||
|
- npm install
|
||||||
|
- npm install -g codecov
|
||||||
|
script:
|
||||||
|
- npm test
|
||||||
|
- npm run cover
|
||||||
|
after_script:
|
||||||
|
- codecov
|
4
node_modules/cordova-common/README.md
generated
vendored
4
node_modules/cordova-common/README.md
generated
vendored
@ -19,6 +19,10 @@
|
|||||||
#
|
#
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
[](https://ci.appveyor.com/project/ApacheSoftwareFoundation/cordova-common/branch/master)
|
||||||
|
[](https://travis-ci.org/apache/cordova-common)
|
||||||
|
[](https://nodei.co/npm/cordova-common/)
|
||||||
|
|
||||||
# cordova-common
|
# cordova-common
|
||||||
Expoeses shared functionality used by [cordova-lib](https://github.com/apache/cordova-lib/) and Cordova platforms.
|
Expoeses shared functionality used by [cordova-lib](https://github.com/apache/cordova-lib/) and Cordova platforms.
|
||||||
## Exposed APIs
|
## Exposed APIs
|
||||||
|
15
node_modules/cordova-common/RELEASENOTES.md
generated
vendored
15
node_modules/cordova-common/RELEASENOTES.md
generated
vendored
@ -20,6 +20,21 @@
|
|||||||
-->
|
-->
|
||||||
# Cordova-common Release Notes
|
# Cordova-common Release Notes
|
||||||
|
|
||||||
|
### 2.1.0 (August 30, 2017)
|
||||||
|
* [CB-13145](https://issues.apache.org/jira/browse/CB-13145) added variable replacing to `framework` tag
|
||||||
|
* [CB-13211](https://issues.apache.org/jira/browse/CB-13211) Add `allows-arbitrary-loads-for-media` attribute parsing for `getAccesses`
|
||||||
|
* [CB-11968](https://issues.apache.org/jira/browse/CB-11968) Added support for `<config-file>` in `config.xml`
|
||||||
|
* [CB-12895](https://issues.apache.org/jira/browse/CB-12895) set up `eslint` and removed `jshint`
|
||||||
|
* [CB-12785](https://issues.apache.org/jira/browse/CB-12785) added `.gitignore`, `travis`, and `appveyor` support
|
||||||
|
* [CB-12250](https://issues.apache.org/jira/browse/CB-12250) & [CB-12409](https://issues.apache.org/jira/browse/CB-12409) *iOS*: Fix bug with escaping properties from `plist` file
|
||||||
|
* [CB-12762](https://issues.apache.org/jira/browse/CB-12762) updated `common`, `fetch`, and `serve` `pkgJson` to point `pkgJson` repo items to github mirrors
|
||||||
|
* [CB-12766](https://issues.apache.org/jira/browse/CB-12766) Consistently write `JSON` with 2 spaces indentation
|
||||||
|
|
||||||
|
### 2.0.3 (May 02, 2017)
|
||||||
|
* [CB-8978](https://issues.apache.org/jira/browse/CB-8978) Add option to get `resource-file` from `root`
|
||||||
|
* [CB-11908](https://issues.apache.org/jira/browse/CB-11908) Add tests for `edit-config` in `config.xml`
|
||||||
|
* [CB-12665](https://issues.apache.org/jira/browse/CB-12665) removed `enginestrict` since it is deprecated
|
||||||
|
|
||||||
### 2.0.2 (Apr 14, 2017)
|
### 2.0.2 (Apr 14, 2017)
|
||||||
* [CB-11233](https://issues.apache.org/jira/browse/CB-11233) - Support installing frameworks into 'Embedded Binaries' section of the Xcode project
|
* [CB-11233](https://issues.apache.org/jira/browse/CB-11233) - Support installing frameworks into 'Embedded Binaries' section of the Xcode project
|
||||||
* [CB-10438](https://issues.apache.org/jira/browse/CB-10438) - Install correct dependency version. Removed shell.remove, added pkg.json to dependency tests 1-3, and updated install.js (.replace) to fix tests in uninstall.spec.js and update to workw with jasmine 2.0
|
* [CB-10438](https://issues.apache.org/jira/browse/CB-10438) - Install correct dependency version. Removed shell.remove, added pkg.json to dependency tests 1-3, and updated install.js (.replace) to fix tests in uninstall.spec.js and update to workw with jasmine 2.0
|
||||||
|
18
node_modules/cordova-common/appveyor.yml
generated
vendored
Normal file
18
node_modules/cordova-common/appveyor.yml
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# appveyor file
|
||||||
|
# http://www.appveyor.com/docs/appveyor-yml
|
||||||
|
|
||||||
|
environment:
|
||||||
|
matrix:
|
||||||
|
- nodejs_version: "4"
|
||||||
|
- nodejs_version: "6"
|
||||||
|
|
||||||
|
install:
|
||||||
|
- ps: Install-Product node $env:nodejs_version
|
||||||
|
- npm install
|
||||||
|
|
||||||
|
build: off
|
||||||
|
|
||||||
|
test_script:
|
||||||
|
- node --version
|
||||||
|
- npm --version
|
||||||
|
- npm test
|
91
node_modules/cordova-common/package.json
generated
vendored
91
node_modules/cordova-common/package.json
generated
vendored
File diff suppressed because one or more lines are too long
10
node_modules/cordova-common/src/.jshintrc
generated
vendored
10
node_modules/cordova-common/src/.jshintrc
generated
vendored
@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"node": true
|
|
||||||
, "bitwise": true
|
|
||||||
, "undef": true
|
|
||||||
, "trailing": true
|
|
||||||
, "quotmark": true
|
|
||||||
, "indent": 4
|
|
||||||
, "unused": "vars"
|
|
||||||
, "latedef": "nofunc"
|
|
||||||
}
|
|
30
node_modules/cordova-common/src/ActionStack.js
generated
vendored
30
node_modules/cordova-common/src/ActionStack.js
generated
vendored
@ -19,32 +19,32 @@
|
|||||||
|
|
||||||
/* jshint quotmark:false */
|
/* jshint quotmark:false */
|
||||||
|
|
||||||
var events = require('./events'),
|
var events = require('./events');
|
||||||
Q = require('q');
|
var Q = require('q');
|
||||||
|
|
||||||
function ActionStack() {
|
function ActionStack () {
|
||||||
this.stack = [];
|
this.stack = [];
|
||||||
this.completed = [];
|
this.completed = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
ActionStack.prototype = {
|
ActionStack.prototype = {
|
||||||
createAction:function(handler, action_params, reverter, revert_params) {
|
createAction: function (handler, action_params, reverter, revert_params) {
|
||||||
return {
|
return {
|
||||||
handler:{
|
handler: {
|
||||||
run:handler,
|
run: handler,
|
||||||
params:action_params
|
params: action_params
|
||||||
},
|
},
|
||||||
reverter:{
|
reverter: {
|
||||||
run:reverter,
|
run: reverter,
|
||||||
params:revert_params
|
params: revert_params
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
push:function(tx) {
|
push: function (tx) {
|
||||||
this.stack.push(tx);
|
this.stack.push(tx);
|
||||||
},
|
},
|
||||||
// Returns a promise.
|
// Returns a promise.
|
||||||
process:function(platform) {
|
process: function (platform) {
|
||||||
events.emit('verbose', 'Beginning processing of action stack for ' + platform + ' project...');
|
events.emit('verbose', 'Beginning processing of action stack for ' + platform + ' project...');
|
||||||
|
|
||||||
while (this.stack.length) {
|
while (this.stack.length) {
|
||||||
@ -54,19 +54,19 @@ ActionStack.prototype = {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
handler.apply(null, action_params);
|
handler.apply(null, action_params);
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
events.emit('warn', 'Error during processing of action! Attempting to revert...');
|
events.emit('warn', 'Error during processing of action! Attempting to revert...');
|
||||||
this.stack.unshift(action);
|
this.stack.unshift(action);
|
||||||
var issue = 'Uh oh!\n';
|
var issue = 'Uh oh!\n';
|
||||||
// revert completed tasks
|
// revert completed tasks
|
||||||
while(this.completed.length) {
|
while (this.completed.length) {
|
||||||
var undo = this.completed.shift();
|
var undo = this.completed.shift();
|
||||||
var revert = undo.reverter.run;
|
var revert = undo.reverter.run;
|
||||||
var revert_params = undo.reverter.params;
|
var revert_params = undo.reverter.params;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
revert.apply(null, revert_params);
|
revert.apply(null, revert_params);
|
||||||
} catch(err) {
|
} catch (err) {
|
||||||
events.emit('warn', 'Error during reversion of action! We probably really messed up your project now, sorry! D:');
|
events.emit('warn', 'Error during reversion of action! We probably really messed up your project now, sorry! D:');
|
||||||
issue += 'A reversion action failed: ' + err.message + '\n';
|
issue += 'A reversion action failed: ' + err.message + '\n';
|
||||||
}
|
}
|
||||||
|
141
node_modules/cordova-common/src/ConfigChanges/ConfigChanges.js
generated
vendored
141
node_modules/cordova-common/src/ConfigChanges/ConfigChanges.js
generated
vendored
@ -15,7 +15,7 @@
|
|||||||
KIND, either express or implied. See the License for the
|
KIND, either express or implied. See the License for the
|
||||||
specific language governing permissions and limitations
|
specific language governing permissions and limitations
|
||||||
under the License.
|
under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This module deals with shared configuration / dependency "stuff". That is:
|
* This module deals with shared configuration / dependency "stuff". That is:
|
||||||
@ -29,19 +29,17 @@
|
|||||||
* reference counts.
|
* reference counts.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* jshint sub:true */
|
var path = require('path');
|
||||||
|
var et = require('elementtree');
|
||||||
var path = require('path'),
|
var ConfigKeeper = require('./ConfigKeeper');
|
||||||
et = require('elementtree'),
|
var CordovaLogger = require('../CordovaLogger');
|
||||||
ConfigKeeper = require('./ConfigKeeper'),
|
|
||||||
CordovaLogger = require('../CordovaLogger');
|
|
||||||
|
|
||||||
var mungeutil = require('./munge-util');
|
var mungeutil = require('./munge-util');
|
||||||
var xml_helpers = require('../util/xml-helpers');
|
var xml_helpers = require('../util/xml-helpers');
|
||||||
|
|
||||||
exports.PlatformMunger = PlatformMunger;
|
exports.PlatformMunger = PlatformMunger;
|
||||||
|
|
||||||
exports.process = function(plugins_dir, project_dir, platform, platformJson, pluginInfoProvider) {
|
exports.process = function (plugins_dir, project_dir, platform, platformJson, pluginInfoProvider) {
|
||||||
var munger = new PlatformMunger(platform, project_dir, platformJson, pluginInfoProvider);
|
var munger = new PlatformMunger(platform, project_dir, platformJson, pluginInfoProvider);
|
||||||
munger.process(plugins_dir);
|
munger.process(plugins_dir);
|
||||||
munger.save_all();
|
munger.save_all();
|
||||||
@ -53,7 +51,7 @@ exports.process = function(plugins_dir, project_dir, platform, platformJson, plu
|
|||||||
* Can deal with config file of a single project.
|
* Can deal with config file of a single project.
|
||||||
* Parsed config files are cached in a ConfigKeeper object.
|
* Parsed config files are cached in a ConfigKeeper object.
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
function PlatformMunger(platform, project_dir, platformJson, pluginInfoProvider) {
|
function PlatformMunger (platform, project_dir, platformJson, pluginInfoProvider) {
|
||||||
this.platform = platform;
|
this.platform = platform;
|
||||||
this.project_dir = project_dir;
|
this.project_dir = project_dir;
|
||||||
this.config_keeper = new ConfigKeeper(project_dir);
|
this.config_keeper = new ConfigKeeper(project_dir);
|
||||||
@ -63,7 +61,7 @@ function PlatformMunger(platform, project_dir, platformJson, pluginInfoProvider)
|
|||||||
|
|
||||||
// Write out all unsaved files.
|
// Write out all unsaved files.
|
||||||
PlatformMunger.prototype.save_all = PlatformMunger_save_all;
|
PlatformMunger.prototype.save_all = PlatformMunger_save_all;
|
||||||
function PlatformMunger_save_all() {
|
function PlatformMunger_save_all () {
|
||||||
this.config_keeper.save_all();
|
this.config_keeper.save_all();
|
||||||
this.platformJson.save();
|
this.platformJson.save();
|
||||||
}
|
}
|
||||||
@ -71,7 +69,7 @@ function PlatformMunger_save_all() {
|
|||||||
// Apply a munge object to a single config file.
|
// Apply a munge object to a single config file.
|
||||||
// The remove parameter tells whether to add the change or remove it.
|
// The remove parameter tells whether to add the change or remove it.
|
||||||
PlatformMunger.prototype.apply_file_munge = PlatformMunger_apply_file_munge;
|
PlatformMunger.prototype.apply_file_munge = PlatformMunger_apply_file_munge;
|
||||||
function PlatformMunger_apply_file_munge(file, munge, remove) {
|
function PlatformMunger_apply_file_munge (file, munge, remove) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
for (var selector in munge.parents) {
|
for (var selector in munge.parents) {
|
||||||
@ -86,16 +84,15 @@ function PlatformMunger_apply_file_munge(file, munge, remove) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PlatformMunger.prototype.remove_plugin_changes = remove_plugin_changes;
|
PlatformMunger.prototype.remove_plugin_changes = remove_plugin_changes;
|
||||||
function remove_plugin_changes(pluginInfo, is_top_level) {
|
function remove_plugin_changes (pluginInfo, is_top_level) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var platform_config = self.platformJson.root;
|
var platform_config = self.platformJson.root;
|
||||||
var plugin_vars = is_top_level ?
|
var plugin_vars = is_top_level ?
|
||||||
platform_config.installed_plugins[pluginInfo.id] :
|
platform_config.installed_plugins[pluginInfo.id] :
|
||||||
platform_config.dependent_plugins[pluginInfo.id];
|
platform_config.dependent_plugins[pluginInfo.id];
|
||||||
var edit_config_changes = null;
|
var edit_config_changes = null;
|
||||||
if(pluginInfo.getEditConfigs) {
|
if (pluginInfo.getEditConfigs) {
|
||||||
edit_config_changes = pluginInfo.getEditConfigs(self.platform);
|
edit_config_changes = pluginInfo.getEditConfigs(self.platform);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,14 +111,13 @@ function remove_plugin_changes(pluginInfo, is_top_level) {
|
|||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PlatformMunger.prototype.add_plugin_changes = add_plugin_changes;
|
PlatformMunger.prototype.add_plugin_changes = add_plugin_changes;
|
||||||
function add_plugin_changes(pluginInfo, plugin_vars, is_top_level, should_increment, plugin_force) {
|
function add_plugin_changes (pluginInfo, plugin_vars, is_top_level, should_increment, plugin_force) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var platform_config = self.platformJson.root;
|
var platform_config = self.platformJson.root;
|
||||||
|
|
||||||
var edit_config_changes = null;
|
var edit_config_changes = null;
|
||||||
if(pluginInfo.getEditConfigs) {
|
if (pluginInfo.getEditConfigs) {
|
||||||
edit_config_changes = pluginInfo.getEditConfigs(self.platform);
|
edit_config_changes = pluginInfo.getEditConfigs(self.platform);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,8 +126,7 @@ function add_plugin_changes(pluginInfo, plugin_vars, is_top_level, should_increm
|
|||||||
if (!edit_config_changes || edit_config_changes.length === 0) {
|
if (!edit_config_changes || edit_config_changes.length === 0) {
|
||||||
// get config munge, aka how should this plugin change various config files
|
// get config munge, aka how should this plugin change various config files
|
||||||
config_munge = self.generate_plugin_config_munge(pluginInfo, plugin_vars);
|
config_munge = self.generate_plugin_config_munge(pluginInfo, plugin_vars);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
var isConflictingInfo = is_conflicting(edit_config_changes, platform_config.config_munge, self, plugin_force);
|
var isConflictingInfo = is_conflicting(edit_config_changes, platform_config.config_munge, self, plugin_force);
|
||||||
|
|
||||||
if (isConflictingInfo.conflictWithConfigxml) {
|
if (isConflictingInfo.conflictWithConfigxml) {
|
||||||
@ -149,13 +144,11 @@ function add_plugin_changes(pluginInfo, plugin_vars, is_top_level, should_increm
|
|||||||
|
|
||||||
// force add new munges
|
// force add new munges
|
||||||
config_munge = self.generate_plugin_config_munge(pluginInfo, plugin_vars, edit_config_changes);
|
config_munge = self.generate_plugin_config_munge(pluginInfo, plugin_vars, edit_config_changes);
|
||||||
}
|
} else if (isConflictingInfo.conflictFound) {
|
||||||
else if(isConflictingInfo.conflictFound) {
|
|
||||||
throw new Error('There was a conflict trying to modify attributes with <edit-config> in plugin ' + pluginInfo.id +
|
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 ' +
|
'. 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.');
|
pluginInfo.id + ' can be added. You may use --force to add the plugin and overwrite the conflicting attributes.');
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// no conflicts, will handle edit-config
|
// no conflicts, will handle edit-config
|
||||||
config_munge = self.generate_plugin_config_munge(pluginInfo, plugin_vars, edit_config_changes);
|
config_munge = self.generate_plugin_config_munge(pluginInfo, plugin_vars, edit_config_changes);
|
||||||
}
|
}
|
||||||
@ -168,27 +161,32 @@ function add_plugin_changes(pluginInfo, plugin_vars, is_top_level, should_increm
|
|||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Handle edit-config changes from config.xml
|
// Handle edit-config changes from config.xml
|
||||||
PlatformMunger.prototype.add_config_changes = add_config_changes;
|
PlatformMunger.prototype.add_config_changes = add_config_changes;
|
||||||
function add_config_changes(config, should_increment) {
|
function add_config_changes (config, should_increment) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var platform_config = self.platformJson.root;
|
var platform_config = self.platformJson.root;
|
||||||
|
|
||||||
var config_munge;
|
var config_munge;
|
||||||
var edit_config_changes = null;
|
var changes = [];
|
||||||
if(config.getEditConfigs) {
|
|
||||||
edit_config_changes = config.getEditConfigs(self.platform);
|
if (config.getEditConfigs) {
|
||||||
|
var edit_config_changes = config.getEditConfigs(self.platform);
|
||||||
|
if (edit_config_changes) {
|
||||||
|
changes = changes.concat(edit_config_changes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!edit_config_changes || edit_config_changes.length === 0) {
|
if (config.getConfigFiles) {
|
||||||
// There are no edit-config changes to add, return here
|
var config_files_changes = config.getConfigFiles(self.platform);
|
||||||
return self;
|
if (config_files_changes) {
|
||||||
|
changes = changes.concat(config_files_changes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
var isConflictingInfo = is_conflicting(edit_config_changes, platform_config.config_munge, self, true /*always force overwrite other edit-config*/);
|
|
||||||
|
|
||||||
if(isConflictingInfo.conflictFound) {
|
if (changes && changes.length > 0) {
|
||||||
|
var isConflictingInfo = is_conflicting(changes, platform_config.config_munge, self, true /* always force overwrite other edit-config */);
|
||||||
|
if (isConflictingInfo.conflictFound) {
|
||||||
var conflict_munge;
|
var conflict_munge;
|
||||||
var conflict_file;
|
var conflict_file;
|
||||||
|
|
||||||
@ -209,17 +207,17 @@ function add_config_changes(config, should_increment) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Add config.xml edit-config munges
|
|
||||||
config_munge = self.generate_config_xml_munge(config, edit_config_changes, 'config.xml');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add config.xml edit-config and config-file munges
|
||||||
|
config_munge = self.generate_config_xml_munge(config, changes, 'config.xml');
|
||||||
self = munge_helper(should_increment, self, platform_config, config_munge);
|
self = munge_helper(should_increment, self, platform_config, config_munge);
|
||||||
|
|
||||||
// Move to installed/dependent_plugins
|
// Move to installed/dependent_plugins
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
function munge_helper(should_increment, self, platform_config, config_munge) {
|
function munge_helper (should_increment, self, platform_config, config_munge) {
|
||||||
// global munge looks at all changes to config files
|
// global munge looks at all changes to config files
|
||||||
|
|
||||||
// TODO: The should_increment param is only used by cordova-cli and is going away soon.
|
// TODO: The should_increment param is only used by cordova-cli and is going away soon.
|
||||||
@ -241,11 +239,10 @@ function munge_helper(should_increment, self, platform_config, config_munge) {
|
|||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Load the global munge from platform json and apply all of it.
|
// Load the global munge from platform json and apply all of it.
|
||||||
// Used by cordova prepare to re-generate some config file from platform
|
// Used by cordova prepare to re-generate some config file from platform
|
||||||
// defaults and the global munge.
|
// defaults and the global munge.
|
||||||
PlatformMunger.prototype.reapply_global_munge = reapply_global_munge ;
|
PlatformMunger.prototype.reapply_global_munge = reapply_global_munge;
|
||||||
function reapply_global_munge () {
|
function reapply_global_munge () {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
@ -261,58 +258,56 @@ function reapply_global_munge () {
|
|||||||
// generate_plugin_config_munge
|
// generate_plugin_config_munge
|
||||||
// Generate the munge object from config.xml
|
// Generate the munge object from config.xml
|
||||||
PlatformMunger.prototype.generate_config_xml_munge = generate_config_xml_munge;
|
PlatformMunger.prototype.generate_config_xml_munge = generate_config_xml_munge;
|
||||||
function generate_config_xml_munge(config, edit_config_changes, type) {
|
function generate_config_xml_munge (config, config_changes, type) {
|
||||||
|
|
||||||
var munge = { files: {} };
|
var munge = { files: {} };
|
||||||
var changes = edit_config_changes;
|
|
||||||
var id;
|
var id;
|
||||||
|
|
||||||
if(!changes) {
|
if (!config_changes) {
|
||||||
return munge;
|
return munge;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type === 'config.xml') {
|
if (type === 'config.xml') {
|
||||||
id = type;
|
id = type;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
id = config.id;
|
id = config.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
changes.forEach(function(change) {
|
config_changes.forEach(function (change) {
|
||||||
change.xmls.forEach(function(xml) {
|
change.xmls.forEach(function (xml) {
|
||||||
// 1. stringify each xml
|
// 1. stringify each xml
|
||||||
var stringified = (new et.ElementTree(xml)).write({xml_declaration:false});
|
var stringified = (new et.ElementTree(xml)).write({xml_declaration: false});
|
||||||
// 2. add into munge
|
// 2. add into munge
|
||||||
if (change.mode) {
|
if (change.mode) {
|
||||||
mungeutil.deep_add(munge, change.file, change.target, { xml: stringified, count: 1, mode: change.mode, id: id });
|
mungeutil.deep_add(munge, change.file, change.target, { xml: stringified, count: 1, mode: change.mode, id: id });
|
||||||
|
} else {
|
||||||
|
mungeutil.deep_add(munge, change.target, change.parent, { xml: stringified, count: 1, after: change.after });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
return munge;
|
return munge;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// generate_plugin_config_munge
|
// generate_plugin_config_munge
|
||||||
// Generate the munge object from plugin.xml + vars
|
// Generate the munge object from plugin.xml + vars
|
||||||
PlatformMunger.prototype.generate_plugin_config_munge = generate_plugin_config_munge;
|
PlatformMunger.prototype.generate_plugin_config_munge = generate_plugin_config_munge;
|
||||||
function generate_plugin_config_munge(pluginInfo, vars, edit_config_changes) {
|
function generate_plugin_config_munge (pluginInfo, vars, edit_config_changes) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
vars = vars || {};
|
vars = vars || {};
|
||||||
var munge = { files: {} };
|
var munge = { files: {} };
|
||||||
var changes = pluginInfo.getConfigFiles(self.platform);
|
var changes = pluginInfo.getConfigFiles(self.platform);
|
||||||
|
|
||||||
if(edit_config_changes) {
|
if (edit_config_changes) {
|
||||||
Array.prototype.push.apply(changes, edit_config_changes);
|
Array.prototype.push.apply(changes, edit_config_changes);
|
||||||
}
|
}
|
||||||
|
|
||||||
changes.forEach(function(change) {
|
changes.forEach(function (change) {
|
||||||
change.xmls.forEach(function(xml) {
|
change.xmls.forEach(function (xml) {
|
||||||
// 1. stringify each xml
|
// 1. stringify each xml
|
||||||
var stringified = (new et.ElementTree(xml)).write({xml_declaration:false});
|
var stringified = (new et.ElementTree(xml)).write({xml_declaration: false});
|
||||||
// interp vars
|
// interp vars
|
||||||
if (vars) {
|
if (vars) {
|
||||||
Object.keys(vars).forEach(function(key) {
|
Object.keys(vars).forEach(function (key) {
|
||||||
var regExp = new RegExp('\\$' + key, 'g');
|
var regExp = new RegExp('\\$' + key, 'g');
|
||||||
stringified = stringified.replace(regExp, vars[key]);
|
stringified = stringified.replace(regExp, vars[key]);
|
||||||
});
|
});
|
||||||
@ -322,8 +317,7 @@ function generate_plugin_config_munge(pluginInfo, vars, edit_config_changes) {
|
|||||||
if (change.mode !== 'remove') {
|
if (change.mode !== 'remove') {
|
||||||
mungeutil.deep_add(munge, change.file, change.target, { xml: stringified, count: 1, mode: change.mode, plugin: pluginInfo.id });
|
mungeutil.deep_add(munge, change.file, change.target, { xml: stringified, count: 1, mode: change.mode, plugin: pluginInfo.id });
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
mungeutil.deep_add(munge, change.target, change.parent, { xml: stringified, count: 1, after: change.after });
|
mungeutil.deep_add(munge, change.target, change.parent, { xml: stringified, count: 1, after: change.after });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -331,7 +325,7 @@ function generate_plugin_config_munge(pluginInfo, vars, edit_config_changes) {
|
|||||||
return munge;
|
return munge;
|
||||||
}
|
}
|
||||||
|
|
||||||
function is_conflicting(editchanges, config_munge, self, force) {
|
function is_conflicting (editchanges, config_munge, self, force) {
|
||||||
var files = config_munge.files;
|
var files = config_munge.files;
|
||||||
var conflictFound = false;
|
var conflictFound = false;
|
||||||
var conflictWithConfigxml = false;
|
var conflictWithConfigxml = false;
|
||||||
@ -340,7 +334,7 @@ function is_conflicting(editchanges, config_munge, self, force) {
|
|||||||
var conflictingParent;
|
var conflictingParent;
|
||||||
var conflictingPlugin;
|
var conflictingPlugin;
|
||||||
|
|
||||||
editchanges.forEach(function(editchange) {
|
editchanges.forEach(function (editchange) {
|
||||||
if (files[editchange.file]) {
|
if (files[editchange.file]) {
|
||||||
var parents = files[editchange.file].parents;
|
var parents = files[editchange.file].parents;
|
||||||
var target = parents[editchange.target];
|
var target = parents[editchange.target];
|
||||||
@ -361,8 +355,7 @@ function is_conflicting(editchanges, config_munge, self, force) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
conflictingParent = editchange.target;
|
conflictingParent = editchange.target;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -374,13 +367,11 @@ function is_conflicting(editchanges, config_munge, self, force) {
|
|||||||
if (target[0].id === 'config.xml') {
|
if (target[0].id === 'config.xml') {
|
||||||
// Keep track of config.xml/config.xml edit-config conflicts
|
// Keep track of config.xml/config.xml edit-config conflicts
|
||||||
mungeutil.deep_add(configxmlMunge, editchange.file, conflictingParent, target[0]);
|
mungeutil.deep_add(configxmlMunge, editchange.file, conflictingParent, target[0]);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// Keep track of config.xml x plugin.xml edit-config conflicts
|
// Keep track of config.xml x plugin.xml edit-config conflicts
|
||||||
mungeutil.deep_add(conflictingMunge, editchange.file, conflictingParent, target[0]);
|
mungeutil.deep_add(conflictingMunge, editchange.file, conflictingParent, target[0]);
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
if (target[0].id === 'config.xml') {
|
if (target[0].id === 'config.xml') {
|
||||||
// plugin.xml cannot overwrite config.xml changes even if --force is used
|
// plugin.xml cannot overwrite config.xml changes even if --force is used
|
||||||
conflictWithConfigxml = true;
|
conflictWithConfigxml = true;
|
||||||
@ -390,36 +381,38 @@ function is_conflicting(editchanges, config_munge, self, force) {
|
|||||||
if (force) {
|
if (force) {
|
||||||
// Need to find all conflicts when --force is used, track conflicting munges
|
// Need to find all conflicts when --force is used, track conflicting munges
|
||||||
mungeutil.deep_add(conflictingMunge, editchange.file, conflictingParent, target[0]);
|
mungeutil.deep_add(conflictingMunge, editchange.file, conflictingParent, target[0]);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// plugin cannot overwrite other plugin changes without --force
|
// plugin cannot overwrite other plugin changes without --force
|
||||||
conflictingPlugin = target[0].plugin;
|
conflictingPlugin = target[0].plugin;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return {conflictFound: conflictFound, conflictingPlugin: conflictingPlugin, conflictingMunge: conflictingMunge,
|
return {conflictFound: conflictFound,
|
||||||
configxmlMunge: configxmlMunge, conflictWithConfigxml:conflictWithConfigxml};
|
conflictingPlugin: conflictingPlugin,
|
||||||
|
conflictingMunge: conflictingMunge,
|
||||||
|
configxmlMunge: configxmlMunge,
|
||||||
|
conflictWithConfigxml: conflictWithConfigxml};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Go over the prepare queue and apply the config munges for each plugin
|
// Go over the prepare queue and apply the config munges for each plugin
|
||||||
// that has been (un)installed.
|
// that has been (un)installed.
|
||||||
PlatformMunger.prototype.process = PlatformMunger_process;
|
PlatformMunger.prototype.process = PlatformMunger_process;
|
||||||
function PlatformMunger_process(plugins_dir) {
|
function PlatformMunger_process (plugins_dir) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var platform_config = self.platformJson.root;
|
var platform_config = self.platformJson.root;
|
||||||
|
|
||||||
// Uninstallation first
|
// Uninstallation first
|
||||||
platform_config.prepare_queue.uninstalled.forEach(function(u) {
|
platform_config.prepare_queue.uninstalled.forEach(function (u) {
|
||||||
var pluginInfo = self.pluginInfoProvider.get(path.join(plugins_dir, u.plugin));
|
var pluginInfo = self.pluginInfoProvider.get(path.join(plugins_dir, u.plugin));
|
||||||
self.remove_plugin_changes(pluginInfo, u.topLevel);
|
self.remove_plugin_changes(pluginInfo, u.topLevel);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Now handle installation
|
// Now handle installation
|
||||||
platform_config.prepare_queue.installed.forEach(function(u) {
|
platform_config.prepare_queue.installed.forEach(function (u) {
|
||||||
var pluginInfo = self.pluginInfoProvider.get(path.join(plugins_dir, u.plugin));
|
var pluginInfo = self.pluginInfoProvider.get(path.join(plugins_dir, u.plugin));
|
||||||
self.add_plugin_changes(pluginInfo, u.vars, u.topLevel, true, u.force);
|
self.add_plugin_changes(pluginInfo, u.vars, u.topLevel, true, u.force);
|
||||||
});
|
});
|
||||||
@ -428,4 +421,4 @@ function PlatformMunger_process(plugins_dir) {
|
|||||||
platform_config.prepare_queue.uninstalled = [];
|
platform_config.prepare_queue.uninstalled = [];
|
||||||
platform_config.prepare_queue.installed = [];
|
platform_config.prepare_queue.installed = [];
|
||||||
}
|
}
|
||||||
/**** END of PlatformMunger ****/
|
/** ** END of PlatformMunger ****/
|
||||||
|
94
node_modules/cordova-common/src/ConfigChanges/ConfigFile.js
generated
vendored
94
node_modules/cordova-common/src/ConfigChanges/ConfigFile.js
generated
vendored
@ -14,6 +14,8 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* eslint no-control-regex: 0 */
|
||||||
|
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
|
|
||||||
@ -42,7 +44,7 @@ addProperty(module, 'xml_helpers', '../util/xml-helpers', modules);
|
|||||||
* TODO: Consider moving it out to a separate file and maybe partially with
|
* TODO: Consider moving it out to a separate file and maybe partially with
|
||||||
* overrides in platform handlers.
|
* overrides in platform handlers.
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
function ConfigFile(project_dir, platform, file_tag) {
|
function ConfigFile (project_dir, platform, file_tag) {
|
||||||
this.project_dir = project_dir;
|
this.project_dir = project_dir;
|
||||||
this.platform = platform;
|
this.platform = platform;
|
||||||
this.file_tag = file_tag;
|
this.file_tag = file_tag;
|
||||||
@ -53,13 +55,13 @@ function ConfigFile(project_dir, platform, file_tag) {
|
|||||||
|
|
||||||
// ConfigFile.load()
|
// ConfigFile.load()
|
||||||
ConfigFile.prototype.load = ConfigFile_load;
|
ConfigFile.prototype.load = ConfigFile_load;
|
||||||
function ConfigFile_load() {
|
function ConfigFile_load () {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
// config file may be in a place not exactly specified in the target
|
// config file may be in a place not exactly specified in the target
|
||||||
var filepath = self.filepath = resolveConfigFilePath(self.project_dir, self.platform, self.file_tag);
|
var filepath = self.filepath = resolveConfigFilePath(self.project_dir, self.platform, self.file_tag);
|
||||||
|
|
||||||
if ( !filepath || !fs.existsSync(filepath) ) {
|
if (!filepath || !fs.existsSync(filepath)) {
|
||||||
self.exists = false;
|
self.exists = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -69,7 +71,7 @@ function ConfigFile_load() {
|
|||||||
var ext = path.extname(filepath);
|
var ext = path.extname(filepath);
|
||||||
// Windows8 uses an appxmanifest, and wp8 will likely use
|
// Windows8 uses an appxmanifest, and wp8 will likely use
|
||||||
// the same in a future release
|
// the same in a future release
|
||||||
if (ext == '.xml' || ext == '.appxmanifest') {
|
if (ext === '.xml' || ext === '.appxmanifest') {
|
||||||
self.type = 'xml';
|
self.type = 'xml';
|
||||||
self.data = modules.xml_helpers.parseElementtreeSync(filepath);
|
self.data = modules.xml_helpers.parseElementtreeSync(filepath);
|
||||||
} else {
|
} else {
|
||||||
@ -80,12 +82,12 @@ function ConfigFile_load() {
|
|||||||
// Do we still need to support binary plist?
|
// Do we still need to support binary plist?
|
||||||
// If yes, use plist.parseStringSync() and read the file once.
|
// If yes, use plist.parseStringSync() and read the file once.
|
||||||
self.data = isBinaryPlist(filepath) ?
|
self.data = isBinaryPlist(filepath) ?
|
||||||
modules.bplist.parseBuffer(fs.readFileSync(filepath)) :
|
modules.bplist.parseBuffer(fs.readFileSync(filepath)) :
|
||||||
modules.plist.parse(fs.readFileSync(filepath, 'utf8'));
|
modules.plist.parse(fs.readFileSync(filepath, 'utf8'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigFile.prototype.save = function ConfigFile_save() {
|
ConfigFile.prototype.save = function ConfigFile_save () {
|
||||||
var self = this;
|
var self = this;
|
||||||
if (self.type === 'xml') {
|
if (self.type === 'xml') {
|
||||||
fs.writeFileSync(self.filepath, self.data.write({indent: 4}), 'utf-8');
|
fs.writeFileSync(self.filepath, self.data.write({indent: 4}), 'utf-8');
|
||||||
@ -97,54 +99,54 @@ ConfigFile.prototype.save = function ConfigFile_save() {
|
|||||||
self.is_changed = false;
|
self.is_changed = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
ConfigFile.prototype.graft_child = function ConfigFile_graft_child(selector, xml_child) {
|
ConfigFile.prototype.graft_child = function ConfigFile_graft_child (selector, xml_child) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var filepath = self.filepath;
|
var filepath = self.filepath;
|
||||||
var result;
|
var result;
|
||||||
if (self.type === 'xml') {
|
if (self.type === 'xml') {
|
||||||
var xml_to_graft = [modules.et.XML(xml_child.xml)];
|
var xml_to_graft = [modules.et.XML(xml_child.xml)];
|
||||||
switch (xml_child.mode) {
|
switch (xml_child.mode) {
|
||||||
case 'merge':
|
case 'merge':
|
||||||
result = modules.xml_helpers.graftXMLMerge(self.data, xml_to_graft, selector, xml_child);
|
result = modules.xml_helpers.graftXMLMerge(self.data, xml_to_graft, selector, xml_child);
|
||||||
break;
|
break;
|
||||||
case 'overwrite':
|
case 'overwrite':
|
||||||
result = modules.xml_helpers.graftXMLOverwrite(self.data, xml_to_graft, selector, xml_child);
|
result = modules.xml_helpers.graftXMLOverwrite(self.data, xml_to_graft, selector, xml_child);
|
||||||
break;
|
break;
|
||||||
case 'remove':
|
case 'remove':
|
||||||
result= true;
|
result = modules.xml_helpers.pruneXMLRemove(self.data, selector, xml_to_graft);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
result = modules.xml_helpers.graftXML(self.data, xml_to_graft, selector, xml_child.after);
|
result = modules.xml_helpers.graftXML(self.data, xml_to_graft, selector, xml_child.after);
|
||||||
}
|
}
|
||||||
if ( !result) {
|
if (!result) {
|
||||||
throw new Error('Unable to graft xml at selector "' + selector + '" from "' + filepath + '" during config install');
|
throw new Error('Unable to graft xml at selector "' + selector + '" from "' + filepath + '" during config install');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// plist file
|
// plist file
|
||||||
result = modules.plist_helpers.graftPLIST(self.data, xml_child.xml, selector);
|
result = modules.plist_helpers.graftPLIST(self.data, xml_child.xml, selector);
|
||||||
if ( !result ) {
|
if (!result) {
|
||||||
throw new Error('Unable to graft plist "' + filepath + '" during config install');
|
throw new Error('Unable to graft plist "' + filepath + '" during config install');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.is_changed = true;
|
self.is_changed = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
ConfigFile.prototype.prune_child = function ConfigFile_prune_child(selector, xml_child) {
|
ConfigFile.prototype.prune_child = function ConfigFile_prune_child (selector, xml_child) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var filepath = self.filepath;
|
var filepath = self.filepath;
|
||||||
var result;
|
var result;
|
||||||
if (self.type === 'xml') {
|
if (self.type === 'xml') {
|
||||||
var xml_to_graft = [modules.et.XML(xml_child.xml)];
|
var xml_to_graft = [modules.et.XML(xml_child.xml)];
|
||||||
switch (xml_child.mode) {
|
switch (xml_child.mode) {
|
||||||
case 'merge':
|
case 'merge':
|
||||||
case 'overwrite':
|
case 'overwrite':
|
||||||
result = modules.xml_helpers.pruneXMLRestore(self.data, selector, xml_child);
|
result = modules.xml_helpers.pruneXMLRestore(self.data, selector, xml_child);
|
||||||
break;
|
break;
|
||||||
case 'remove':
|
case 'remove':
|
||||||
result = modules.xml_helpers.prunXMLRemove(self.data, selector, xml_to_graft);
|
result = modules.xml_helpers.pruneXMLRemove(self.data, selector, xml_to_graft);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
result = modules.xml_helpers.pruneXML(self.data, xml_to_graft, selector);
|
result = modules.xml_helpers.pruneXML(self.data, xml_to_graft, selector);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// plist file
|
// plist file
|
||||||
@ -160,7 +162,7 @@ ConfigFile.prototype.prune_child = function ConfigFile_prune_child(selector, xml
|
|||||||
// Some config-file target attributes are not qualified with a full leading directory, or contain wildcards.
|
// Some config-file target attributes are not qualified with a full leading directory, or contain wildcards.
|
||||||
// Resolve to a real path in this function.
|
// Resolve to a real path in this function.
|
||||||
// TODO: getIOSProjectname is slow because of glob, try to avoid calling it several times per project.
|
// TODO: getIOSProjectname is slow because of glob, try to avoid calling it several times per project.
|
||||||
function resolveConfigFilePath(project_dir, platform, file) {
|
function resolveConfigFilePath (project_dir, platform, file) {
|
||||||
var filepath = path.join(project_dir, file);
|
var filepath = path.join(project_dir, file);
|
||||||
var matches;
|
var matches;
|
||||||
|
|
||||||
@ -170,10 +172,10 @@ function resolveConfigFilePath(project_dir, platform, file) {
|
|||||||
if (matches.length) filepath = matches[0];
|
if (matches.length) filepath = matches[0];
|
||||||
|
|
||||||
// [CB-5989] multiple Info.plist files may exist. default to $PROJECT_NAME-Info.plist
|
// [CB-5989] multiple Info.plist files may exist. default to $PROJECT_NAME-Info.plist
|
||||||
if(matches.length > 1 && file.indexOf('-Info.plist')>-1){
|
if (matches.length > 1 && file.indexOf('-Info.plist') > -1) {
|
||||||
var plistName = getIOSProjectname(project_dir)+'-Info.plist';
|
var plistName = getIOSProjectname(project_dir) + '-Info.plist';
|
||||||
for (var i=0; i < matches.length; i++) {
|
for (var i = 0; i < matches.length; i++) {
|
||||||
if(matches[i].indexOf(plistName) > -1){
|
if (matches[i].indexOf(plistName) > -1) {
|
||||||
filepath = matches[i];
|
filepath = matches[i];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -184,13 +186,13 @@ function resolveConfigFilePath(project_dir, platform, file) {
|
|||||||
|
|
||||||
// special-case config.xml target that is just "config.xml". This should be resolved to the real location of the file.
|
// special-case config.xml target that is just "config.xml". This should be resolved to the real location of the file.
|
||||||
// TODO: move the logic that contains the locations of config.xml from cordova CLI into plugman.
|
// TODO: move the logic that contains the locations of config.xml from cordova CLI into plugman.
|
||||||
if (file == 'config.xml') {
|
if (file === 'config.xml') {
|
||||||
if (platform == 'ubuntu') {
|
if (platform === 'ubuntu') {
|
||||||
filepath = path.join(project_dir, 'config.xml');
|
filepath = path.join(project_dir, 'config.xml');
|
||||||
} else if (platform == 'ios') {
|
} else if (platform === 'ios') {
|
||||||
var iospath = getIOSProjectname(project_dir);
|
var iospath = getIOSProjectname(project_dir);
|
||||||
filepath = path.join(project_dir,iospath, 'config.xml');
|
filepath = path.join(project_dir, iospath, 'config.xml');
|
||||||
} else if (platform == 'android') {
|
} else if (platform === 'android') {
|
||||||
filepath = path.join(project_dir, 'res', 'xml', 'config.xml');
|
filepath = path.join(project_dir, 'res', 'xml', 'config.xml');
|
||||||
} else {
|
} else {
|
||||||
matches = modules.glob.sync(path.join(project_dir, '**', 'config.xml'));
|
matches = modules.glob.sync(path.join(project_dir, '**', 'config.xml'));
|
||||||
@ -201,8 +203,8 @@ function resolveConfigFilePath(project_dir, platform, file) {
|
|||||||
|
|
||||||
// XXX this checks for android studio projects
|
// XXX this checks for android studio projects
|
||||||
// only if none of the options above are satisfied does this get called
|
// only if none of the options above are satisfied does this get called
|
||||||
if(platform === 'android' && !fs.existsSync(filepath)) {
|
if (platform === 'android' && !fs.existsSync(filepath)) {
|
||||||
filepath = path.join(project_dir, 'app', 'src', 'main', 'res', 'xml', 'config.xml');
|
filepath = path.join(project_dir, 'app', 'src', 'main', 'res', 'xml', 'config.xml');
|
||||||
}
|
}
|
||||||
|
|
||||||
// None of the special cases matched, returning project_dir/file.
|
// None of the special cases matched, returning project_dir/file.
|
||||||
@ -211,11 +213,11 @@ function resolveConfigFilePath(project_dir, platform, file) {
|
|||||||
|
|
||||||
// Find out the real name of an iOS project
|
// 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.
|
// TODO: glob is slow, need a better way or caching, or avoid using more than once.
|
||||||
function getIOSProjectname(project_dir) {
|
function getIOSProjectname (project_dir) {
|
||||||
var matches = modules.glob.sync(path.join(project_dir, '*.xcodeproj'));
|
var matches = modules.glob.sync(path.join(project_dir, '*.xcodeproj'));
|
||||||
var iospath;
|
var iospath;
|
||||||
if (matches.length === 1) {
|
if (matches.length === 1) {
|
||||||
iospath = path.basename(matches[0],'.xcodeproj');
|
iospath = path.basename(matches[0], '.xcodeproj');
|
||||||
} else {
|
} else {
|
||||||
var msg;
|
var msg;
|
||||||
if (matches.length === 0) {
|
if (matches.length === 0) {
|
||||||
@ -229,7 +231,7 @@ function getIOSProjectname(project_dir) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// determine if a plist file is binary
|
// determine if a plist file is binary
|
||||||
function isBinaryPlist(filename) {
|
function isBinaryPlist (filename) {
|
||||||
// I wish there was a synchronous way to read only the first 6 bytes of a
|
// I wish there was a synchronous way to read only the first 6 bytes of a
|
||||||
// file. This is wasteful :/
|
// file. This is wasteful :/
|
||||||
var buf = '' + fs.readFileSync(filename, 'utf8');
|
var buf = '' + fs.readFileSync(filename, 'utf8');
|
||||||
|
9
node_modules/cordova-common/src/ConfigChanges/ConfigKeeper.js
generated
vendored
9
node_modules/cordova-common/src/ConfigChanges/ConfigKeeper.js
generated
vendored
@ -28,18 +28,18 @@ var ConfigFile = require('./ConfigFile');
|
|||||||
* project_dir/platform/file
|
* project_dir/platform/file
|
||||||
* where file is the name used for the file in config munges.
|
* where file is the name used for the file in config munges.
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
function ConfigKeeper(project_dir, plugins_dir) {
|
function ConfigKeeper (project_dir, plugins_dir) {
|
||||||
this.project_dir = project_dir;
|
this.project_dir = project_dir;
|
||||||
this.plugins_dir = plugins_dir;
|
this.plugins_dir = plugins_dir;
|
||||||
this._cached = {};
|
this._cached = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigKeeper.prototype.get = function ConfigKeeper_get(project_dir, platform, file) {
|
ConfigKeeper.prototype.get = function ConfigKeeper_get (project_dir, platform, file) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
// This fixes a bug with older plugins - when specifying config xml instead of res/xml/config.xml
|
// This fixes a bug with older plugins - when specifying config xml instead of res/xml/config.xml
|
||||||
// https://issues.apache.org/jira/browse/CB-6414
|
// https://issues.apache.org/jira/browse/CB-6414
|
||||||
if(file == 'config.xml' && platform == 'android'){
|
if (file === 'config.xml' && platform === 'android') {
|
||||||
file = 'res/xml/config.xml';
|
file = 'res/xml/config.xml';
|
||||||
}
|
}
|
||||||
var fake_path = path.join(project_dir, platform, file);
|
var fake_path = path.join(project_dir, platform, file);
|
||||||
@ -53,8 +53,7 @@ ConfigKeeper.prototype.get = function ConfigKeeper_get(project_dir, platform, fi
|
|||||||
return config_file;
|
return config_file;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ConfigKeeper.prototype.save_all = function ConfigKeeper_save_all () {
|
||||||
ConfigKeeper.prototype.save_all = function ConfigKeeper_save_all() {
|
|
||||||
var self = this;
|
var self = this;
|
||||||
Object.keys(self._cached).forEach(function (fake_path) {
|
Object.keys(self._cached).forEach(function (fake_path) {
|
||||||
var config_file = self._cached[fake_path];
|
var config_file = self._cached[fake_path];
|
||||||
|
45
node_modules/cordova-common/src/ConfigChanges/munge-util.js
generated
vendored
45
node_modules/cordova-common/src/ConfigChanges/munge-util.js
generated
vendored
@ -19,14 +19,14 @@ var _ = require('underscore');
|
|||||||
|
|
||||||
// add the count of [key1][key2]...[keyN] to obj
|
// add the count of [key1][key2]...[keyN] to obj
|
||||||
// return true if it didn't exist before
|
// return true if it didn't exist before
|
||||||
exports.deep_add = function deep_add(obj, keys /* or key1, key2 .... */ ) {
|
exports.deep_add = function deep_add (obj, keys /* or key1, key2 .... */) {
|
||||||
if ( !Array.isArray(keys) ) {
|
if (!Array.isArray(keys)) {
|
||||||
keys = Array.prototype.slice.call(arguments, 1);
|
keys = Array.prototype.slice.call(arguments, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return exports.process_munge(obj, true/*createParents*/, function (parentArray, k) {
|
return exports.process_munge(obj, true/* createParents */, function (parentArray, k) {
|
||||||
var found = _.find(parentArray, function(element) {
|
var found = _.find(parentArray, function (element) {
|
||||||
return element.xml == k.xml;
|
return element.xml === k.xml;
|
||||||
});
|
});
|
||||||
if (found) {
|
if (found) {
|
||||||
found.after = found.after || k.after;
|
found.after = found.after || k.after;
|
||||||
@ -40,16 +40,16 @@ exports.deep_add = function deep_add(obj, keys /* or key1, key2 .... */ ) {
|
|||||||
|
|
||||||
// decrement the count of [key1][key2]...[keyN] from obj and remove if it reaches 0
|
// decrement the count of [key1][key2]...[keyN] from obj and remove if it reaches 0
|
||||||
// return true if it was removed or not found
|
// return true if it was removed or not found
|
||||||
exports.deep_remove = function deep_remove(obj, keys /* or key1, key2 .... */ ) {
|
exports.deep_remove = function deep_remove (obj, keys /* or key1, key2 .... */) {
|
||||||
if ( !Array.isArray(keys) ) {
|
if (!Array.isArray(keys)) {
|
||||||
keys = Array.prototype.slice.call(arguments, 1);
|
keys = Array.prototype.slice.call(arguments, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
var result = exports.process_munge(obj, false/*createParents*/, function (parentArray, k) {
|
var result = exports.process_munge(obj, false/* createParents */, function (parentArray, k) {
|
||||||
var index = -1;
|
var index = -1;
|
||||||
var found = _.find(parentArray, function (element) {
|
var found = _.find(parentArray, function (element) {
|
||||||
index++;
|
index++;
|
||||||
return element.xml == k.xml;
|
return element.xml === k.xml;
|
||||||
});
|
});
|
||||||
if (found) {
|
if (found) {
|
||||||
if (parentArray[index].oldAttrib) {
|
if (parentArray[index].oldAttrib) {
|
||||||
@ -58,8 +58,7 @@ exports.deep_remove = function deep_remove(obj, keys /* or key1, key2 .... */ )
|
|||||||
found.count -= k.count;
|
found.count -= k.count;
|
||||||
if (found.count > 0) {
|
if (found.count > 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
parentArray.splice(index, 1);
|
parentArray.splice(index, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -71,14 +70,14 @@ exports.deep_remove = function deep_remove(obj, keys /* or key1, key2 .... */ )
|
|||||||
|
|
||||||
// search for [key1][key2]...[keyN]
|
// search for [key1][key2]...[keyN]
|
||||||
// return the object or undefined if not found
|
// return the object or undefined if not found
|
||||||
exports.deep_find = function deep_find(obj, keys /* or key1, key2 .... */ ) {
|
exports.deep_find = function deep_find (obj, keys /* or key1, key2 .... */) {
|
||||||
if ( !Array.isArray(keys) ) {
|
if (!Array.isArray(keys)) {
|
||||||
keys = Array.prototype.slice.call(arguments, 1);
|
keys = Array.prototype.slice.call(arguments, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return exports.process_munge(obj, false/*createParents?*/, function (parentArray, k) {
|
return exports.process_munge(obj, false/* createParents? */, function (parentArray, k) {
|
||||||
return _.find(parentArray, function (element) {
|
return _.find(parentArray, function (element) {
|
||||||
return element.xml == (k.xml || k);
|
return element.xml === (k.xml || k);
|
||||||
});
|
});
|
||||||
}, keys);
|
}, keys);
|
||||||
};
|
};
|
||||||
@ -87,20 +86,20 @@ exports.deep_find = function deep_find(obj, keys /* or key1, key2 .... */ ) {
|
|||||||
// When createParents is true, add the file and parent items they are missing
|
// When createParents is true, add the file and parent items they are missing
|
||||||
// When createParents is false, stop and return undefined if the file and/or parent items are missing
|
// When createParents is false, stop and return undefined if the file and/or parent items are missing
|
||||||
|
|
||||||
exports.process_munge = function process_munge(obj, createParents, func, keys /* or key1, key2 .... */ ) {
|
exports.process_munge = function process_munge (obj, createParents, func, keys /* or key1, key2 .... */) {
|
||||||
if ( !Array.isArray(keys) ) {
|
if (!Array.isArray(keys)) {
|
||||||
keys = Array.prototype.slice.call(arguments, 1);
|
keys = Array.prototype.slice.call(arguments, 1);
|
||||||
}
|
}
|
||||||
var k = keys[0];
|
var k = keys[0];
|
||||||
if (keys.length == 1) {
|
if (keys.length === 1) {
|
||||||
return func(obj, k);
|
return func(obj, k);
|
||||||
} else if (keys.length == 2) {
|
} else if (keys.length === 2) {
|
||||||
if (!obj.parents[k] && !createParents) {
|
if (!obj.parents[k] && !createParents) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
obj.parents[k] = obj.parents[k] || [];
|
obj.parents[k] = obj.parents[k] || [];
|
||||||
return exports.process_munge(obj.parents[k], createParents, func, keys.slice(1));
|
return exports.process_munge(obj.parents[k], createParents, func, keys.slice(1));
|
||||||
} else if (keys.length == 3){
|
} else if (keys.length === 3) {
|
||||||
if (!obj.files[k] && !createParents) {
|
if (!obj.files[k] && !createParents) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
@ -115,7 +114,7 @@ exports.process_munge = function process_munge(obj, createParents, func, keys /*
|
|||||||
// base[file][selector][child] += munge[file][selector][child]
|
// base[file][selector][child] += munge[file][selector][child]
|
||||||
// Returns a munge object containing values that exist in munge
|
// Returns a munge object containing values that exist in munge
|
||||||
// but not in base.
|
// but not in base.
|
||||||
exports.increment_munge = function increment_munge(base, munge) {
|
exports.increment_munge = function increment_munge (base, munge) {
|
||||||
var diff = { files: {} };
|
var diff = { files: {} };
|
||||||
|
|
||||||
for (var file in munge.files) {
|
for (var file in munge.files) {
|
||||||
@ -138,7 +137,7 @@ exports.increment_munge = function increment_munge(base, munge) {
|
|||||||
// base[file][selector][child] -= munge[file][selector][child]
|
// base[file][selector][child] -= munge[file][selector][child]
|
||||||
// nodes that reached zero value are removed from base and added to the returned munge
|
// nodes that reached zero value are removed from base and added to the returned munge
|
||||||
// object.
|
// object.
|
||||||
exports.decrement_munge = function decrement_munge(base, munge) {
|
exports.decrement_munge = function decrement_munge (base, munge) {
|
||||||
var zeroed = { files: {} };
|
var zeroed = { files: {} };
|
||||||
|
|
||||||
for (var file in munge.files) {
|
for (var file in munge.files) {
|
||||||
@ -158,6 +157,6 @@ exports.decrement_munge = function decrement_munge(base, munge) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// For better readability where used
|
// For better readability where used
|
||||||
exports.clone_munge = function clone_munge(munge) {
|
exports.clone_munge = function clone_munge (munge) {
|
||||||
return exports.increment_munge({}, munge);
|
return exports.increment_munge({}, munge);
|
||||||
};
|
};
|
||||||
|
259
node_modules/cordova-common/src/ConfigParser/ConfigParser.js
generated
vendored
259
node_modules/cordova-common/src/ConfigParser/ConfigParser.js
generated
vendored
@ -17,24 +17,21 @@
|
|||||||
under the License.
|
under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* jshint sub:true */
|
var et = require('elementtree');
|
||||||
|
var xml = require('../util/xml-helpers');
|
||||||
var et = require('elementtree'),
|
var CordovaError = require('../CordovaError/CordovaError');
|
||||||
xml= require('../util/xml-helpers'),
|
var fs = require('fs');
|
||||||
CordovaError = require('../CordovaError/CordovaError'),
|
var events = require('../events');
|
||||||
fs = require('fs'),
|
|
||||||
events = require('../events');
|
|
||||||
|
|
||||||
|
|
||||||
/** Wraps a config.xml file */
|
/** Wraps a config.xml file */
|
||||||
function ConfigParser(path) {
|
function ConfigParser (path) {
|
||||||
this.path = path;
|
this.path = path;
|
||||||
try {
|
try {
|
||||||
this.doc = xml.parseElementtreeSync(path);
|
this.doc = xml.parseElementtreeSync(path);
|
||||||
this.cdvNamespacePrefix = getCordovaNamespacePrefix(this.doc);
|
this.cdvNamespacePrefix = getCordovaNamespacePrefix(this.doc);
|
||||||
et.register_namespace(this.cdvNamespacePrefix, 'http://cordova.apache.org/ns/1.0');
|
et.register_namespace(this.cdvNamespacePrefix, 'http://cordova.apache.org/ns/1.0');
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('Parsing '+path+' failed');
|
console.error('Parsing ' + path + ' failed');
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
var r = this.doc.getroot();
|
var r = this.doc.getroot();
|
||||||
@ -43,11 +40,11 @@ function ConfigParser(path) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getNodeTextSafe(el) {
|
function getNodeTextSafe (el) {
|
||||||
return el && el.text && el.text.trim();
|
return el && el.text && el.text.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
function findOrCreate(doc, name) {
|
function findOrCreate (doc, name) {
|
||||||
var ret = doc.find(name);
|
var ret = doc.find(name);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
ret = new et.Element(name);
|
ret = new et.Element(name);
|
||||||
@ -56,12 +53,12 @@ function findOrCreate(doc, name) {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCordovaNamespacePrefix(doc){
|
function getCordovaNamespacePrefix (doc) {
|
||||||
var rootAtribs = Object.getOwnPropertyNames(doc.getroot().attrib);
|
var rootAtribs = Object.getOwnPropertyNames(doc.getroot().attrib);
|
||||||
var prefix = 'cdv';
|
var prefix = 'cdv';
|
||||||
for (var j = 0; j < rootAtribs.length; j++ ) {
|
for (var j = 0; j < rootAtribs.length; j++) {
|
||||||
if(rootAtribs[j].indexOf('xmlns:') === 0 &&
|
if (rootAtribs[j].indexOf('xmlns:') === 0 &&
|
||||||
doc.getroot().attrib[rootAtribs[j]] === 'http://cordova.apache.org/ns/1.0'){
|
doc.getroot().attrib[rootAtribs[j]] === 'http://cordova.apache.org/ns/1.0') {
|
||||||
var strings = rootAtribs[j].split(':');
|
var strings = rootAtribs[j].split(':');
|
||||||
prefix = strings[1];
|
prefix = strings[1];
|
||||||
break;
|
break;
|
||||||
@ -76,7 +73,7 @@ function getCordovaNamespacePrefix(doc){
|
|||||||
* @param {Array} elems An array of ElementTree nodes
|
* @param {Array} elems An array of ElementTree nodes
|
||||||
* @return {String}
|
* @return {String}
|
||||||
*/
|
*/
|
||||||
function findElementAttributeValue(attributeName, elems) {
|
function findElementAttributeValue (attributeName, elems) {
|
||||||
|
|
||||||
elems = Array.isArray(elems) ? elems : [ elems ];
|
elems = Array.isArray(elems) ? elems : [ elems ];
|
||||||
|
|
||||||
@ -86,69 +83,69 @@ function findElementAttributeValue(attributeName, elems) {
|
|||||||
return filteredElems.attrib.value;
|
return filteredElems.attrib.value;
|
||||||
}).pop();
|
}).pop();
|
||||||
|
|
||||||
return value ? value : '';
|
return value || '';
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigParser.prototype = {
|
ConfigParser.prototype = {
|
||||||
getAttribute: function(attr) {
|
getAttribute: function (attr) {
|
||||||
return this.doc.getroot().attrib[attr];
|
return this.doc.getroot().attrib[attr];
|
||||||
},
|
},
|
||||||
|
|
||||||
packageName: function(id) {
|
packageName: function (id) {
|
||||||
return this.getAttribute('id');
|
return this.getAttribute('id');
|
||||||
},
|
},
|
||||||
setPackageName: function(id) {
|
setPackageName: function (id) {
|
||||||
this.doc.getroot().attrib['id'] = id;
|
this.doc.getroot().attrib['id'] = id;
|
||||||
},
|
},
|
||||||
android_packageName: function() {
|
android_packageName: function () {
|
||||||
return this.getAttribute('android-packageName');
|
return this.getAttribute('android-packageName');
|
||||||
},
|
},
|
||||||
android_activityName: function() {
|
android_activityName: function () {
|
||||||
return this.getAttribute('android-activityName');
|
return this.getAttribute('android-activityName');
|
||||||
},
|
},
|
||||||
ios_CFBundleIdentifier: function() {
|
ios_CFBundleIdentifier: function () {
|
||||||
return this.getAttribute('ios-CFBundleIdentifier');
|
return this.getAttribute('ios-CFBundleIdentifier');
|
||||||
},
|
},
|
||||||
name: function() {
|
name: function () {
|
||||||
return getNodeTextSafe(this.doc.find('name'));
|
return getNodeTextSafe(this.doc.find('name'));
|
||||||
},
|
},
|
||||||
setName: function(name) {
|
setName: function (name) {
|
||||||
var el = findOrCreate(this.doc, 'name');
|
var el = findOrCreate(this.doc, 'name');
|
||||||
el.text = name;
|
el.text = name;
|
||||||
},
|
},
|
||||||
shortName: function() {
|
shortName: function () {
|
||||||
return this.doc.find('name').attrib['short'] || this.name();
|
return this.doc.find('name').attrib['short'] || this.name();
|
||||||
},
|
},
|
||||||
setShortName: function(shortname) {
|
setShortName: function (shortname) {
|
||||||
var el = findOrCreate(this.doc, 'name');
|
var el = findOrCreate(this.doc, 'name');
|
||||||
if (!el.text) {
|
if (!el.text) {
|
||||||
el.text = shortname;
|
el.text = shortname;
|
||||||
}
|
}
|
||||||
el.attrib['short'] = shortname;
|
el.attrib['short'] = shortname;
|
||||||
},
|
},
|
||||||
description: function() {
|
description: function () {
|
||||||
return getNodeTextSafe(this.doc.find('description'));
|
return getNodeTextSafe(this.doc.find('description'));
|
||||||
},
|
},
|
||||||
setDescription: function(text) {
|
setDescription: function (text) {
|
||||||
var el = findOrCreate(this.doc, 'description');
|
var el = findOrCreate(this.doc, 'description');
|
||||||
el.text = text;
|
el.text = text;
|
||||||
},
|
},
|
||||||
version: function() {
|
version: function () {
|
||||||
return this.getAttribute('version');
|
return this.getAttribute('version');
|
||||||
},
|
},
|
||||||
windows_packageVersion: function() {
|
windows_packageVersion: function () {
|
||||||
return this.getAttribute('windows-packageVersion');
|
return this.getAttribute('windows-packageVersion');
|
||||||
},
|
},
|
||||||
android_versionCode: function() {
|
android_versionCode: function () {
|
||||||
return this.getAttribute('android-versionCode');
|
return this.getAttribute('android-versionCode');
|
||||||
},
|
},
|
||||||
ios_CFBundleVersion: function() {
|
ios_CFBundleVersion: function () {
|
||||||
return this.getAttribute('ios-CFBundleVersion');
|
return this.getAttribute('ios-CFBundleVersion');
|
||||||
},
|
},
|
||||||
setVersion: function(value) {
|
setVersion: function (value) {
|
||||||
this.doc.getroot().attrib['version'] = value;
|
this.doc.getroot().attrib['version'] = value;
|
||||||
},
|
},
|
||||||
author: function() {
|
author: function () {
|
||||||
return getNodeTextSafe(this.doc.find('author'));
|
return getNodeTextSafe(this.doc.find('author'));
|
||||||
},
|
},
|
||||||
getGlobalPreference: function (name) {
|
getGlobalPreference: function (name) {
|
||||||
@ -166,7 +163,7 @@ ConfigParser.prototype = {
|
|||||||
getPlatformPreference: function (name, platform) {
|
getPlatformPreference: function (name, platform) {
|
||||||
return findElementAttributeValue(name, this.doc.findall('platform[@name=\'' + platform + '\']/preference'));
|
return findElementAttributeValue(name, this.doc.findall('platform[@name=\'' + platform + '\']/preference'));
|
||||||
},
|
},
|
||||||
getPreference: function(name, platform) {
|
getPreference: function (name, platform) {
|
||||||
|
|
||||||
var platformPreference = '';
|
var platformPreference = '';
|
||||||
|
|
||||||
@ -174,7 +171,7 @@ ConfigParser.prototype = {
|
|||||||
platformPreference = this.getPlatformPreference(name, platform);
|
platformPreference = this.getPlatformPreference(name, platform);
|
||||||
}
|
}
|
||||||
|
|
||||||
return platformPreference ? platformPreference : this.getGlobalPreference(name);
|
return platformPreference || this.getGlobalPreference(name);
|
||||||
|
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
@ -184,11 +181,11 @@ ConfigParser.prototype = {
|
|||||||
* "icon" and "splash" currently supported.
|
* "icon" and "splash" currently supported.
|
||||||
* @return {Array} Resources for the platform specified.
|
* @return {Array} Resources for the platform specified.
|
||||||
*/
|
*/
|
||||||
getStaticResources: function(platform, resourceName) {
|
getStaticResources: function (platform, resourceName) {
|
||||||
var ret = [],
|
var ret = [];
|
||||||
staticResources = [];
|
var staticResources = [];
|
||||||
if (platform) { // platform specific icons
|
if (platform) { // platform specific icons
|
||||||
this.doc.findall('platform[@name=\'' + platform + '\']/' + resourceName).forEach(function(elt){
|
this.doc.findall('platform[@name=\'' + platform + '\']/' + resourceName).forEach(function (elt) {
|
||||||
elt.platform = platform; // mark as platform specific resource
|
elt.platform = platform; // mark as platform specific resource
|
||||||
staticResources.push(elt);
|
staticResources.push(elt);
|
||||||
});
|
});
|
||||||
@ -201,7 +198,7 @@ ConfigParser.prototype = {
|
|||||||
var res = {};
|
var res = {};
|
||||||
res.src = elt.attrib.src;
|
res.src = elt.attrib.src;
|
||||||
res.target = elt.attrib.target || undefined;
|
res.target = elt.attrib.target || undefined;
|
||||||
res.density = elt.attrib['density'] || elt.attrib[that.cdvNamespacePrefix+':density'] || elt.attrib['gap:density'];
|
res.density = elt.attrib['density'] || elt.attrib[that.cdvNamespacePrefix + ':density'] || elt.attrib['gap:density'];
|
||||||
res.platform = elt.platform || null; // null means icon represents default icon (shared between platforms)
|
res.platform = elt.platform || null; // null means icon represents default icon (shared between platforms)
|
||||||
res.width = +elt.attrib.width || undefined;
|
res.width = +elt.attrib.width || undefined;
|
||||||
res.height = +elt.attrib.height || undefined;
|
res.height = +elt.attrib.height || undefined;
|
||||||
@ -219,13 +216,13 @@ ConfigParser.prototype = {
|
|||||||
* @param {number} height Height of resource.
|
* @param {number} height Height of resource.
|
||||||
* @return {Resource} Resource object or null if not found.
|
* @return {Resource} Resource object or null if not found.
|
||||||
*/
|
*/
|
||||||
ret.getBySize = function(width, height) {
|
ret.getBySize = function (width, height) {
|
||||||
return ret.filter(function(res) {
|
return ret.filter(function (res) {
|
||||||
if (!res.width && !res.height) {
|
if (!res.width && !res.height) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return ((!res.width || (width == res.width)) &&
|
return ((!res.width || (width === res.width)) &&
|
||||||
(!res.height || (height == res.height)));
|
(!res.height || (height === res.height)));
|
||||||
})[0] || null;
|
})[0] || null;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -234,14 +231,14 @@ ConfigParser.prototype = {
|
|||||||
* @param {string} density Density of resource.
|
* @param {string} density Density of resource.
|
||||||
* @return {Resource} Resource object or null if not found.
|
* @return {Resource} Resource object or null if not found.
|
||||||
*/
|
*/
|
||||||
ret.getByDensity = function(density) {
|
ret.getByDensity = function (density) {
|
||||||
return ret.filter(function(res) {
|
return ret.filter(function (res) {
|
||||||
return res.density == density;
|
return res.density === density;
|
||||||
})[0] || null;
|
})[0] || null;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Returns default icons */
|
/** Returns default icons */
|
||||||
ret.getDefault = function() {
|
ret.getDefault = function () {
|
||||||
return ret.defaultResource;
|
return ret.defaultResource;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -253,7 +250,7 @@ ConfigParser.prototype = {
|
|||||||
* @param {string} platform Platform name
|
* @param {string} platform Platform name
|
||||||
* @return {Resource[]} Array of icon objects.
|
* @return {Resource[]} Array of icon objects.
|
||||||
*/
|
*/
|
||||||
getIcons: function(platform) {
|
getIcons: function (platform) {
|
||||||
return this.getStaticResources(platform, 'icon');
|
return this.getStaticResources(platform, 'icon');
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -262,20 +259,22 @@ ConfigParser.prototype = {
|
|||||||
* @param {string} platform Platform name
|
* @param {string} platform Platform name
|
||||||
* @return {Resource[]} Array of Splash objects.
|
* @return {Resource[]} Array of Splash objects.
|
||||||
*/
|
*/
|
||||||
getSplashScreens: function(platform) {
|
getSplashScreens: function (platform) {
|
||||||
return this.getStaticResources(platform, 'splash');
|
return this.getStaticResources(platform, 'splash');
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns all resource-files for a specific platform.
|
* Returns all resource-files for a specific platform.
|
||||||
* @param {string} platform Platform name
|
* @param {string} platform Platform name
|
||||||
|
* @param {boolean} includeGlobal Whether to return resource-files at the
|
||||||
|
* root level.
|
||||||
* @return {Resource[]} Array of resource file objects.
|
* @return {Resource[]} Array of resource file objects.
|
||||||
*/
|
*/
|
||||||
getFileResources: function(platform) {
|
getFileResources: function (platform, includeGlobal) {
|
||||||
var fileResources = [];
|
var fileResources = [];
|
||||||
|
|
||||||
if (platform) { // platform specific resources
|
if (platform) { // platform specific resources
|
||||||
fileResources = this.doc.findall('platform[@name=\'' + platform + '\']/resource-file').map(function(tag) {
|
fileResources = this.doc.findall('platform[@name=\'' + platform + '\']/resource-file').map(function (tag) {
|
||||||
return {
|
return {
|
||||||
platform: platform,
|
platform: platform,
|
||||||
src: tag.attrib.src,
|
src: tag.attrib.src,
|
||||||
@ -287,6 +286,19 @@ ConfigParser.prototype = {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (includeGlobal) {
|
||||||
|
this.doc.findall('resource-file').forEach(function (tag) {
|
||||||
|
fileResources.push({
|
||||||
|
platform: platform || null,
|
||||||
|
src: tag.attrib.src,
|
||||||
|
target: tag.attrib.target,
|
||||||
|
versions: tag.attrib.versions,
|
||||||
|
deviceTarget: tag.attrib['device-target'],
|
||||||
|
arch: tag.attrib.arch
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return fileResources;
|
return fileResources;
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -296,23 +308,23 @@ ConfigParser.prototype = {
|
|||||||
* @param {Array} platforms Platforms to look for scripts into (root scripts will be included as well).
|
* @param {Array} platforms Platforms to look for scripts into (root scripts will be included as well).
|
||||||
* @return {Array} Script elements.
|
* @return {Array} Script elements.
|
||||||
*/
|
*/
|
||||||
getHookScripts: function(hook, platforms) {
|
getHookScripts: function (hook, platforms) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var scriptElements = self.doc.findall('./hook');
|
var scriptElements = self.doc.findall('./hook');
|
||||||
|
|
||||||
if(platforms) {
|
if (platforms) {
|
||||||
platforms.forEach(function (platform) {
|
platforms.forEach(function (platform) {
|
||||||
scriptElements = scriptElements.concat(self.doc.findall('./platform[@name="' + platform + '"]/hook'));
|
scriptElements = scriptElements.concat(self.doc.findall('./platform[@name="' + platform + '"]/hook'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function filterScriptByHookType(el) {
|
function filterScriptByHookType (el) {
|
||||||
return el.attrib.src && el.attrib.type && el.attrib.type.toLowerCase() === hook;
|
return el.attrib.src && el.attrib.type && el.attrib.type.toLowerCase() === hook;
|
||||||
}
|
}
|
||||||
|
|
||||||
return scriptElements.filter(filterScriptByHookType);
|
return scriptElements.filter(filterScriptByHookType);
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* Returns a list of plugin (IDs).
|
* Returns a list of plugin (IDs).
|
||||||
*
|
*
|
||||||
* This function also returns any plugin's that
|
* This function also returns any plugin's that
|
||||||
@ -321,13 +333,13 @@ ConfigParser.prototype = {
|
|||||||
*/
|
*/
|
||||||
getPluginIdList: function () {
|
getPluginIdList: function () {
|
||||||
var plugins = this.doc.findall('plugin');
|
var plugins = this.doc.findall('plugin');
|
||||||
var result = plugins.map(function(plugin){
|
var result = plugins.map(function (plugin) {
|
||||||
return plugin.attrib.name;
|
return plugin.attrib.name;
|
||||||
});
|
});
|
||||||
var features = this.doc.findall('feature');
|
var features = this.doc.findall('feature');
|
||||||
features.forEach(function(element ){
|
features.forEach(function (element) {
|
||||||
var idTag = element.find('./param[@name="id"]');
|
var idTag = element.find('./param[@name="id"]');
|
||||||
if(idTag){
|
if (idTag) {
|
||||||
result.push(idTag.attrib.value);
|
result.push(idTag.attrib.value);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -356,9 +368,9 @@ ConfigParser.prototype = {
|
|||||||
// support arbitrary object as variables source
|
// support arbitrary object as variables source
|
||||||
if (variables && typeof variables === 'object' && !Array.isArray(variables)) {
|
if (variables && typeof variables === 'object' && !Array.isArray(variables)) {
|
||||||
variables = Object.keys(variables)
|
variables = Object.keys(variables)
|
||||||
.map(function (variableName) {
|
.map(function (variableName) {
|
||||||
return {name: variableName, value: variables[variableName]};
|
return {name: variableName, value: variables[variableName]};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (variables) {
|
if (variables) {
|
||||||
@ -378,15 +390,15 @@ ConfigParser.prototype = {
|
|||||||
* @param {String} id
|
* @param {String} id
|
||||||
* @returns {object} plugin including any variables
|
* @returns {object} plugin including any variables
|
||||||
*/
|
*/
|
||||||
getPlugin: function(id){
|
getPlugin: function (id) {
|
||||||
if(!id){
|
if (!id) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
var pluginElement = this.doc.find('./plugin/[@name="' + id + '"]');
|
var pluginElement = this.doc.find('./plugin/[@name="' + id + '"]');
|
||||||
if (null === pluginElement) {
|
if (pluginElement === null) {
|
||||||
var legacyFeature = this.doc.find('./feature/param[@name="id"][@value="' + id + '"]/..');
|
var legacyFeature = this.doc.find('./feature/param[@name="id"][@value="' + id + '"]/..');
|
||||||
if(legacyFeature){
|
if (legacyFeature) {
|
||||||
events.emit('log', 'Found deprecated feature entry for ' + id +' in config.xml.');
|
events.emit('log', 'Found deprecated feature entry for ' + id + ' in config.xml.');
|
||||||
return featureToPlugin(legacyFeature);
|
return featureToPlugin(legacyFeature);
|
||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
@ -397,10 +409,10 @@ ConfigParser.prototype = {
|
|||||||
plugin.spec = pluginElement.attrib.spec || pluginElement.attrib.src || pluginElement.attrib.version;
|
plugin.spec = pluginElement.attrib.spec || pluginElement.attrib.src || pluginElement.attrib.version;
|
||||||
plugin.variables = {};
|
plugin.variables = {};
|
||||||
var variableElements = pluginElement.findall('variable');
|
var variableElements = pluginElement.findall('variable');
|
||||||
variableElements.forEach(function(varElement){
|
variableElements.forEach(function (varElement) {
|
||||||
var name = varElement.attrib.name;
|
var name = varElement.attrib.name;
|
||||||
var value = varElement.attrib.value;
|
var value = varElement.attrib.value;
|
||||||
if(name){
|
if (name) {
|
||||||
plugin.variables[name] = value;
|
plugin.variables[name] = value;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -415,8 +427,8 @@ ConfigParser.prototype = {
|
|||||||
* @function
|
* @function
|
||||||
* @param id name of the plugin
|
* @param id name of the plugin
|
||||||
*/
|
*/
|
||||||
removePlugin: function(id){
|
removePlugin: function (id) {
|
||||||
if(id){
|
if (id) {
|
||||||
var plugins = this.doc.findall('./plugin/[@name="' + id + '"]')
|
var plugins = this.doc.findall('./plugin/[@name="' + id + '"]')
|
||||||
.concat(this.doc.findall('./feature/param[@name="id"][@value="' + id + '"]/..'));
|
.concat(this.doc.findall('./feature/param[@name="id"][@value="' + id + '"]/..'));
|
||||||
var children = this.doc.getroot().getchildren();
|
var children = this.doc.getroot().getchildren();
|
||||||
@ -430,7 +442,7 @@ ConfigParser.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// Add any element to the root
|
// Add any element to the root
|
||||||
addElement: function(name, attributes) {
|
addElement: function (name, attributes) {
|
||||||
var el = et.Element(name);
|
var el = et.Element(name);
|
||||||
for (var a in attributes) {
|
for (var a in attributes) {
|
||||||
el.attrib[a] = attributes[a];
|
el.attrib[a] = attributes[a];
|
||||||
@ -443,11 +455,11 @@ ConfigParser.prototype = {
|
|||||||
* @param {String} name the engine name
|
* @param {String} name the engine name
|
||||||
* @param {String} spec engine source location or version (optional)
|
* @param {String} spec engine source location or version (optional)
|
||||||
*/
|
*/
|
||||||
addEngine: function(name, spec){
|
addEngine: function (name, spec) {
|
||||||
if(!name) return;
|
if (!name) return;
|
||||||
var el = et.Element('engine');
|
var el = et.Element('engine');
|
||||||
el.attrib.name = name;
|
el.attrib.name = name;
|
||||||
if(spec){
|
if (spec) {
|
||||||
el.attrib.spec = spec;
|
el.attrib.spec = spec;
|
||||||
}
|
}
|
||||||
this.doc.getroot().append(el);
|
this.doc.getroot().append(el);
|
||||||
@ -456,52 +468,54 @@ ConfigParser.prototype = {
|
|||||||
* Removes all the engines with given name
|
* Removes all the engines with given name
|
||||||
* @param {String} name the engine name.
|
* @param {String} name the engine name.
|
||||||
*/
|
*/
|
||||||
removeEngine: function(name){
|
removeEngine: function (name) {
|
||||||
var engines = this.doc.findall('./engine/[@name="' +name+'"]');
|
var engines = this.doc.findall('./engine/[@name="' + name + '"]');
|
||||||
for(var i=0; i < engines.length; i++){
|
for (var i = 0; i < engines.length; i++) {
|
||||||
var children = this.doc.getroot().getchildren();
|
var children = this.doc.getroot().getchildren();
|
||||||
var idx = children.indexOf(engines[i]);
|
var idx = children.indexOf(engines[i]);
|
||||||
if(idx > -1){
|
if (idx > -1) {
|
||||||
children.splice(idx,1);
|
children.splice(idx, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getEngines: function(){
|
getEngines: function () {
|
||||||
var engines = this.doc.findall('./engine');
|
var engines = this.doc.findall('./engine');
|
||||||
return engines.map(function(engine){
|
return engines.map(function (engine) {
|
||||||
var spec = engine.attrib.spec || engine.attrib.version;
|
var spec = engine.attrib.spec || engine.attrib.version;
|
||||||
return {
|
return {
|
||||||
'name': engine.attrib.name,
|
'name': engine.attrib.name,
|
||||||
'spec': spec ? spec : null
|
'spec': spec || null
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
/* Get all the access tags */
|
/* Get all the access tags */
|
||||||
getAccesses: function() {
|
getAccesses: function () {
|
||||||
var accesses = this.doc.findall('./access');
|
var accesses = this.doc.findall('./access');
|
||||||
return accesses.map(function(access){
|
return accesses.map(function (access) {
|
||||||
var minimum_tls_version = access.attrib['minimum-tls-version']; /* String */
|
var minimum_tls_version = access.attrib['minimum-tls-version']; /* String */
|
||||||
var requires_forward_secrecy = access.attrib['requires-forward-secrecy']; /* Boolean */
|
var requires_forward_secrecy = access.attrib['requires-forward-secrecy']; /* Boolean */
|
||||||
var requires_certificate_transparency = access.attrib['requires-certificate-transparency']; /* Boolean */
|
var requires_certificate_transparency = access.attrib['requires-certificate-transparency']; /* Boolean */
|
||||||
var allows_arbitrary_loads_in_web_content = access.attrib['allows-arbitrary-loads-in-web-content']; /* Boolean */
|
var allows_arbitrary_loads_in_web_content = access.attrib['allows-arbitrary-loads-in-web-content']; /* Boolean */
|
||||||
var allows_arbitrary_loads_in_media = access.attrib['allows-arbitrary-loads-in-media']; /* Boolean */
|
var allows_arbitrary_loads_in_media = access.attrib['allows-arbitrary-loads-in-media']; /* Boolean (DEPRECATED) */
|
||||||
|
var allows_arbitrary_loads_for_media = access.attrib['allows-arbitrary-loads-for-media']; /* Boolean */
|
||||||
var allows_local_networking = access.attrib['allows-local-networking']; /* Boolean */
|
var allows_local_networking = access.attrib['allows-local-networking']; /* Boolean */
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'origin': access.attrib.origin,
|
'origin': access.attrib.origin,
|
||||||
'minimum_tls_version': minimum_tls_version,
|
'minimum_tls_version': minimum_tls_version,
|
||||||
'requires_forward_secrecy' : requires_forward_secrecy,
|
'requires_forward_secrecy': requires_forward_secrecy,
|
||||||
'requires_certificate_transparency' : requires_certificate_transparency,
|
'requires_certificate_transparency': requires_certificate_transparency,
|
||||||
'allows_arbitrary_loads_in_web_content' : allows_arbitrary_loads_in_web_content,
|
'allows_arbitrary_loads_in_web_content': allows_arbitrary_loads_in_web_content,
|
||||||
'allows_arbitrary_loads_in_media' : allows_arbitrary_loads_in_media,
|
'allows_arbitrary_loads_in_media': allows_arbitrary_loads_in_media,
|
||||||
'allows_local_networking' : allows_local_networking
|
'allows_arbitrary_loads_for_media': allows_arbitrary_loads_for_media,
|
||||||
|
'allows_local_networking': allows_local_networking
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
/* Get all the allow-navigation tags */
|
/* Get all the allow-navigation tags */
|
||||||
getAllowNavigations: function() {
|
getAllowNavigations: function () {
|
||||||
var allow_navigations = this.doc.findall('./allow-navigation');
|
var allow_navigations = this.doc.findall('./allow-navigation');
|
||||||
return allow_navigations.map(function(allow_navigation){
|
return allow_navigations.map(function (allow_navigation) {
|
||||||
var minimum_tls_version = allow_navigation.attrib['minimum-tls-version']; /* String */
|
var minimum_tls_version = allow_navigation.attrib['minimum-tls-version']; /* String */
|
||||||
var requires_forward_secrecy = allow_navigation.attrib['requires-forward-secrecy']; /* Boolean */
|
var requires_forward_secrecy = allow_navigation.attrib['requires-forward-secrecy']; /* Boolean */
|
||||||
var requires_certificate_transparency = allow_navigation.attrib['requires-certificate-transparency']; /* Boolean */
|
var requires_certificate_transparency = allow_navigation.attrib['requires-certificate-transparency']; /* Boolean */
|
||||||
@ -509,45 +523,68 @@ ConfigParser.prototype = {
|
|||||||
return {
|
return {
|
||||||
'href': allow_navigation.attrib.href,
|
'href': allow_navigation.attrib.href,
|
||||||
'minimum_tls_version': minimum_tls_version,
|
'minimum_tls_version': minimum_tls_version,
|
||||||
'requires_forward_secrecy' : requires_forward_secrecy,
|
'requires_forward_secrecy': requires_forward_secrecy,
|
||||||
'requires_certificate_transparency' : requires_certificate_transparency
|
'requires_certificate_transparency': requires_certificate_transparency
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
/* Get all the allow-intent tags */
|
/* Get all the allow-intent tags */
|
||||||
getAllowIntents: function() {
|
getAllowIntents: function () {
|
||||||
var allow_intents = this.doc.findall('./allow-intent');
|
var allow_intents = this.doc.findall('./allow-intent');
|
||||||
return allow_intents.map(function(allow_intent){
|
return allow_intents.map(function (allow_intent) {
|
||||||
return {
|
return {
|
||||||
'href': allow_intent.attrib.href
|
'href': allow_intent.attrib.href
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
/* Get all edit-config tags */
|
/* Get all edit-config tags */
|
||||||
getEditConfigs: function(platform) {
|
getEditConfigs: function (platform) {
|
||||||
var platform_tag = this.doc.find('./platform[@name="' + platform + '"]');
|
var platform_tag = this.doc.find('./platform[@name="' + platform + '"]');
|
||||||
var platform_edit_configs = platform_tag ? platform_tag.findall('edit-config') : [];
|
var platform_edit_configs = platform_tag ? platform_tag.findall('edit-config') : [];
|
||||||
|
|
||||||
var edit_configs = this.doc.findall('edit-config').concat(platform_edit_configs);
|
var edit_configs = this.doc.findall('edit-config').concat(platform_edit_configs);
|
||||||
|
|
||||||
return edit_configs.map(function(tag) {
|
return edit_configs.map(function (tag) {
|
||||||
var editConfig =
|
var editConfig =
|
||||||
{
|
{
|
||||||
file : tag.attrib['file'],
|
file: tag.attrib['file'],
|
||||||
target : tag.attrib['target'],
|
target: tag.attrib['target'],
|
||||||
mode : tag.attrib['mode'],
|
mode: tag.attrib['mode'],
|
||||||
id : 'config.xml',
|
id: 'config.xml',
|
||||||
xmls : tag.getchildren()
|
xmls: tag.getchildren()
|
||||||
};
|
};
|
||||||
return editConfig;
|
return editConfig;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
write:function() {
|
|
||||||
|
/* Get all config-file tags */
|
||||||
|
getConfigFiles: function (platform) {
|
||||||
|
var platform_tag = this.doc.find('./platform[@name="' + platform + '"]');
|
||||||
|
var platform_config_files = platform_tag ? platform_tag.findall('config-file') : [];
|
||||||
|
|
||||||
|
var config_files = this.doc.findall('config-file').concat(platform_config_files);
|
||||||
|
|
||||||
|
return config_files.map(function (tag) {
|
||||||
|
var configFile =
|
||||||
|
{
|
||||||
|
target: tag.attrib['target'],
|
||||||
|
parent: tag.attrib['parent'],
|
||||||
|
after: tag.attrib['after'],
|
||||||
|
xmls: tag.getchildren(),
|
||||||
|
// To support demuxing via versions
|
||||||
|
versions: tag.attrib['versions'],
|
||||||
|
deviceTarget: tag.attrib['device-target']
|
||||||
|
};
|
||||||
|
return configFile;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
write: function () {
|
||||||
fs.writeFileSync(this.path, this.doc.write({indent: 4}), 'utf-8');
|
fs.writeFileSync(this.path, this.doc.write({indent: 4}), 'utf-8');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function featureToPlugin(featureElement) {
|
function featureToPlugin (featureElement) {
|
||||||
var plugin = {};
|
var plugin = {};
|
||||||
plugin.variables = [];
|
plugin.variables = [];
|
||||||
var pluginVersion,
|
var pluginVersion,
|
||||||
|
14
node_modules/cordova-common/src/CordovaCheck.js
generated
vendored
14
node_modules/cordova-common/src/CordovaCheck.js
generated
vendored
@ -17,10 +17,10 @@
|
|||||||
under the License.
|
under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var fs = require('fs'),
|
var fs = require('fs');
|
||||||
path = require('path');
|
var path = require('path');
|
||||||
|
|
||||||
function isRootDir(dir) {
|
function isRootDir (dir) {
|
||||||
if (fs.existsSync(path.join(dir, 'www'))) {
|
if (fs.existsSync(path.join(dir, 'www'))) {
|
||||||
if (fs.existsSync(path.join(dir, 'config.xml'))) {
|
if (fs.existsSync(path.join(dir, 'config.xml'))) {
|
||||||
// For sure is.
|
// For sure is.
|
||||||
@ -41,12 +41,12 @@ function isRootDir(dir) {
|
|||||||
// Runs up the directory chain looking for a .cordova directory.
|
// Runs up the directory chain looking for a .cordova directory.
|
||||||
// IF it is found we are in a Cordova project.
|
// IF it is found we are in a Cordova project.
|
||||||
// Omit argument to use CWD.
|
// Omit argument to use CWD.
|
||||||
function isCordova(dir) {
|
function isCordova (dir) {
|
||||||
if (!dir) {
|
if (!dir) {
|
||||||
// Prefer PWD over cwd so that symlinked dirs within your PWD work correctly (CB-5687).
|
// Prefer PWD over cwd so that symlinked dirs within your PWD work correctly (CB-5687).
|
||||||
var pwd = process.env.PWD;
|
var pwd = process.env.PWD;
|
||||||
var cwd = process.cwd();
|
var cwd = process.cwd();
|
||||||
if (pwd && pwd != cwd && pwd != 'undefined') {
|
if (pwd && pwd !== cwd && pwd !== 'undefined') {
|
||||||
return isCordova(pwd) || isCordova(cwd);
|
return isCordova(pwd) || isCordova(cwd);
|
||||||
}
|
}
|
||||||
return isCordova(cwd);
|
return isCordova(cwd);
|
||||||
@ -62,7 +62,7 @@ function isCordova(dir) {
|
|||||||
}
|
}
|
||||||
var parentDir = path.normalize(path.join(dir, '..'));
|
var parentDir = path.normalize(path.join(dir, '..'));
|
||||||
// Detect fs root.
|
// Detect fs root.
|
||||||
if (parentDir == dir) {
|
if (parentDir === dir) {
|
||||||
return bestReturnValueSoFar;
|
return bestReturnValueSoFar;
|
||||||
}
|
}
|
||||||
dir = parentDir;
|
dir = parentDir;
|
||||||
@ -72,5 +72,5 @@ function isCordova(dir) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
findProjectRoot : isCordova
|
findProjectRoot: isCordova
|
||||||
};
|
};
|
||||||
|
25
node_modules/cordova-common/src/CordovaError/CordovaError.js
generated
vendored
25
node_modules/cordova-common/src/CordovaError/CordovaError.js
generated
vendored
@ -17,7 +17,7 @@
|
|||||||
under the License.
|
under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* jshint proto:true */
|
/* eslint no-proto: 0 */
|
||||||
|
|
||||||
var EOL = require('os').EOL;
|
var EOL = require('os').EOL;
|
||||||
|
|
||||||
@ -30,7 +30,7 @@ var EOL = require('os').EOL;
|
|||||||
* @param {CordovaExternalToolErrorContext} [context] External tool error context object
|
* @param {CordovaExternalToolErrorContext} [context] External tool error context object
|
||||||
* @constructor
|
* @constructor
|
||||||
*/
|
*/
|
||||||
function CordovaError(message, code, context) {
|
function CordovaError (message, code, context) {
|
||||||
Error.captureStackTrace(this, this.constructor);
|
Error.captureStackTrace(this, this.constructor);
|
||||||
this.name = this.constructor.name;
|
this.name = this.constructor.name;
|
||||||
this.message = message;
|
this.message = message;
|
||||||
@ -47,10 +47,10 @@ CordovaError.EXTERNAL_TOOL_ERROR = 1;
|
|||||||
* Translates instance's error code number into error code name, e.g. 0 -> UNKNOWN_ERROR
|
* Translates instance's error code number into error code name, e.g. 0 -> UNKNOWN_ERROR
|
||||||
* @returns {string} Error code string name
|
* @returns {string} Error code string name
|
||||||
*/
|
*/
|
||||||
CordovaError.prototype.getErrorCodeName = function() {
|
CordovaError.prototype.getErrorCodeName = function () {
|
||||||
for(var key in CordovaError) {
|
for (var key in CordovaError) {
|
||||||
if(CordovaError.hasOwnProperty(key)) {
|
if (CordovaError.hasOwnProperty(key)) {
|
||||||
if(CordovaError[key] === this.code) {
|
if (CordovaError[key] === this.code) {
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -63,16 +63,17 @@ CordovaError.prototype.getErrorCodeName = function() {
|
|||||||
* details including information about error code name and context
|
* details including information about error code name and context
|
||||||
* @return {String} Stringified error representation
|
* @return {String} Stringified error representation
|
||||||
*/
|
*/
|
||||||
CordovaError.prototype.toString = function(isVerbose) {
|
CordovaError.prototype.toString = function (isVerbose) {
|
||||||
var message = '', codePrefix = '';
|
var message = '';
|
||||||
|
var codePrefix = '';
|
||||||
|
|
||||||
if(this.code !== CordovaError.UNKNOWN_ERROR) {
|
if (this.code !== CordovaError.UNKNOWN_ERROR) {
|
||||||
codePrefix = 'code: ' + this.code + (isVerbose ? (' (' + this.getErrorCodeName() + ')') : '') + ' ';
|
codePrefix = 'code: ' + this.code + (isVerbose ? (' (' + this.getErrorCodeName() + ')') : '') + ' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this.code === CordovaError.EXTERNAL_TOOL_ERROR) {
|
if (this.code === CordovaError.EXTERNAL_TOOL_ERROR) {
|
||||||
if(typeof this.context !== 'undefined') {
|
if (typeof this.context !== 'undefined') {
|
||||||
if(isVerbose) {
|
if (isVerbose) {
|
||||||
message = codePrefix + EOL + this.context.toString(isVerbose) + '\n failed with an error: ' +
|
message = codePrefix + EOL + this.context.toString(isVerbose) + '\n failed with an error: ' +
|
||||||
this.message + EOL + 'Stack trace: ' + this.stack;
|
this.message + EOL + 'Stack trace: ' + this.stack;
|
||||||
} else {
|
} else {
|
||||||
|
6
node_modules/cordova-common/src/CordovaError/CordovaExternalToolErrorContext.js
generated
vendored
6
node_modules/cordova-common/src/CordovaError/CordovaExternalToolErrorContext.js
generated
vendored
@ -27,7 +27,7 @@ var path = require('path');
|
|||||||
* @param {String} [cwd] Command working directory
|
* @param {String} [cwd] Command working directory
|
||||||
* @constructor
|
* @constructor
|
||||||
*/
|
*/
|
||||||
function CordovaExternalToolErrorContext(cmd, args, cwd) {
|
function CordovaExternalToolErrorContext (cmd, args, cwd) {
|
||||||
this.cmd = cmd;
|
this.cmd = cmd;
|
||||||
// Helper field for readability
|
// Helper field for readability
|
||||||
this.cmdShortName = path.basename(cmd);
|
this.cmdShortName = path.basename(cmd);
|
||||||
@ -35,8 +35,8 @@ function CordovaExternalToolErrorContext(cmd, args, cwd) {
|
|||||||
this.cwd = cwd;
|
this.cwd = cwd;
|
||||||
}
|
}
|
||||||
|
|
||||||
CordovaExternalToolErrorContext.prototype.toString = function(isVerbose) {
|
CordovaExternalToolErrorContext.prototype.toString = function (isVerbose) {
|
||||||
if(isVerbose) {
|
if (isVerbose) {
|
||||||
return 'External tool \'' + this.cmdShortName + '\'' +
|
return 'External tool \'' + this.cmdShortName + '\'' +
|
||||||
'\nCommand full path: ' + this.cmd + '\nCommand args: ' + this.args +
|
'\nCommand full path: ' + this.cmd + '\nCommand args: ' + this.args +
|
||||||
(typeof this.cwd !== 'undefined' ? '\nCommand cwd: ' + this.cwd : '');
|
(typeof this.cwd !== 'undefined' ? '\nCommand cwd: ' + this.cwd : '');
|
||||||
|
18
node_modules/cordova-common/src/CordovaLogger.js
generated
vendored
18
node_modules/cordova-common/src/CordovaLogger.js
generated
vendored
@ -41,11 +41,11 @@ function CordovaLogger () {
|
|||||||
this.stderrCursor = ansi(this.stderr);
|
this.stderrCursor = ansi(this.stderr);
|
||||||
|
|
||||||
this.addLevel('verbose', 1000, 'grey');
|
this.addLevel('verbose', 1000, 'grey');
|
||||||
this.addLevel('normal' , 2000);
|
this.addLevel('normal', 2000);
|
||||||
this.addLevel('warn' , 2000, 'yellow');
|
this.addLevel('warn', 2000, 'yellow');
|
||||||
this.addLevel('info' , 3000, 'blue');
|
this.addLevel('info', 3000, 'blue');
|
||||||
this.addLevel('error' , 5000, 'red');
|
this.addLevel('error', 5000, 'red');
|
||||||
this.addLevel('results' , 10000);
|
this.addLevel('results', 10000);
|
||||||
|
|
||||||
this.setLevel('normal');
|
this.setLevel('normal');
|
||||||
}
|
}
|
||||||
@ -82,9 +82,10 @@ CordovaLogger.RESULTS = 'results';
|
|||||||
CordovaLogger.prototype.log = function (logLevel, message) {
|
CordovaLogger.prototype.log = function (logLevel, message) {
|
||||||
// if there is no such logLevel defined, or provided level has
|
// if there is no such logLevel defined, or provided level has
|
||||||
// less severity than active level, then just ignore this call and return
|
// less severity than active level, then just ignore this call and return
|
||||||
if (!this.levels[logLevel] || this.levels[logLevel] < this.levels[this.logLevel])
|
if (!this.levels[logLevel] || this.levels[logLevel] < this.levels[this.logLevel]) {
|
||||||
// return instance to allow to chain calls
|
// return instance to allow to chain calls
|
||||||
return this;
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
var isVerbose = this.logLevel === 'verbose';
|
var isVerbose = this.logLevel === 'verbose';
|
||||||
var cursor = this.stdoutCursor;
|
var cursor = this.stdoutCursor;
|
||||||
@ -179,8 +180,7 @@ CordovaLogger.prototype.adjustLevel = function (opts) {
|
|||||||
*/
|
*/
|
||||||
CordovaLogger.prototype.subscribe = function (eventEmitter) {
|
CordovaLogger.prototype.subscribe = function (eventEmitter) {
|
||||||
|
|
||||||
if (!(eventEmitter instanceof EventEmitter))
|
if (!(eventEmitter instanceof EventEmitter)) { throw new Error('Subscribe method only accepts an EventEmitter instance as argument'); }
|
||||||
throw new Error('Subscribe method only accepts an EventEmitter instance as argument');
|
|
||||||
|
|
||||||
eventEmitter.on('verbose', this.verbose)
|
eventEmitter.on('verbose', this.verbose)
|
||||||
.on('log', this.normal)
|
.on('log', this.normal)
|
||||||
@ -193,7 +193,7 @@ CordovaLogger.prototype.subscribe = function (eventEmitter) {
|
|||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
function formatError(error, isVerbose) {
|
function formatError (error, isVerbose) {
|
||||||
var message = '';
|
var message = '';
|
||||||
|
|
||||||
if (error instanceof CordovaError) {
|
if (error instanceof CordovaError) {
|
||||||
|
141
node_modules/cordova-common/src/FileUpdater.js
generated
vendored
141
node_modules/cordova-common/src/FileUpdater.js
generated
vendored
@ -17,12 +17,12 @@
|
|||||||
under the License.
|
under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
"use strict";
|
'use strict';
|
||||||
|
|
||||||
var fs = require("fs");
|
var fs = require('fs');
|
||||||
var path = require("path");
|
var path = require('path');
|
||||||
var shell = require("shelljs");
|
var shell = require('shelljs');
|
||||||
var minimatch = require("minimatch");
|
var minimatch = require('minimatch');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logging callback used in the FileUpdater methods.
|
* Logging callback used in the FileUpdater methods.
|
||||||
@ -55,27 +55,27 @@ var minimatch = require("minimatch");
|
|||||||
* @return {boolean} true if any changes were made, or false if the force flag is not set
|
* @return {boolean} true if any changes were made, or false if the force flag is not set
|
||||||
* and everything was up to date
|
* and everything was up to date
|
||||||
*/
|
*/
|
||||||
function updatePathWithStats(sourcePath, sourceStats, targetPath, targetStats, options, log) {
|
function updatePathWithStats (sourcePath, sourceStats, targetPath, targetStats, options, log) {
|
||||||
var updated = false;
|
var updated = false;
|
||||||
|
|
||||||
var rootDir = (options && options.rootDir) || "";
|
var rootDir = (options && options.rootDir) || '';
|
||||||
var copyAll = (options && options.all) || false;
|
var copyAll = (options && options.all) || false;
|
||||||
|
|
||||||
var targetFullPath = path.join(rootDir || "", targetPath);
|
var targetFullPath = path.join(rootDir || '', targetPath);
|
||||||
|
|
||||||
if (sourceStats) {
|
if (sourceStats) {
|
||||||
var sourceFullPath = path.join(rootDir || "", sourcePath);
|
var sourceFullPath = path.join(rootDir || '', sourcePath);
|
||||||
|
|
||||||
if (targetStats) {
|
if (targetStats) {
|
||||||
// The target exists. But if the directory status doesn't match the source, delete it.
|
// The target exists. But if the directory status doesn't match the source, delete it.
|
||||||
if (targetStats.isDirectory() && !sourceStats.isDirectory()) {
|
if (targetStats.isDirectory() && !sourceStats.isDirectory()) {
|
||||||
log("rmdir " + targetPath + " (source is a file)");
|
log('rmdir ' + targetPath + ' (source is a file)');
|
||||||
shell.rm("-rf", targetFullPath);
|
shell.rm('-rf', targetFullPath);
|
||||||
targetStats = null;
|
targetStats = null;
|
||||||
updated = true;
|
updated = true;
|
||||||
} else if (!targetStats.isDirectory() && sourceStats.isDirectory()) {
|
} else if (!targetStats.isDirectory() && sourceStats.isDirectory()) {
|
||||||
log("delete " + targetPath + " (source is a directory)");
|
log('delete ' + targetPath + ' (source is a directory)');
|
||||||
shell.rm("-f", targetFullPath);
|
shell.rm('-f', targetFullPath);
|
||||||
targetStats = null;
|
targetStats = null;
|
||||||
updated = true;
|
updated = true;
|
||||||
}
|
}
|
||||||
@ -84,21 +84,21 @@ function updatePathWithStats(sourcePath, sourceStats, targetPath, targetStats, o
|
|||||||
if (!targetStats) {
|
if (!targetStats) {
|
||||||
if (sourceStats.isDirectory()) {
|
if (sourceStats.isDirectory()) {
|
||||||
// The target directory does not exist, so it should be created.
|
// The target directory does not exist, so it should be created.
|
||||||
log("mkdir " + targetPath);
|
log('mkdir ' + targetPath);
|
||||||
shell.mkdir("-p", targetFullPath);
|
shell.mkdir('-p', targetFullPath);
|
||||||
updated = true;
|
updated = true;
|
||||||
} else if (sourceStats.isFile()) {
|
} else if (sourceStats.isFile()) {
|
||||||
// The target file does not exist, so it should be copied from the source.
|
// The target file does not exist, so it should be copied from the source.
|
||||||
log("copy " + sourcePath + " " + targetPath + (copyAll ? "" : " (new file)"));
|
log('copy ' + sourcePath + ' ' + targetPath + (copyAll ? '' : ' (new file)'));
|
||||||
shell.cp("-f", sourceFullPath, targetFullPath);
|
shell.cp('-f', sourceFullPath, targetFullPath);
|
||||||
updated = true;
|
updated = true;
|
||||||
}
|
}
|
||||||
} else if (sourceStats.isFile() && targetStats.isFile()) {
|
} else if (sourceStats.isFile() && targetStats.isFile()) {
|
||||||
// The source and target paths both exist and are files.
|
// The source and target paths both exist and are files.
|
||||||
if (copyAll) {
|
if (copyAll) {
|
||||||
// The caller specified all files should be copied.
|
// The caller specified all files should be copied.
|
||||||
log("copy " + sourcePath + " " + targetPath);
|
log('copy ' + sourcePath + ' ' + targetPath);
|
||||||
shell.cp("-f", sourceFullPath, targetFullPath);
|
shell.cp('-f', sourceFullPath, targetFullPath);
|
||||||
updated = true;
|
updated = true;
|
||||||
} else {
|
} else {
|
||||||
// Copy if the source has been modified since it was copied to the target, or if
|
// Copy if the source has been modified since it was copied to the target, or if
|
||||||
@ -107,8 +107,8 @@ function updatePathWithStats(sourcePath, sourceStats, targetPath, targetStats, o
|
|||||||
// for timestamps lacking sub-second precision in some filesystems.
|
// for timestamps lacking sub-second precision in some filesystems.
|
||||||
if (sourceStats.mtime.getTime() >= targetStats.mtime.getTime() ||
|
if (sourceStats.mtime.getTime() >= targetStats.mtime.getTime() ||
|
||||||
sourceStats.size !== targetStats.size) {
|
sourceStats.size !== targetStats.size) {
|
||||||
log("copy " + sourcePath + " " + targetPath + " (updated file)");
|
log('copy ' + sourcePath + ' ' + targetPath + ' (updated file)');
|
||||||
shell.cp("-f", sourceFullPath, targetFullPath);
|
shell.cp('-f', sourceFullPath, targetFullPath);
|
||||||
updated = true;
|
updated = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -116,11 +116,11 @@ function updatePathWithStats(sourcePath, sourceStats, targetPath, targetStats, o
|
|||||||
} else if (targetStats) {
|
} else if (targetStats) {
|
||||||
// The target exists but the source is null, so the target should be deleted.
|
// The target exists but the source is null, so the target should be deleted.
|
||||||
if (targetStats.isDirectory()) {
|
if (targetStats.isDirectory()) {
|
||||||
log("rmdir " + targetPath + (copyAll ? "" : " (no source)"));
|
log('rmdir ' + targetPath + (copyAll ? '' : ' (no source)'));
|
||||||
shell.rm("-rf", targetFullPath);
|
shell.rm('-rf', targetFullPath);
|
||||||
} else {
|
} else {
|
||||||
log("delete " + targetPath + (copyAll ? "" : " (no source)"));
|
log('delete ' + targetPath + (copyAll ? '' : ' (no source)'));
|
||||||
shell.rm("-f", targetFullPath);
|
shell.rm('-f', targetFullPath);
|
||||||
}
|
}
|
||||||
updated = true;
|
updated = true;
|
||||||
}
|
}
|
||||||
@ -132,8 +132,8 @@ function updatePathWithStats(sourcePath, sourceStats, targetPath, targetStats, o
|
|||||||
* Helper for updatePath and updatePaths functions. Queries stats for source and target
|
* Helper for updatePath and updatePaths functions. Queries stats for source and target
|
||||||
* and ensures target directory exists before copying a file.
|
* and ensures target directory exists before copying a file.
|
||||||
*/
|
*/
|
||||||
function updatePathInternal(sourcePath, targetPath, options, log) {
|
function updatePathInternal (sourcePath, targetPath, options, log) {
|
||||||
var rootDir = (options && options.rootDir) || "";
|
var rootDir = (options && options.rootDir) || '';
|
||||||
var targetFullPath = path.join(rootDir, targetPath);
|
var targetFullPath = path.join(rootDir, targetPath);
|
||||||
var targetStats = fs.existsSync(targetFullPath) ? fs.statSync(targetFullPath) : null;
|
var targetStats = fs.existsSync(targetFullPath) ? fs.statSync(targetFullPath) : null;
|
||||||
var sourceStats = null;
|
var sourceStats = null;
|
||||||
@ -142,7 +142,7 @@ function updatePathInternal(sourcePath, targetPath, options, log) {
|
|||||||
// A non-null source path was specified. It should exist.
|
// A non-null source path was specified. It should exist.
|
||||||
var sourceFullPath = path.join(rootDir, sourcePath);
|
var sourceFullPath = path.join(rootDir, sourcePath);
|
||||||
if (!fs.existsSync(sourceFullPath)) {
|
if (!fs.existsSync(sourceFullPath)) {
|
||||||
throw new Error("Source path does not exist: " + sourcePath);
|
throw new Error('Source path does not exist: ' + sourcePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceStats = fs.statSync(sourceFullPath);
|
sourceStats = fs.statSync(sourceFullPath);
|
||||||
@ -150,7 +150,7 @@ function updatePathInternal(sourcePath, targetPath, options, log) {
|
|||||||
// Create the target's parent directory if it doesn't exist.
|
// Create the target's parent directory if it doesn't exist.
|
||||||
var parentDir = path.dirname(targetFullPath);
|
var parentDir = path.dirname(targetFullPath);
|
||||||
if (!fs.existsSync(parentDir)) {
|
if (!fs.existsSync(parentDir)) {
|
||||||
shell.mkdir("-p", parentDir);
|
shell.mkdir('-p', parentDir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,16 +177,16 @@ function updatePathInternal(sourcePath, targetPath, options, log) {
|
|||||||
* @return {boolean} true if any changes were made, or false if the force flag is not set
|
* @return {boolean} true if any changes were made, or false if the force flag is not set
|
||||||
* and everything was up to date
|
* and everything was up to date
|
||||||
*/
|
*/
|
||||||
function updatePath(sourcePath, targetPath, options, log) {
|
function updatePath (sourcePath, targetPath, options, log) {
|
||||||
if (sourcePath !== null && typeof sourcePath !== "string") {
|
if (sourcePath !== null && typeof sourcePath !== 'string') {
|
||||||
throw new Error("A source path (or null) is required.");
|
throw new Error('A source path (or null) is required.');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!targetPath || typeof targetPath !== "string") {
|
if (!targetPath || typeof targetPath !== 'string') {
|
||||||
throw new Error("A target path is required.");
|
throw new Error('A target path is required.');
|
||||||
}
|
}
|
||||||
|
|
||||||
log = log || function(message) { };
|
log = log || function (message) { };
|
||||||
|
|
||||||
return updatePathInternal(sourcePath, targetPath, options, log);
|
return updatePathInternal(sourcePath, targetPath, options, log);
|
||||||
}
|
}
|
||||||
@ -208,12 +208,12 @@ function updatePath(sourcePath, targetPath, options, log) {
|
|||||||
* @return {boolean} true if any changes were made, or false if the force flag is not set
|
* @return {boolean} true if any changes were made, or false if the force flag is not set
|
||||||
* and everything was up to date
|
* and everything was up to date
|
||||||
*/
|
*/
|
||||||
function updatePaths(pathMap, options, log) {
|
function updatePaths (pathMap, options, log) {
|
||||||
if (!pathMap || typeof pathMap !== "object" || Array.isArray(pathMap)) {
|
if (!pathMap || typeof pathMap !== 'object' || Array.isArray(pathMap)) {
|
||||||
throw new Error("An object mapping from target paths to source paths is required.");
|
throw new Error('An object mapping from target paths to source paths is required.');
|
||||||
}
|
}
|
||||||
|
|
||||||
log = log || function(message) { };
|
log = log || function (message) { };
|
||||||
|
|
||||||
var updated = false;
|
var updated = false;
|
||||||
|
|
||||||
@ -255,44 +255,44 @@ function updatePaths(pathMap, options, log) {
|
|||||||
* @return {boolean} true if any changes were made, or false if the force flag is not set
|
* @return {boolean} true if any changes were made, or false if the force flag is not set
|
||||||
* and everything was up to date
|
* and everything was up to date
|
||||||
*/
|
*/
|
||||||
function mergeAndUpdateDir(sourceDirs, targetDir, options, log) {
|
function mergeAndUpdateDir (sourceDirs, targetDir, options, log) {
|
||||||
if (sourceDirs && typeof sourceDirs === "string") {
|
if (sourceDirs && typeof sourceDirs === 'string') {
|
||||||
sourceDirs = [ sourceDirs ];
|
sourceDirs = [ sourceDirs ];
|
||||||
} else if (!Array.isArray(sourceDirs)) {
|
} else if (!Array.isArray(sourceDirs)) {
|
||||||
throw new Error("A source directory path or array of paths is required.");
|
throw new Error('A source directory path or array of paths is required.');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!targetDir || typeof targetDir !== "string") {
|
if (!targetDir || typeof targetDir !== 'string') {
|
||||||
throw new Error("A target directory path is required.");
|
throw new Error('A target directory path is required.');
|
||||||
}
|
}
|
||||||
|
|
||||||
log = log || function(message) { };
|
log = log || function (message) { };
|
||||||
|
|
||||||
var rootDir = (options && options.rootDir) || "";
|
var rootDir = (options && options.rootDir) || '';
|
||||||
|
|
||||||
var include = (options && options.include) || [ "**" ];
|
var include = (options && options.include) || [ '**' ];
|
||||||
if (typeof include === "string") {
|
if (typeof include === 'string') {
|
||||||
include = [ include ];
|
include = [ include ];
|
||||||
} else if (!Array.isArray(include)) {
|
} else if (!Array.isArray(include)) {
|
||||||
throw new Error("Include parameter must be a glob string or array of glob strings.");
|
throw new Error('Include parameter must be a glob string or array of glob strings.');
|
||||||
}
|
}
|
||||||
|
|
||||||
var exclude = (options && options.exclude) || [];
|
var exclude = (options && options.exclude) || [];
|
||||||
if (typeof exclude === "string") {
|
if (typeof exclude === 'string') {
|
||||||
exclude = [ exclude ];
|
exclude = [ exclude ];
|
||||||
} else if (!Array.isArray(exclude)) {
|
} else if (!Array.isArray(exclude)) {
|
||||||
throw new Error("Exclude parameter must be a glob string or array of glob strings.");
|
throw new Error('Exclude parameter must be a glob string or array of glob strings.');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Scan the files in each of the source directories.
|
// Scan the files in each of the source directories.
|
||||||
var sourceMaps = sourceDirs.map(function (sourceDir) {
|
var sourceMaps = sourceDirs.map(function (sourceDir) {
|
||||||
return path.join(rootDir, sourceDir);
|
return path.join(rootDir, sourceDir);
|
||||||
}).map(function (sourcePath) {
|
}).map(function (sourcePath) {
|
||||||
if (!fs.existsSync(sourcePath)) {
|
if (!fs.existsSync(sourcePath)) {
|
||||||
throw new Error("Source directory does not exist: " + sourcePath);
|
throw new Error('Source directory does not exist: ' + sourcePath);
|
||||||
}
|
}
|
||||||
return mapDirectory(rootDir, path.relative(rootDir, sourcePath), include, exclude);
|
return mapDirectory(rootDir, path.relative(rootDir, sourcePath), include, exclude);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Scan the files in the target directory, if it exists.
|
// Scan the files in the target directory, if it exists.
|
||||||
var targetMap = {};
|
var targetMap = {};
|
||||||
@ -323,18 +323,18 @@ function mergeAndUpdateDir(sourceDirs, targetDir, options, log) {
|
|||||||
/**
|
/**
|
||||||
* Creates a dictionary map of all files and directories under a path.
|
* Creates a dictionary map of all files and directories under a path.
|
||||||
*/
|
*/
|
||||||
function mapDirectory(rootDir, subDir, include, exclude) {
|
function mapDirectory (rootDir, subDir, include, exclude) {
|
||||||
var dirMap = { "": { subDir: subDir, stats: fs.statSync(path.join(rootDir, subDir)) } };
|
var dirMap = { '': { subDir: subDir, stats: fs.statSync(path.join(rootDir, subDir)) } };
|
||||||
mapSubdirectory(rootDir, subDir, "", include, exclude, dirMap);
|
mapSubdirectory(rootDir, subDir, '', include, exclude, dirMap);
|
||||||
return dirMap;
|
return dirMap;
|
||||||
|
|
||||||
function mapSubdirectory(rootDir, subDir, relativeDir, include, exclude, dirMap) {
|
function mapSubdirectory (rootDir, subDir, relativeDir, include, exclude, dirMap) {
|
||||||
var itemMapped = false;
|
var itemMapped = false;
|
||||||
var items = fs.readdirSync(path.join(rootDir, subDir, relativeDir));
|
var items = fs.readdirSync(path.join(rootDir, subDir, relativeDir));
|
||||||
|
|
||||||
items.forEach(function(item) {
|
items.forEach(function (item) {
|
||||||
var relativePath = path.join(relativeDir, item);
|
var relativePath = path.join(relativeDir, item);
|
||||||
if(!matchGlobArray(relativePath, exclude)) {
|
if (!matchGlobArray(relativePath, exclude)) {
|
||||||
// Stats obtained here (required at least to know where to recurse in directories)
|
// 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
|
// are saved for later, where the modified times may also be used. This minimizes
|
||||||
// the number of file I/O operations performed.
|
// the number of file I/O operations performed.
|
||||||
@ -361,9 +361,9 @@ function mapDirectory(rootDir, subDir, include, exclude) {
|
|||||||
return itemMapped;
|
return itemMapped;
|
||||||
}
|
}
|
||||||
|
|
||||||
function matchGlobArray(path, globs) {
|
function matchGlobArray (path, globs) {
|
||||||
return globs.some(function(elem) {
|
return globs.some(function (elem) {
|
||||||
return minimatch(path, elem, {dot:true});
|
return minimatch(path, elem, {dot: true});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -372,13 +372,13 @@ function mapDirectory(rootDir, subDir, include, exclude) {
|
|||||||
* Merges together multiple source maps and a target map into a single mapping from
|
* 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.
|
* relative paths to objects with target and source paths and stats.
|
||||||
*/
|
*/
|
||||||
function mergePathMaps(sourceMaps, targetMap, targetDir) {
|
function mergePathMaps (sourceMaps, targetMap, targetDir) {
|
||||||
// Merge multiple source maps together, along with target path info.
|
// Merge multiple source maps together, along with target path info.
|
||||||
// Entries in later source maps override those in earlier source maps.
|
// Entries in later source maps override those in earlier source maps.
|
||||||
// Target stats will be filled in below for targets that exist.
|
// Target stats will be filled in below for targets that exist.
|
||||||
var pathMap = {};
|
var pathMap = {};
|
||||||
sourceMaps.forEach(function (sourceMap) {
|
sourceMaps.forEach(function (sourceMap) {
|
||||||
Object.keys(sourceMap).forEach(function(sourceSubPath){
|
Object.keys(sourceMap).forEach(function (sourceSubPath) {
|
||||||
var sourceEntry = sourceMap[sourceSubPath];
|
var sourceEntry = sourceMap[sourceSubPath];
|
||||||
pathMap[sourceSubPath] = {
|
pathMap[sourceSubPath] = {
|
||||||
targetPath: path.join(targetDir, sourceSubPath),
|
targetPath: path.join(targetDir, sourceSubPath),
|
||||||
@ -391,7 +391,7 @@ function mergePathMaps(sourceMaps, targetMap, targetDir) {
|
|||||||
|
|
||||||
// Fill in target stats for targets that exist, and create entries
|
// Fill in target stats for targets that exist, and create entries
|
||||||
// for targets that don't have any corresponding sources.
|
// for targets that don't have any corresponding sources.
|
||||||
Object.keys(targetMap).forEach(function(subPath){
|
Object.keys(targetMap).forEach(function (subPath) {
|
||||||
var entry = pathMap[subPath];
|
var entry = pathMap[subPath];
|
||||||
if (entry) {
|
if (entry) {
|
||||||
entry.targetStats = targetMap[subPath].stats;
|
entry.targetStats = targetMap[subPath].stats;
|
||||||
@ -413,4 +413,3 @@ module.exports = {
|
|||||||
updatePaths: updatePaths,
|
updatePaths: updatePaths,
|
||||||
mergeAndUpdateDir: mergeAndUpdateDir
|
mergeAndUpdateDir: mergeAndUpdateDir
|
||||||
};
|
};
|
||||||
|
|
||||||
|
71
node_modules/cordova-common/src/PlatformJson.js
generated
vendored
71
node_modules/cordova-common/src/PlatformJson.js
generated
vendored
@ -13,7 +13,6 @@
|
|||||||
* under the License.
|
* under the License.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
/* jshint sub:true */
|
|
||||||
|
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
@ -22,13 +21,13 @@ var mungeutil = require('./ConfigChanges/munge-util');
|
|||||||
var pluginMappernto = require('cordova-registry-mapper').newToOld;
|
var pluginMappernto = require('cordova-registry-mapper').newToOld;
|
||||||
var pluginMapperotn = require('cordova-registry-mapper').oldToNew;
|
var pluginMapperotn = require('cordova-registry-mapper').oldToNew;
|
||||||
|
|
||||||
function PlatformJson(filePath, platform, root) {
|
function PlatformJson (filePath, platform, root) {
|
||||||
this.filePath = filePath;
|
this.filePath = filePath;
|
||||||
this.platform = platform;
|
this.platform = platform;
|
||||||
this.root = fix_munge(root || {});
|
this.root = fix_munge(root || {});
|
||||||
}
|
}
|
||||||
|
|
||||||
PlatformJson.load = function(plugins_dir, platform) {
|
PlatformJson.load = function (plugins_dir, platform) {
|
||||||
var filePath = path.join(plugins_dir, platform + '.json');
|
var filePath = path.join(plugins_dir, platform + '.json');
|
||||||
var root = null;
|
var root = null;
|
||||||
if (fs.existsSync(filePath)) {
|
if (fs.existsSync(filePath)) {
|
||||||
@ -37,9 +36,9 @@ PlatformJson.load = function(plugins_dir, platform) {
|
|||||||
return new PlatformJson(filePath, platform, root);
|
return new PlatformJson(filePath, platform, root);
|
||||||
};
|
};
|
||||||
|
|
||||||
PlatformJson.prototype.save = function() {
|
PlatformJson.prototype.save = function () {
|
||||||
shelljs.mkdir('-p', path.dirname(this.filePath));
|
shelljs.mkdir('-p', path.dirname(this.filePath));
|
||||||
fs.writeFileSync(this.filePath, JSON.stringify(this.root, null, 4), 'utf-8');
|
fs.writeFileSync(this.filePath, JSON.stringify(this.root, null, 2), 'utf-8');
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -49,7 +48,7 @@ PlatformJson.prototype.save = function() {
|
|||||||
* @param {String} pluginId A plugin id to check for.
|
* @param {String} pluginId A plugin id to check for.
|
||||||
* @return {Boolean} true if plugin installed as top-level, otherwise false.
|
* @return {Boolean} true if plugin installed as top-level, otherwise false.
|
||||||
*/
|
*/
|
||||||
PlatformJson.prototype.isPluginTopLevel = function(pluginId) {
|
PlatformJson.prototype.isPluginTopLevel = function (pluginId) {
|
||||||
var installedPlugins = this.root.installed_plugins;
|
var installedPlugins = this.root.installed_plugins;
|
||||||
return installedPlugins[pluginId] ||
|
return installedPlugins[pluginId] ||
|
||||||
installedPlugins[pluginMappernto[pluginId]] ||
|
installedPlugins[pluginMappernto[pluginId]] ||
|
||||||
@ -63,7 +62,7 @@ PlatformJson.prototype.isPluginTopLevel = function(pluginId) {
|
|||||||
* @param {String} pluginId A plugin id to check for.
|
* @param {String} pluginId A plugin id to check for.
|
||||||
* @return {Boolean} true if plugin installed as a dependency, otherwise false.
|
* @return {Boolean} true if plugin installed as a dependency, otherwise false.
|
||||||
*/
|
*/
|
||||||
PlatformJson.prototype.isPluginDependent = function(pluginId) {
|
PlatformJson.prototype.isPluginDependent = function (pluginId) {
|
||||||
var dependentPlugins = this.root.dependent_plugins;
|
var dependentPlugins = this.root.dependent_plugins;
|
||||||
return dependentPlugins[pluginId] ||
|
return dependentPlugins[pluginId] ||
|
||||||
dependentPlugins[pluginMappernto[pluginId]] ||
|
dependentPlugins[pluginMappernto[pluginId]] ||
|
||||||
@ -76,12 +75,12 @@ PlatformJson.prototype.isPluginDependent = function(pluginId) {
|
|||||||
* @param {String} pluginId A plugin id to check for.
|
* @param {String} pluginId A plugin id to check for.
|
||||||
* @return {Boolean} true if plugin installed, otherwise false.
|
* @return {Boolean} true if plugin installed, otherwise false.
|
||||||
*/
|
*/
|
||||||
PlatformJson.prototype.isPluginInstalled = function(pluginId) {
|
PlatformJson.prototype.isPluginInstalled = function (pluginId) {
|
||||||
return this.isPluginTopLevel(pluginId) ||
|
return this.isPluginTopLevel(pluginId) ||
|
||||||
this.isPluginDependent(pluginId);
|
this.isPluginDependent(pluginId);
|
||||||
};
|
};
|
||||||
|
|
||||||
PlatformJson.prototype.addPlugin = function(pluginId, variables, isTopLevel) {
|
PlatformJson.prototype.addPlugin = function (pluginId, variables, isTopLevel) {
|
||||||
var pluginsList = isTopLevel ?
|
var pluginsList = isTopLevel ?
|
||||||
this.root.installed_plugins :
|
this.root.installed_plugins :
|
||||||
this.root.dependent_plugins;
|
this.root.dependent_plugins;
|
||||||
@ -107,13 +106,13 @@ PlatformJson.prototype.addPluginMetadata = function (pluginInfo) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
var modulesToInstall = pluginInfo.getJsModules(this.platform)
|
var modulesToInstall = pluginInfo.getJsModules(this.platform)
|
||||||
.map(function (module) {
|
.map(function (module) {
|
||||||
return new ModuleMetadata(pluginInfo.id, module);
|
return new ModuleMetadata(pluginInfo.id, module);
|
||||||
})
|
})
|
||||||
.filter(function (metadata) {
|
.filter(function (metadata) {
|
||||||
// Filter out modules which are already added to metadata
|
// Filter out modules which are already added to metadata
|
||||||
return installedPaths.indexOf(metadata.file) === -1;
|
return installedPaths.indexOf(metadata.file) === -1;
|
||||||
});
|
});
|
||||||
|
|
||||||
this.root.modules = installedModules.concat(modulesToInstall);
|
this.root.modules = installedModules.concat(modulesToInstall);
|
||||||
|
|
||||||
@ -123,7 +122,7 @@ PlatformJson.prototype.addPluginMetadata = function (pluginInfo) {
|
|||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
PlatformJson.prototype.removePlugin = function(pluginId, isTopLevel) {
|
PlatformJson.prototype.removePlugin = function (pluginId, isTopLevel) {
|
||||||
var pluginsList = isTopLevel ?
|
var pluginsList = isTopLevel ?
|
||||||
this.root.installed_plugins :
|
this.root.installed_plugins :
|
||||||
this.root.dependent_plugins;
|
this.root.dependent_plugins;
|
||||||
@ -144,16 +143,16 @@ PlatformJson.prototype.removePlugin = function(pluginId, isTopLevel) {
|
|||||||
*/
|
*/
|
||||||
PlatformJson.prototype.removePluginMetadata = function (pluginInfo) {
|
PlatformJson.prototype.removePluginMetadata = function (pluginInfo) {
|
||||||
var modulesToRemove = pluginInfo.getJsModules(this.platform)
|
var modulesToRemove = pluginInfo.getJsModules(this.platform)
|
||||||
.map(function (jsModule) {
|
.map(function (jsModule) {
|
||||||
return ['plugins', pluginInfo.id, jsModule.src].join('/');
|
return ['plugins', pluginInfo.id, jsModule.src].join('/');
|
||||||
});
|
});
|
||||||
|
|
||||||
var installedModules = this.root.modules || [];
|
var installedModules = this.root.modules || [];
|
||||||
this.root.modules = installedModules
|
this.root.modules = installedModules
|
||||||
.filter(function (installedModule) {
|
.filter(function (installedModule) {
|
||||||
// Leave only those metadatas which 'file' is not in removed modules
|
// Leave only those metadatas which 'file' is not in removed modules
|
||||||
return (modulesToRemove.indexOf(installedModule.file) === -1);
|
return (modulesToRemove.indexOf(installedModule.file) === -1);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (this.root.plugin_metadata) {
|
if (this.root.plugin_metadata) {
|
||||||
delete this.root.plugin_metadata[pluginInfo.id];
|
delete this.root.plugin_metadata[pluginInfo.id];
|
||||||
@ -162,12 +161,12 @@ PlatformJson.prototype.removePluginMetadata = function (pluginInfo) {
|
|||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
PlatformJson.prototype.addInstalledPluginToPrepareQueue = function(pluginDirName, vars, is_top_level, force) {
|
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});
|
this.root.prepare_queue.installed.push({'plugin': pluginDirName, 'vars': vars, 'topLevel': is_top_level, 'force': force});
|
||||||
};
|
};
|
||||||
|
|
||||||
PlatformJson.prototype.addUninstalledPluginToPrepareQueue = function(pluginId, is_top_level) {
|
PlatformJson.prototype.addUninstalledPluginToPrepareQueue = function (pluginId, is_top_level) {
|
||||||
this.root.prepare_queue.uninstalled.push({'plugin':pluginId, 'id':pluginId, 'topLevel':is_top_level});
|
this.root.prepare_queue.uninstalled.push({'plugin': pluginId, 'id': pluginId, 'topLevel': is_top_level});
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -177,7 +176,7 @@ PlatformJson.prototype.addUninstalledPluginToPrepareQueue = function(pluginId, i
|
|||||||
* @param {String} pluginId A plugin id to make top-level.
|
* @param {String} pluginId A plugin id to make top-level.
|
||||||
* @return {PlatformJson} PlatformJson instance.
|
* @return {PlatformJson} PlatformJson instance.
|
||||||
*/
|
*/
|
||||||
PlatformJson.prototype.makeTopLevel = function(pluginId) {
|
PlatformJson.prototype.makeTopLevel = function (pluginId) {
|
||||||
var plugin = this.root.dependent_plugins[pluginId];
|
var plugin = this.root.dependent_plugins[pluginId];
|
||||||
if (plugin) {
|
if (plugin) {
|
||||||
delete this.root.dependent_plugins[pluginId];
|
delete this.root.dependent_plugins[pluginId];
|
||||||
@ -195,10 +194,10 @@ PlatformJson.prototype.makeTopLevel = function(pluginId) {
|
|||||||
PlatformJson.prototype.generateMetadata = function () {
|
PlatformJson.prototype.generateMetadata = function () {
|
||||||
return [
|
return [
|
||||||
'cordova.define(\'cordova/plugin_list\', function(require, exports, module) {',
|
'cordova.define(\'cordova/plugin_list\', function(require, exports, module) {',
|
||||||
'module.exports = ' + JSON.stringify(this.root.modules, null, 4) + ';',
|
'module.exports = ' + JSON.stringify(this.root.modules, null, 2) + ';',
|
||||||
'module.exports.metadata = ',
|
'module.exports.metadata = ',
|
||||||
'// TOP OF METADATA',
|
'// TOP OF METADATA',
|
||||||
JSON.stringify(this.root.plugin_metadata, null, 4) + ';',
|
JSON.stringify(this.root.plugin_metadata, null, 2) + ';',
|
||||||
'// BOTTOM OF METADATA',
|
'// BOTTOM OF METADATA',
|
||||||
'});' // Close cordova.define.
|
'});' // Close cordova.define.
|
||||||
].join('\n');
|
].join('\n');
|
||||||
@ -220,8 +219,8 @@ PlatformJson.prototype.generateAndSaveMetadata = function (destination) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// convert a munge from the old format ([file][parent][xml] = count) to the current one
|
// convert a munge from the old format ([file][parent][xml] = count) to the current one
|
||||||
function fix_munge(root) {
|
function fix_munge (root) {
|
||||||
root.prepare_queue = root.prepare_queue || {installed:[], uninstalled:[]};
|
root.prepare_queue = root.prepare_queue || {installed: [], uninstalled: []};
|
||||||
root.config_munge = root.config_munge || {files: {}};
|
root.config_munge = root.config_munge || {files: {}};
|
||||||
root.installed_plugins = root.installed_plugins || {};
|
root.installed_plugins = root.installed_plugins || {};
|
||||||
root.dependent_plugins = root.dependent_plugins || {};
|
root.dependent_plugins = root.dependent_plugins || {};
|
||||||
@ -260,15 +259,15 @@ function ModuleMetadata (pluginId, jsModule) {
|
|||||||
if (!pluginId) throw new TypeError('pluginId argument must be a valid plugin id');
|
if (!pluginId) throw new TypeError('pluginId argument must be a valid plugin id');
|
||||||
if (!jsModule.src && !jsModule.name) throw new TypeError('jsModule argument must contain src or/and name properties');
|
if (!jsModule.src && !jsModule.name) throw new TypeError('jsModule argument must contain src or/and name properties');
|
||||||
|
|
||||||
this.id = pluginId + '.' + ( jsModule.name || jsModule.src.match(/([^\/]+)\.js/)[1] );
|
this.id = pluginId + '.' + (jsModule.name || jsModule.src.match(/([^\/]+)\.js/)[1]); /* eslint no-useless-escape: 0 */
|
||||||
this.file = ['plugins', pluginId, jsModule.src].join('/');
|
this.file = ['plugins', pluginId, jsModule.src].join('/');
|
||||||
this.pluginId = pluginId;
|
this.pluginId = pluginId;
|
||||||
|
|
||||||
if (jsModule.clobbers && jsModule.clobbers.length > 0) {
|
if (jsModule.clobbers && jsModule.clobbers.length > 0) {
|
||||||
this.clobbers = jsModule.clobbers.map(function(o) { return o.target; });
|
this.clobbers = jsModule.clobbers.map(function (o) { return o.target; });
|
||||||
}
|
}
|
||||||
if (jsModule.merges && jsModule.merges.length > 0) {
|
if (jsModule.merges && jsModule.merges.length > 0) {
|
||||||
this.merges = jsModule.merges.map(function(o) { return o.target; });
|
this.merges = jsModule.merges.map(function (o) { return o.target; });
|
||||||
}
|
}
|
||||||
if (jsModule.runs) {
|
if (jsModule.runs) {
|
||||||
this.runs = true;
|
this.runs = true;
|
||||||
|
195
node_modules/cordova-common/src/PluginInfo/PluginInfo.js
generated
vendored
195
node_modules/cordova-common/src/PluginInfo/PluginInfo.js
generated
vendored
@ -17,8 +17,6 @@
|
|||||||
under the License.
|
under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* jshint sub:true, laxcomma:true, laxbreak:true */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
A class for holidng the information currently stored in plugin.xml
|
A class for holidng the information currently stored in plugin.xml
|
||||||
It should also be able to answer questions like whether the plugin
|
It should also be able to answer questions like whether the plugin
|
||||||
@ -27,14 +25,12 @@ is compatible with a given engine version.
|
|||||||
TODO (kamrik): refactor this to not use sync functions and return promises.
|
TODO (kamrik): refactor this to not use sync functions and return promises.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
var path = require('path');
|
||||||
|
var fs = require('fs');
|
||||||
|
var xml_helpers = require('../util/xml-helpers');
|
||||||
|
var CordovaError = require('../CordovaError/CordovaError');
|
||||||
|
|
||||||
var path = require('path')
|
function PluginInfo (dirname) {
|
||||||
, fs = require('fs')
|
|
||||||
, xml_helpers = require('../util/xml-helpers')
|
|
||||||
, CordovaError = require('../CordovaError/CordovaError')
|
|
||||||
;
|
|
||||||
|
|
||||||
function PluginInfo(dirname) {
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
// METHODS
|
// METHODS
|
||||||
@ -45,15 +41,15 @@ function PluginInfo(dirname) {
|
|||||||
// Used to require a variable to be specified via --variable when installing the plugin.
|
// Used to require a variable to be specified via --variable when installing the plugin.
|
||||||
// returns { key : default | null}
|
// returns { key : default | null}
|
||||||
self.getPreferences = getPreferences;
|
self.getPreferences = getPreferences;
|
||||||
function getPreferences(platform) {
|
function getPreferences (platform) {
|
||||||
return _getTags(self._et, 'preference', platform, _parsePreference)
|
return _getTags(self._et, 'preference', platform, _parsePreference)
|
||||||
.reduce(function (preferences, pref) {
|
.reduce(function (preferences, pref) {
|
||||||
preferences[pref.preference] = pref.default;
|
preferences[pref.preference] = pref.default;
|
||||||
return preferences;
|
return preferences;
|
||||||
}, {});
|
}, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
function _parsePreference(prefTag) {
|
function _parsePreference (prefTag) {
|
||||||
var name = prefTag.attrib.name.toUpperCase();
|
var name = prefTag.attrib.name.toUpperCase();
|
||||||
var def = prefTag.attrib.default || null;
|
var def = prefTag.attrib.default || null;
|
||||||
return {preference: name, default: def};
|
return {preference: name, default: def};
|
||||||
@ -61,16 +57,16 @@ function PluginInfo(dirname) {
|
|||||||
|
|
||||||
// <asset>
|
// <asset>
|
||||||
self.getAssets = getAssets;
|
self.getAssets = getAssets;
|
||||||
function getAssets(platform) {
|
function getAssets (platform) {
|
||||||
var assets = _getTags(self._et, 'asset', platform, _parseAsset);
|
var assets = _getTags(self._et, 'asset', platform, _parseAsset);
|
||||||
return assets;
|
return assets;
|
||||||
}
|
}
|
||||||
|
|
||||||
function _parseAsset(tag) {
|
function _parseAsset (tag) {
|
||||||
var src = tag.attrib.src;
|
var src = tag.attrib.src;
|
||||||
var target = tag.attrib.target;
|
var target = tag.attrib.target;
|
||||||
|
|
||||||
if ( !src || !target) {
|
if (!src || !target) {
|
||||||
var msg =
|
var msg =
|
||||||
'Malformed <asset> tag. Both "src" and "target" attributes'
|
'Malformed <asset> tag. Both "src" and "target" attributes'
|
||||||
+ 'must be specified in\n'
|
+ 'must be specified in\n'
|
||||||
@ -87,7 +83,6 @@ function PluginInfo(dirname) {
|
|||||||
return asset;
|
return asset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// <dependency>
|
// <dependency>
|
||||||
// Example:
|
// Example:
|
||||||
// <dependency id="com.plugin.id"
|
// <dependency id="com.plugin.id"
|
||||||
@ -95,28 +90,28 @@ function PluginInfo(dirname) {
|
|||||||
// commit="428931ada3891801"
|
// commit="428931ada3891801"
|
||||||
// subdir="some/path/here" />
|
// subdir="some/path/here" />
|
||||||
self.getDependencies = getDependencies;
|
self.getDependencies = getDependencies;
|
||||||
function getDependencies(platform) {
|
function getDependencies (platform) {
|
||||||
var deps = _getTags(
|
var deps = _getTags(
|
||||||
self._et,
|
self._et,
|
||||||
'dependency',
|
'dependency',
|
||||||
platform,
|
platform,
|
||||||
_parseDependency
|
_parseDependency
|
||||||
);
|
);
|
||||||
return deps;
|
return deps;
|
||||||
}
|
}
|
||||||
|
|
||||||
function _parseDependency(tag) {
|
function _parseDependency (tag) {
|
||||||
var dep =
|
var dep =
|
||||||
{ id : tag.attrib.id
|
{ id: tag.attrib.id,
|
||||||
, version: tag.attrib.version || ''
|
version: tag.attrib.version || '',
|
||||||
, url : tag.attrib.url || ''
|
url: tag.attrib.url || '',
|
||||||
, subdir : tag.attrib.subdir || ''
|
subdir: tag.attrib.subdir || '',
|
||||||
, commit : tag.attrib.commit
|
commit: tag.attrib.commit
|
||||||
};
|
};
|
||||||
|
|
||||||
dep.git_ref = dep.commit;
|
dep.git_ref = dep.commit;
|
||||||
|
|
||||||
if ( !dep.id ) {
|
if (!dep.id) {
|
||||||
var msg =
|
var msg =
|
||||||
'<dependency> tag is missing id attribute in '
|
'<dependency> tag is missing id attribute in '
|
||||||
+ self.filepath
|
+ self.filepath
|
||||||
@ -126,52 +121,51 @@ function PluginInfo(dirname) {
|
|||||||
return dep;
|
return dep;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// <config-file> tag
|
// <config-file> tag
|
||||||
self.getConfigFiles = getConfigFiles;
|
self.getConfigFiles = getConfigFiles;
|
||||||
function getConfigFiles(platform) {
|
function getConfigFiles (platform) {
|
||||||
var configFiles = _getTags(self._et, 'config-file', platform, _parseConfigFile);
|
var configFiles = _getTags(self._et, 'config-file', platform, _parseConfigFile);
|
||||||
return configFiles;
|
return configFiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
function _parseConfigFile(tag) {
|
function _parseConfigFile (tag) {
|
||||||
var configFile =
|
var configFile =
|
||||||
{ target : tag.attrib['target']
|
{ target: tag.attrib['target'],
|
||||||
, parent : tag.attrib['parent']
|
parent: tag.attrib['parent'],
|
||||||
, after : tag.attrib['after']
|
after: tag.attrib['after'],
|
||||||
, xmls : tag.getchildren()
|
xmls: tag.getchildren(),
|
||||||
// To support demuxing via versions
|
// To support demuxing via versions
|
||||||
, versions : tag.attrib['versions']
|
versions: tag.attrib['versions'],
|
||||||
, deviceTarget: tag.attrib['device-target']
|
deviceTarget: tag.attrib['device-target']
|
||||||
};
|
};
|
||||||
return configFile;
|
return configFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.getEditConfigs = getEditConfigs;
|
self.getEditConfigs = getEditConfigs;
|
||||||
function getEditConfigs(platform) {
|
function getEditConfigs (platform) {
|
||||||
var editConfigs = _getTags(self._et, 'edit-config', platform, _parseEditConfigs);
|
var editConfigs = _getTags(self._et, 'edit-config', platform, _parseEditConfigs);
|
||||||
return editConfigs;
|
return editConfigs;
|
||||||
}
|
}
|
||||||
|
|
||||||
function _parseEditConfigs(tag) {
|
function _parseEditConfigs (tag) {
|
||||||
var editConfig =
|
var editConfig =
|
||||||
{ file : tag.attrib['file']
|
{ file: tag.attrib['file'],
|
||||||
, target : tag.attrib['target']
|
target: tag.attrib['target'],
|
||||||
, mode : tag.attrib['mode']
|
mode: tag.attrib['mode'],
|
||||||
, xmls : tag.getchildren()
|
xmls: tag.getchildren()
|
||||||
};
|
};
|
||||||
return editConfig;
|
return editConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
// <info> tags, both global and within a <platform>
|
// <info> tags, both global and within a <platform>
|
||||||
// TODO (kamrik): Do we ever use <info> under <platform>? Example wanted.
|
// TODO (kamrik): Do we ever use <info> under <platform>? Example wanted.
|
||||||
self.getInfo = getInfo;
|
self.getInfo = getInfo;
|
||||||
function getInfo(platform) {
|
function getInfo (platform) {
|
||||||
var infos = _getTags(
|
var infos = _getTags(
|
||||||
self._et,
|
self._et,
|
||||||
'info',
|
'info',
|
||||||
platform,
|
platform,
|
||||||
function(elem) { return elem.text; }
|
function (elem) { return elem.text; }
|
||||||
);
|
);
|
||||||
// Filter out any undefined or empty strings.
|
// Filter out any undefined or empty strings.
|
||||||
infos = infos.filter(Boolean);
|
infos = infos.filter(Boolean);
|
||||||
@ -183,12 +177,12 @@ function PluginInfo(dirname) {
|
|||||||
// <source-file src="src/ios/someLib.a" framework="true" />
|
// <source-file src="src/ios/someLib.a" framework="true" />
|
||||||
// <source-file src="src/ios/someLib.a" compiler-flags="-fno-objc-arc" />
|
// <source-file src="src/ios/someLib.a" compiler-flags="-fno-objc-arc" />
|
||||||
self.getSourceFiles = getSourceFiles;
|
self.getSourceFiles = getSourceFiles;
|
||||||
function getSourceFiles(platform) {
|
function getSourceFiles (platform) {
|
||||||
var sourceFiles = _getTagsInPlatform(self._et, 'source-file', platform, _parseSourceFile);
|
var sourceFiles = _getTagsInPlatform(self._et, 'source-file', platform, _parseSourceFile);
|
||||||
return sourceFiles;
|
return sourceFiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
function _parseSourceFile(tag) {
|
function _parseSourceFile (tag) {
|
||||||
return {
|
return {
|
||||||
itemType: 'source-file',
|
itemType: 'source-file',
|
||||||
src: tag.attrib.src,
|
src: tag.attrib.src,
|
||||||
@ -203,8 +197,8 @@ function PluginInfo(dirname) {
|
|||||||
// Example:
|
// Example:
|
||||||
// <header-file src="CDVFoo.h" />
|
// <header-file src="CDVFoo.h" />
|
||||||
self.getHeaderFiles = getHeaderFiles;
|
self.getHeaderFiles = getHeaderFiles;
|
||||||
function getHeaderFiles(platform) {
|
function getHeaderFiles (platform) {
|
||||||
var headerFiles = _getTagsInPlatform(self._et, 'header-file', platform, function(tag) {
|
var headerFiles = _getTagsInPlatform(self._et, 'header-file', platform, function (tag) {
|
||||||
return {
|
return {
|
||||||
itemType: 'header-file',
|
itemType: 'header-file',
|
||||||
src: tag.attrib.src,
|
src: tag.attrib.src,
|
||||||
@ -218,8 +212,8 @@ function PluginInfo(dirname) {
|
|||||||
// Example:
|
// Example:
|
||||||
// <resource-file src="FooPluginStrings.xml" target="res/values/FooPluginStrings.xml" device-target="win" arch="x86" versions=">=8.1" />
|
// <resource-file src="FooPluginStrings.xml" target="res/values/FooPluginStrings.xml" device-target="win" arch="x86" versions=">=8.1" />
|
||||||
self.getResourceFiles = getResourceFiles;
|
self.getResourceFiles = getResourceFiles;
|
||||||
function getResourceFiles(platform) {
|
function getResourceFiles (platform) {
|
||||||
var resourceFiles = _getTagsInPlatform(self._et, 'resource-file', platform, function(tag) {
|
var resourceFiles = _getTagsInPlatform(self._et, 'resource-file', platform, function (tag) {
|
||||||
return {
|
return {
|
||||||
itemType: 'resource-file',
|
itemType: 'resource-file',
|
||||||
src: tag.attrib.src,
|
src: tag.attrib.src,
|
||||||
@ -237,8 +231,8 @@ function PluginInfo(dirname) {
|
|||||||
// Example:
|
// Example:
|
||||||
// <lib-file src="src/BlackBerry10/native/device/libfoo.so" arch="device" />
|
// <lib-file src="src/BlackBerry10/native/device/libfoo.so" arch="device" />
|
||||||
self.getLibFiles = getLibFiles;
|
self.getLibFiles = getLibFiles;
|
||||||
function getLibFiles(platform) {
|
function getLibFiles (platform) {
|
||||||
var libFiles = _getTagsInPlatform(self._et, 'lib-file', platform, function(tag) {
|
var libFiles = _getTagsInPlatform(self._et, 'lib-file', platform, function (tag) {
|
||||||
return {
|
return {
|
||||||
itemType: 'lib-file',
|
itemType: 'lib-file',
|
||||||
src: tag.attrib.src,
|
src: tag.attrib.src,
|
||||||
@ -255,16 +249,16 @@ function PluginInfo(dirname) {
|
|||||||
// Example:
|
// Example:
|
||||||
// <hook type="before_build" src="scripts/beforeBuild.js" />
|
// <hook type="before_build" src="scripts/beforeBuild.js" />
|
||||||
self.getHookScripts = getHookScripts;
|
self.getHookScripts = getHookScripts;
|
||||||
function getHookScripts(hook, platforms) {
|
function getHookScripts (hook, platforms) {
|
||||||
var scriptElements = self._et.findall('./hook');
|
var scriptElements = self._et.findall('./hook');
|
||||||
|
|
||||||
if(platforms) {
|
if (platforms) {
|
||||||
platforms.forEach(function (platform) {
|
platforms.forEach(function (platform) {
|
||||||
scriptElements = scriptElements.concat(self._et.findall('./platform[@name="' + platform + '"]/hook'));
|
scriptElements = scriptElements.concat(self._et.findall('./platform[@name="' + platform + '"]/hook'));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function filterScriptByHookType(el) {
|
function filterScriptByHookType (el) {
|
||||||
return el.attrib.src && el.attrib.type && el.attrib.type.toLowerCase() === hook;
|
return el.attrib.src && el.attrib.type && el.attrib.type.toLowerCase() === hook;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -272,26 +266,26 @@ function PluginInfo(dirname) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.getJsModules = getJsModules;
|
self.getJsModules = getJsModules;
|
||||||
function getJsModules(platform) {
|
function getJsModules (platform) {
|
||||||
var modules = _getTags(self._et, 'js-module', platform, _parseJsModule);
|
var modules = _getTags(self._et, 'js-module', platform, _parseJsModule);
|
||||||
return modules;
|
return modules;
|
||||||
}
|
}
|
||||||
|
|
||||||
function _parseJsModule(tag) {
|
function _parseJsModule (tag) {
|
||||||
var ret = {
|
var ret = {
|
||||||
itemType: 'js-module',
|
itemType: 'js-module',
|
||||||
name: tag.attrib.name,
|
name: tag.attrib.name,
|
||||||
src: tag.attrib.src,
|
src: tag.attrib.src,
|
||||||
clobbers: tag.findall('clobbers').map(function(tag) { return { target: tag.attrib.target }; }),
|
clobbers: tag.findall('clobbers').map(function (tag) { return { target: tag.attrib.target }; }),
|
||||||
merges: tag.findall('merges').map(function(tag) { return { target: tag.attrib.target }; }),
|
merges: tag.findall('merges').map(function (tag) { return { target: tag.attrib.target }; }),
|
||||||
runs: tag.findall('runs').length > 0
|
runs: tag.findall('runs').length > 0
|
||||||
};
|
};
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
self.getEngines = function() {
|
self.getEngines = function () {
|
||||||
return self._et.findall('engines/engine').map(function(n) {
|
return self._et.findall('engines/engine').map(function (n) {
|
||||||
return {
|
return {
|
||||||
name: n.attrib.name,
|
name: n.attrib.name,
|
||||||
version: n.attrib.version,
|
version: n.attrib.version,
|
||||||
@ -301,26 +295,40 @@ function PluginInfo(dirname) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
self.getPlatforms = function() {
|
self.getPlatforms = function () {
|
||||||
return self._et.findall('platform').map(function(n) {
|
return self._et.findall('platform').map(function (n) {
|
||||||
return { name: n.attrib.name };
|
return { name: n.attrib.name };
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
self.getPlatformsArray = function() {
|
self.getPlatformsArray = function () {
|
||||||
return self._et.findall('platform').map(function(n) {
|
return self._et.findall('platform').map(function (n) {
|
||||||
return n.attrib.name;
|
return n.attrib.name;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
self.getFrameworks = function(platform) {
|
|
||||||
return _getTags(self._et, 'framework', platform, function(el) {
|
self.getFrameworks = function (platform, options) {
|
||||||
|
return _getTags(self._et, 'framework', platform, function (el) {
|
||||||
|
var src = el.attrib.src;
|
||||||
|
if (options) {
|
||||||
|
var vars = options.cli_variables || {};
|
||||||
|
var regExp;
|
||||||
|
// Iterate over plugin variables.
|
||||||
|
// Replace them in framework src if they exist
|
||||||
|
Object.keys(vars).forEach(function (name) {
|
||||||
|
if (vars[name]) {
|
||||||
|
regExp = new RegExp('\\$' + name, 'g');
|
||||||
|
src = src.replace(regExp, vars[name]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
var ret = {
|
var ret = {
|
||||||
itemType: 'framework',
|
itemType: 'framework',
|
||||||
type: el.attrib.type,
|
type: el.attrib.type,
|
||||||
parent: el.attrib.parent,
|
parent: el.attrib.parent,
|
||||||
custom: isStrTrue(el.attrib.custom),
|
custom: isStrTrue(el.attrib.custom),
|
||||||
embed: isStrTrue(el.attrib.embed),
|
embed: isStrTrue(el.attrib.embed),
|
||||||
src: el.attrib.src,
|
src: src,
|
||||||
spec: el.attrib.spec,
|
spec: el.attrib.spec,
|
||||||
weak: isStrTrue(el.attrib.weak),
|
weak: isStrTrue(el.attrib.weak),
|
||||||
versions: el.attrib.versions,
|
versions: el.attrib.versions,
|
||||||
@ -334,22 +342,21 @@ function PluginInfo(dirname) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
self.getFilesAndFrameworks = getFilesAndFrameworks;
|
self.getFilesAndFrameworks = getFilesAndFrameworks;
|
||||||
function getFilesAndFrameworks(platform) {
|
function getFilesAndFrameworks (platform, options) {
|
||||||
// Please avoid changing the order of the calls below, files will be
|
// Please avoid changing the order of the calls below, files will be
|
||||||
// installed in this order.
|
// installed in this order.
|
||||||
var items = [].concat(
|
var items = [].concat(
|
||||||
self.getSourceFiles(platform),
|
self.getSourceFiles(platform),
|
||||||
self.getHeaderFiles(platform),
|
self.getHeaderFiles(platform),
|
||||||
self.getResourceFiles(platform),
|
self.getResourceFiles(platform),
|
||||||
self.getFrameworks(platform),
|
self.getFrameworks(platform, options),
|
||||||
self.getLibFiles(platform)
|
self.getLibFiles(platform)
|
||||||
);
|
);
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
///// End of PluginInfo methods /////
|
/// // End of PluginInfo methods /////
|
||||||
|
|
||||||
|
/// // PluginInfo Constructor logic /////
|
||||||
///// PluginInfo Constructor logic /////
|
|
||||||
self.filepath = path.join(dirname, 'plugin.xml');
|
self.filepath = path.join(dirname, 'plugin.xml');
|
||||||
if (!fs.existsSync(self.filepath)) {
|
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.');
|
||||||
@ -370,18 +377,18 @@ function PluginInfo(dirname) {
|
|||||||
self.keywords = pelem.findtext('keywords');
|
self.keywords = pelem.findtext('keywords');
|
||||||
self.info = pelem.findtext('info');
|
self.info = pelem.findtext('info');
|
||||||
if (self.keywords) {
|
if (self.keywords) {
|
||||||
self.keywords = self.keywords.split(',').map( function(s) { return s.trim(); } );
|
self.keywords = self.keywords.split(',').map(function (s) { return s.trim(); });
|
||||||
}
|
}
|
||||||
self.getKeywordsAndPlatforms = function () {
|
self.getKeywordsAndPlatforms = function () {
|
||||||
var ret = self.keywords || [];
|
var ret = self.keywords || [];
|
||||||
return ret.concat('ecosystem:cordova').concat(addCordova(self.getPlatformsArray()));
|
return ret.concat('ecosystem:cordova').concat(addCordova(self.getPlatformsArray()));
|
||||||
};
|
};
|
||||||
} // End of PluginInfo constructor.
|
} // End of PluginInfo constructor.
|
||||||
|
|
||||||
// Helper function used to prefix every element of an array with cordova-
|
// Helper function used to prefix every element of an array with cordova-
|
||||||
// Useful when we want to modify platforms to be cordova-platform
|
// Useful when we want to modify platforms to be cordova-platform
|
||||||
function addCordova(someArray) {
|
function addCordova (someArray) {
|
||||||
var newArray = someArray.map(function(element) {
|
var newArray = someArray.map(function (element) {
|
||||||
return 'cordova-' + element;
|
return 'cordova-' + element;
|
||||||
});
|
});
|
||||||
return newArray;
|
return newArray;
|
||||||
@ -391,37 +398,37 @@ function addCordova(someArray) {
|
|||||||
// Get all elements of a given name. Both in root and in platform sections
|
// Get all elements of a given name. Both in root and in platform sections
|
||||||
// for the given platform. If transform is given and is a function, it is
|
// for the given platform. If transform is given and is a function, it is
|
||||||
// applied to each element.
|
// applied to each element.
|
||||||
function _getTags(pelem, tag, platform, transform) {
|
function _getTags (pelem, tag, platform, transform) {
|
||||||
var platformTag = pelem.find('./platform[@name="' + platform + '"]');
|
var platformTag = pelem.find('./platform[@name="' + platform + '"]');
|
||||||
var tagsInRoot = pelem.findall(tag);
|
var tagsInRoot = pelem.findall(tag);
|
||||||
tagsInRoot = tagsInRoot || [];
|
tagsInRoot = tagsInRoot || [];
|
||||||
var tagsInPlatform = platformTag ? platformTag.findall(tag) : [];
|
var tagsInPlatform = platformTag ? platformTag.findall(tag) : [];
|
||||||
var tags = tagsInRoot.concat(tagsInPlatform);
|
var tags = tagsInRoot.concat(tagsInPlatform);
|
||||||
if ( typeof transform === 'function' ) {
|
if (typeof transform === 'function') {
|
||||||
tags = tags.map(transform);
|
tags = tags.map(transform);
|
||||||
}
|
}
|
||||||
return tags;
|
return tags;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Same as _getTags() but only looks inside a platform section.
|
// Same as _getTags() but only looks inside a platform section.
|
||||||
function _getTagsInPlatform(pelem, tag, platform, transform) {
|
function _getTagsInPlatform (pelem, tag, platform, transform) {
|
||||||
var platformTag = pelem.find('./platform[@name="' + platform + '"]');
|
var platformTag = pelem.find('./platform[@name="' + platform + '"]');
|
||||||
var tags = platformTag ? platformTag.findall(tag) : [];
|
var tags = platformTag ? platformTag.findall(tag) : [];
|
||||||
if ( typeof transform === 'function' ) {
|
if (typeof transform === 'function') {
|
||||||
tags = tags.map(transform);
|
tags = tags.map(transform);
|
||||||
}
|
}
|
||||||
return tags;
|
return tags;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if x is a string 'true'.
|
// Check if x is a string 'true'.
|
||||||
function isStrTrue(x) {
|
function isStrTrue (x) {
|
||||||
return String(x).toLowerCase() == 'true';
|
return String(x).toLowerCase() === 'true';
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = PluginInfo;
|
module.exports = PluginInfo;
|
||||||
// Backwards compat:
|
// Backwards compat:
|
||||||
PluginInfo.PluginInfo = PluginInfo;
|
PluginInfo.PluginInfo = PluginInfo;
|
||||||
PluginInfo.loadPluginsDir = function(dir) {
|
PluginInfo.loadPluginsDir = function (dir) {
|
||||||
var PluginInfoProvider = require('./PluginInfoProvider');
|
var PluginInfoProvider = require('./PluginInfoProvider');
|
||||||
return new PluginInfoProvider().getAllWithinSearchPath(dir);
|
return new PluginInfoProvider().getAllWithinSearchPath(dir);
|
||||||
};
|
};
|
||||||
|
14
node_modules/cordova-common/src/PluginInfo/PluginInfoProvider.js
generated
vendored
14
node_modules/cordova-common/src/PluginInfo/PluginInfoProvider.js
generated
vendored
@ -24,12 +24,12 @@ var path = require('path');
|
|||||||
var PluginInfo = require('./PluginInfo');
|
var PluginInfo = require('./PluginInfo');
|
||||||
var events = require('../events');
|
var events = require('../events');
|
||||||
|
|
||||||
function PluginInfoProvider() {
|
function PluginInfoProvider () {
|
||||||
this._cache = {};
|
this._cache = {};
|
||||||
this._getAllCache = {};
|
this._getAllCache = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
PluginInfoProvider.prototype.get = function(dirName) {
|
PluginInfoProvider.prototype.get = function (dirName) {
|
||||||
var absPath = path.resolve(dirName);
|
var absPath = path.resolve(dirName);
|
||||||
if (!this._cache[absPath]) {
|
if (!this._cache[absPath]) {
|
||||||
this._cache[absPath] = new PluginInfo(dirName);
|
this._cache[absPath] = new PluginInfo(dirName);
|
||||||
@ -39,7 +39,7 @@ PluginInfoProvider.prototype.get = function(dirName) {
|
|||||||
|
|
||||||
// Normally you don't need to put() entries, but it's used
|
// Normally you don't need to put() entries, but it's used
|
||||||
// when copying plugins, and in unit tests.
|
// when copying plugins, and in unit tests.
|
||||||
PluginInfoProvider.prototype.put = function(pluginInfo) {
|
PluginInfoProvider.prototype.put = function (pluginInfo) {
|
||||||
var absPath = path.resolve(pluginInfo.dir);
|
var absPath = path.resolve(pluginInfo.dir);
|
||||||
this._cache[absPath] = pluginInfo;
|
this._cache[absPath] = pluginInfo;
|
||||||
};
|
};
|
||||||
@ -48,7 +48,7 @@ PluginInfoProvider.prototype.put = function(pluginInfo) {
|
|||||||
// Given a dir containing multiple plugins, create a PluginInfo object for
|
// Given a dir containing multiple plugins, create a PluginInfo object for
|
||||||
// each of them and return as array.
|
// each of them and return as array.
|
||||||
// Should load them all in parallel and return a promise, but not yet.
|
// Should load them all in parallel and return a promise, but not yet.
|
||||||
PluginInfoProvider.prototype.getAllWithinSearchPath = function(dirName) {
|
PluginInfoProvider.prototype.getAllWithinSearchPath = function (dirName) {
|
||||||
var absPath = path.resolve(dirName);
|
var absPath = path.resolve(dirName);
|
||||||
if (!this._getAllCache[absPath]) {
|
if (!this._getAllCache[absPath]) {
|
||||||
this._getAllCache[absPath] = getAllHelper(absPath, this);
|
this._getAllCache[absPath] = getAllHelper(absPath, this);
|
||||||
@ -56,8 +56,8 @@ PluginInfoProvider.prototype.getAllWithinSearchPath = function(dirName) {
|
|||||||
return this._getAllCache[absPath];
|
return this._getAllCache[absPath];
|
||||||
};
|
};
|
||||||
|
|
||||||
function getAllHelper(absPath, provider) {
|
function getAllHelper (absPath, provider) {
|
||||||
if (!fs.existsSync(absPath)){
|
if (!fs.existsSync(absPath)) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
// If dir itself is a plugin, return it in an array with one element.
|
// If dir itself is a plugin, return it in an array with one element.
|
||||||
@ -66,7 +66,7 @@ function getAllHelper(absPath, provider) {
|
|||||||
}
|
}
|
||||||
var subdirs = fs.readdirSync(absPath);
|
var subdirs = fs.readdirSync(absPath);
|
||||||
var plugins = [];
|
var plugins = [];
|
||||||
subdirs.forEach(function(subdir) {
|
subdirs.forEach(function (subdir) {
|
||||||
var d = path.join(absPath, subdir);
|
var d = path.join(absPath, subdir);
|
||||||
if (fs.existsSync(path.join(d, 'plugin.xml'))) {
|
if (fs.existsSync(path.join(d, 'plugin.xml'))) {
|
||||||
try {
|
try {
|
||||||
|
83
node_modules/cordova-common/src/PluginManager.js
generated
vendored
83
node_modules/cordova-common/src/PluginManager.js
generated
vendored
@ -36,7 +36,7 @@ var PluginInfoProvider = require('./PluginInfo/PluginInfoProvider');
|
|||||||
* @param {Object} locations - Platform files and directories
|
* @param {Object} locations - Platform files and directories
|
||||||
* @param {IDEProject} ideProject The IDE project to add/remove plugin changes to/from
|
* @param {IDEProject} ideProject The IDE project to add/remove plugin changes to/from
|
||||||
*/
|
*/
|
||||||
function PluginManager(platform, locations, ideProject) {
|
function PluginManager (platform, locations, ideProject) {
|
||||||
this.platform = platform;
|
this.platform = platform;
|
||||||
this.locations = locations;
|
this.locations = locations;
|
||||||
this.project = ideProject;
|
this.project = ideProject;
|
||||||
@ -45,7 +45,6 @@ function PluginManager(platform, locations, ideProject) {
|
|||||||
this.munger = new PlatformMunger(platform, locations.root, platformJson, new PluginInfoProvider());
|
this.munger = new PlatformMunger(platform, locations.root, platformJson, new PluginInfoProvider());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @constructs PluginManager
|
* @constructs PluginManager
|
||||||
* A convenience shortcut to new PluginManager(...)
|
* A convenience shortcut to new PluginManager(...)
|
||||||
@ -55,7 +54,7 @@ function PluginManager(platform, locations, ideProject) {
|
|||||||
* @param {IDEProject} ideProject The IDE project to add/remove plugin changes to/from
|
* @param {IDEProject} ideProject The IDE project to add/remove plugin changes to/from
|
||||||
* @returns new PluginManager instance
|
* @returns new PluginManager instance
|
||||||
*/
|
*/
|
||||||
PluginManager.get = function(platform, locations, ideProject) {
|
PluginManager.get = function (platform, locations, ideProject) {
|
||||||
return new PluginManager(platform, locations, ideProject);
|
return new PluginManager(platform, locations, ideProject);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -82,11 +81,9 @@ module.exports = PluginManager;
|
|||||||
* @returns {Promise} Returns a Q promise, either resolved in case of success, rejected otherwise.
|
* @returns {Promise} Returns a Q promise, either resolved in case of success, rejected otherwise.
|
||||||
*/
|
*/
|
||||||
PluginManager.prototype.doOperation = function (operation, plugin, options) {
|
PluginManager.prototype.doOperation = function (operation, plugin, options) {
|
||||||
if (operation !== PluginManager.INSTALL && operation !== PluginManager.UNINSTALL)
|
if (operation !== PluginManager.INSTALL && operation !== PluginManager.UNINSTALL) { return Q.reject(new CordovaError('The parameter is incorrect. The opeation must be either "add" or "remove"')); }
|
||||||
return Q.reject(new CordovaError('The parameter is incorrect. The opeation must be either "add" or "remove"'));
|
|
||||||
|
|
||||||
if (!plugin || plugin.constructor.name !== 'PluginInfo')
|
if (!plugin || plugin.constructor.name !== 'PluginInfo') { return Q.reject(new CordovaError('The parameter is incorrect. The first parameter should be a PluginInfo instance')); }
|
||||||
return Q.reject(new CordovaError('The parameter is incorrect. The first parameter should be a PluginInfo instance'));
|
|
||||||
|
|
||||||
// Set default to empty object to play safe when accesing properties
|
// Set default to empty object to play safe when accesing properties
|
||||||
options = options || {};
|
options = options || {};
|
||||||
@ -95,52 +92,52 @@ PluginManager.prototype.doOperation = function (operation, plugin, options) {
|
|||||||
var actions = new ActionStack();
|
var actions = new ActionStack();
|
||||||
|
|
||||||
// gather all files need to be handled during operation ...
|
// gather all files need to be handled during operation ...
|
||||||
plugin.getFilesAndFrameworks(this.platform)
|
plugin.getFilesAndFrameworks(this.platform, options)
|
||||||
.concat(plugin.getAssets(this.platform))
|
.concat(plugin.getAssets(this.platform))
|
||||||
.concat(plugin.getJsModules(this.platform))
|
.concat(plugin.getJsModules(this.platform))
|
||||||
// ... put them into stack ...
|
// ... put them into stack ...
|
||||||
.forEach(function(item) {
|
.forEach(function (item) {
|
||||||
var installer = self.project.getInstaller(item.itemType);
|
var installer = self.project.getInstaller(item.itemType);
|
||||||
var uninstaller = self.project.getUninstaller(item.itemType);
|
var uninstaller = self.project.getUninstaller(item.itemType);
|
||||||
var actionArgs = [item, plugin, self.project, options];
|
var actionArgs = [item, plugin, self.project, options];
|
||||||
|
|
||||||
var action;
|
var action;
|
||||||
if (operation === PluginManager.INSTALL) {
|
if (operation === PluginManager.INSTALL) {
|
||||||
action = actions.createAction.apply(actions, [installer, actionArgs, uninstaller, actionArgs]);
|
action = actions.createAction.apply(actions, [installer, actionArgs, uninstaller, actionArgs]); /* eslint no-useless-call: 0 */
|
||||||
} else /* op === PluginManager.UNINSTALL */{
|
} else /* op === PluginManager.UNINSTALL */{
|
||||||
action = actions.createAction.apply(actions, [uninstaller, actionArgs, installer, actionArgs]);
|
action = actions.createAction.apply(actions, [uninstaller, actionArgs, installer, actionArgs]); /* eslint no-useless-call: 0 */
|
||||||
}
|
}
|
||||||
actions.push(action);
|
actions.push(action);
|
||||||
});
|
});
|
||||||
|
|
||||||
// ... and run through the action stack
|
// ... and run through the action stack
|
||||||
return actions.process(this.platform)
|
return actions.process(this.platform)
|
||||||
.then(function () {
|
.then(function () {
|
||||||
if (self.project.write) {
|
if (self.project.write) {
|
||||||
self.project.write();
|
self.project.write();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (operation === PluginManager.INSTALL) {
|
if (operation === PluginManager.INSTALL) {
|
||||||
// Ignore passed `is_top_level` option since platform itself doesn't know
|
// Ignore passed `is_top_level` option since platform itself doesn't know
|
||||||
// anything about managing dependencies - it's responsibility of caller.
|
// anything about managing dependencies - it's responsibility of caller.
|
||||||
self.munger.add_plugin_changes(plugin, options.variables, /*is_top_level=*/true, /*should_increment=*/true, options.force);
|
self.munger.add_plugin_changes(plugin, options.variables, /* is_top_level= */true, /* should_increment= */true, options.force);
|
||||||
self.munger.platformJson.addPluginMetadata(plugin);
|
self.munger.platformJson.addPluginMetadata(plugin);
|
||||||
} else {
|
} else {
|
||||||
self.munger.remove_plugin_changes(plugin, /*is_top_level=*/true);
|
self.munger.remove_plugin_changes(plugin, /* is_top_level= */true);
|
||||||
self.munger.platformJson.removePluginMetadata(plugin);
|
self.munger.platformJson.removePluginMetadata(plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save everything (munge and plugin/modules metadata)
|
// Save everything (munge and plugin/modules metadata)
|
||||||
self.munger.save_all();
|
self.munger.save_all();
|
||||||
|
|
||||||
var metadata = self.munger.platformJson.generateMetadata();
|
var metadata = self.munger.platformJson.generateMetadata();
|
||||||
fs.writeFileSync(path.join(self.locations.www, 'cordova_plugins.js'), metadata, 'utf-8');
|
fs.writeFileSync(path.join(self.locations.www, 'cordova_plugins.js'), metadata, 'utf-8');
|
||||||
|
|
||||||
// CB-11022 save plugin metadata to both www and platform_www if options.usePlatformWww is specified
|
// CB-11022 save plugin metadata to both www and platform_www if options.usePlatformWww is specified
|
||||||
if (options.usePlatformWww) {
|
if (options.usePlatformWww) {
|
||||||
fs.writeFileSync(path.join(self.locations.platformWww, 'cordova_plugins.js'), metadata, 'utf-8');
|
fs.writeFileSync(path.join(self.locations.platformWww, 'cordova_plugins.js'), metadata, 'utf-8');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
PluginManager.prototype.addPlugin = function (plugin, installOptions) {
|
PluginManager.prototype.addPlugin = function (plugin, installOptions) {
|
||||||
|
3
node_modules/cordova-common/src/events.js
generated
vendored
3
node_modules/cordova-common/src/events.js
generated
vendored
@ -40,8 +40,7 @@ module.exports.forwardEventsTo = function (eventEmitter) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(eventEmitter instanceof EventEmitter))
|
if (!(eventEmitter instanceof EventEmitter)) { throw new Error('Cordova events can 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.
|
// CB-10940 Skipping forwarding to self to avoid infinite recursion.
|
||||||
// This is the case when the modules are npm-linked.
|
// This is the case when the modules are npm-linked.
|
||||||
|
25
node_modules/cordova-common/src/superspawn.js
generated
vendored
25
node_modules/cordova-common/src/superspawn.js
generated
vendored
@ -24,12 +24,12 @@ var _ = require('underscore');
|
|||||||
var Q = require('q');
|
var Q = require('q');
|
||||||
var shell = require('shelljs');
|
var shell = require('shelljs');
|
||||||
var events = require('./events');
|
var events = require('./events');
|
||||||
var iswin32 = process.platform == 'win32';
|
var iswin32 = process.platform === 'win32';
|
||||||
|
|
||||||
// On Windows, spawn() for batch files requires absolute path & having the extension.
|
// On Windows, spawn() for batch files requires absolute path & having the extension.
|
||||||
function resolveWindowsExe(cmd) {
|
function resolveWindowsExe (cmd) {
|
||||||
var winExtensions = ['.exe', '.bat', '.cmd', '.js', '.vbs'];
|
var winExtensions = ['.exe', '.bat', '.cmd', '.js', '.vbs'];
|
||||||
function isValidExe(c) {
|
function isValidExe (c) {
|
||||||
return winExtensions.indexOf(path.extname(c)) !== -1 && fs.existsSync(c);
|
return winExtensions.indexOf(path.extname(c)) !== -1 && fs.existsSync(c);
|
||||||
}
|
}
|
||||||
if (isValidExe(cmd)) {
|
if (isValidExe(cmd)) {
|
||||||
@ -37,7 +37,7 @@ function resolveWindowsExe(cmd) {
|
|||||||
}
|
}
|
||||||
cmd = shell.which(cmd) || cmd;
|
cmd = shell.which(cmd) || cmd;
|
||||||
if (!isValidExe(cmd)) {
|
if (!isValidExe(cmd)) {
|
||||||
winExtensions.some(function(ext) {
|
winExtensions.some(function (ext) {
|
||||||
if (fs.existsSync(cmd + ext)) {
|
if (fs.existsSync(cmd + ext)) {
|
||||||
cmd = cmd + ext;
|
cmd = cmd + ext;
|
||||||
return true;
|
return true;
|
||||||
@ -47,7 +47,7 @@ function resolveWindowsExe(cmd) {
|
|||||||
return cmd;
|
return cmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
function maybeQuote(a) {
|
function maybeQuote (a) {
|
||||||
if (/^[^"].*[ &].*[^"]/.test(a)) return '"' + a + '"';
|
if (/^[^"].*[ &].*[^"]/.test(a)) return '"' + a + '"';
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
@ -85,7 +85,7 @@ function maybeQuote(a) {
|
|||||||
* 'stderr': ...
|
* 'stderr': ...
|
||||||
* }
|
* }
|
||||||
*/
|
*/
|
||||||
exports.spawn = function(cmd, args, opts) {
|
exports.spawn = function (cmd, args, opts) {
|
||||||
args = args || [];
|
args = args || [];
|
||||||
opts = opts || {};
|
opts = opts || {};
|
||||||
var spawnOpts = {};
|
var spawnOpts = {};
|
||||||
@ -95,7 +95,7 @@ exports.spawn = function(cmd, args, opts) {
|
|||||||
cmd = resolveWindowsExe(cmd);
|
cmd = resolveWindowsExe(cmd);
|
||||||
// If we couldn't find the file, likely we'll end up failing,
|
// If we couldn't find the file, likely we'll end up failing,
|
||||||
// but for things like "del", cmd will do the trick.
|
// but for things like "del", cmd will do the trick.
|
||||||
if (path.extname(cmd) != '.exe') {
|
if (path.extname(cmd) !== '.exe') {
|
||||||
var cmdArgs = '"' + [cmd].concat(args).map(maybeQuote).join(' ') + '"';
|
var cmdArgs = '"' + [cmd].concat(args).map(maybeQuote).join(' ') + '"';
|
||||||
// We need to use /s to ensure that spaces are parsed properly with cmd spawned content
|
// We need to use /s to ensure that spaces are parsed properly with cmd spawned content
|
||||||
args = [['/s', '/c', cmdArgs].join(' ')];
|
args = [['/s', '/c', cmdArgs].join(' ')];
|
||||||
@ -137,7 +137,7 @@ exports.spawn = function(cmd, args, opts) {
|
|||||||
|
|
||||||
if (child.stdout) {
|
if (child.stdout) {
|
||||||
child.stdout.setEncoding('utf8');
|
child.stdout.setEncoding('utf8');
|
||||||
child.stdout.on('data', function(data) {
|
child.stdout.on('data', function (data) {
|
||||||
capturedOut += data;
|
capturedOut += data;
|
||||||
d.notify({'stdout': data});
|
d.notify({'stdout': data});
|
||||||
});
|
});
|
||||||
@ -145,7 +145,7 @@ exports.spawn = function(cmd, args, opts) {
|
|||||||
|
|
||||||
if (child.stderr) {
|
if (child.stderr) {
|
||||||
child.stderr.setEncoding('utf8');
|
child.stderr.setEncoding('utf8');
|
||||||
child.stderr.on('data', function(data) {
|
child.stderr.on('data', function (data) {
|
||||||
capturedErr += data;
|
capturedErr += data;
|
||||||
d.notify({'stderr': data});
|
d.notify({'stderr': data});
|
||||||
});
|
});
|
||||||
@ -153,10 +153,10 @@ exports.spawn = function(cmd, args, opts) {
|
|||||||
|
|
||||||
child.on('close', whenDone);
|
child.on('close', whenDone);
|
||||||
child.on('error', whenDone);
|
child.on('error', whenDone);
|
||||||
function whenDone(arg) {
|
function whenDone (arg) {
|
||||||
child.removeListener('close', whenDone);
|
child.removeListener('close', whenDone);
|
||||||
child.removeListener('error', whenDone);
|
child.removeListener('error', whenDone);
|
||||||
var code = typeof arg == 'number' ? arg : arg && arg.code;
|
var code = typeof arg === 'number' ? arg : arg && arg.code;
|
||||||
|
|
||||||
events.emit('verbose', 'Command finished with error code ' + code + ': ' + cmd + ' ' + args);
|
events.emit('verbose', 'Command finished with error code ' + code + ': ' + cmd + ' ' + args);
|
||||||
if (code === 0) {
|
if (code === 0) {
|
||||||
@ -181,10 +181,9 @@ exports.spawn = function(cmd, args, opts) {
|
|||||||
return d.promise;
|
return d.promise;
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.maybeSpawn = function(cmd, args, opts) {
|
exports.maybeSpawn = function (cmd, args, opts) {
|
||||||
if (fs.existsSync(cmd)) {
|
if (fs.existsSync(cmd)) {
|
||||||
return exports.spawn(cmd, args, opts);
|
return exports.spawn(cmd, args, opts);
|
||||||
}
|
}
|
||||||
return Q(null);
|
return Q(null);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
4
node_modules/cordova-common/src/util/addProperty.js
generated
vendored
4
node_modules/cordova-common/src/util/addProperty.js
generated
vendored
@ -17,8 +17,8 @@
|
|||||||
under the License.
|
under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module.exports = function addProperty(module, property, modulePath, obj) {
|
module.exports = function addProperty (module, property, modulePath, obj) {
|
||||||
|
|
||||||
obj = obj || module.exports;
|
obj = obj || module.exports;
|
||||||
// Add properties as getter to delay load the modules on first invocation
|
// Add properties as getter to delay load the modules on first invocation
|
||||||
Object.defineProperty(obj, property, {
|
Object.defineProperty(obj, property, {
|
||||||
|
51
node_modules/cordova-common/src/util/plist-helpers.js
generated
vendored
51
node_modules/cordova-common/src/util/plist-helpers.js
generated
vendored
@ -15,32 +15,32 @@
|
|||||||
KIND, either express or implied. See the License for the
|
KIND, either express or implied. See the License for the
|
||||||
specific language governing permissions and limitations
|
specific language governing permissions and limitations
|
||||||
under the License.
|
under the License.
|
||||||
*/
|
*/
|
||||||
|
/* eslint no-useless-escape: 0 */
|
||||||
|
|
||||||
// contains PLIST utility functions
|
// contains PLIST utility functions
|
||||||
var __ = require('underscore');
|
var __ = require('underscore');
|
||||||
var plist = require('plist');
|
var plist = require('plist');
|
||||||
|
|
||||||
// adds node to doc at selector
|
// adds node to doc at selector
|
||||||
module.exports.graftPLIST = graftPLIST;
|
module.exports.graftPLIST = graftPLIST;
|
||||||
function graftPLIST(doc, xml, selector) {
|
function graftPLIST (doc, xml, selector) {
|
||||||
var obj = plist.parse('<plist>'+xml+'</plist>');
|
var obj = plist.parse('<plist>' + xml + '</plist>');
|
||||||
|
|
||||||
var node = doc[selector];
|
var node = doc[selector];
|
||||||
if (node && Array.isArray(node) && Array.isArray(obj)){
|
if (node && Array.isArray(node) && Array.isArray(obj)) {
|
||||||
node = node.concat(obj);
|
node = node.concat(obj);
|
||||||
for (var i =0;i<node.length; i++){
|
for (var i = 0; i < node.length; i++) {
|
||||||
for (var j=i+1; j<node.length; ++j) {
|
for (var j = i + 1; j < node.length; ++j) {
|
||||||
if (nodeEqual(node[i], node[j]))
|
if (nodeEqual(node[i], node[j])) { node.splice(j--, 1); }
|
||||||
node.splice(j--,1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
doc[selector] = node;
|
doc[selector] = node;
|
||||||
} else {
|
} else {
|
||||||
//plist uses objects for <dict>. If we have two dicts we merge them instead of
|
// plist uses objects for <dict>. If we have two dicts we merge them instead of
|
||||||
// overriding the old one. See CB-6472
|
// overriding the old one. See CB-6472
|
||||||
if (node && __.isObject(node) && __.isObject(obj) && !__.isDate(node) && !__.isDate(obj)){//arrays checked above
|
if (node && __.isObject(node) && __.isObject(obj) && !__.isDate(node) && !__.isDate(obj)) { // arrays checked above
|
||||||
__.extend(obj,node);
|
__.extend(obj, node);
|
||||||
}
|
}
|
||||||
doc[selector] = obj;
|
doc[selector] = obj;
|
||||||
}
|
}
|
||||||
@ -50,15 +50,15 @@ function graftPLIST(doc, xml, selector) {
|
|||||||
|
|
||||||
// removes node from doc at selector
|
// removes node from doc at selector
|
||||||
module.exports.prunePLIST = prunePLIST;
|
module.exports.prunePLIST = prunePLIST;
|
||||||
function prunePLIST(doc, xml, selector) {
|
function prunePLIST (doc, xml, selector) {
|
||||||
var obj = plist.parse('<plist>'+xml+'</plist>');
|
var obj = plist.parse('<plist>' + xml + '</plist>');
|
||||||
|
|
||||||
pruneOBJECT(doc, selector, obj);
|
pruneOBJECT(doc, selector, obj);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function pruneOBJECT(doc, selector, fragment) {
|
function pruneOBJECT (doc, selector, fragment) {
|
||||||
if (Array.isArray(fragment) && Array.isArray(doc[selector])) {
|
if (Array.isArray(fragment) && Array.isArray(doc[selector])) {
|
||||||
var empty = true;
|
var empty = true;
|
||||||
for (var i in fragment) {
|
for (var i in fragment) {
|
||||||
@ -66,13 +66,11 @@ function pruneOBJECT(doc, selector, fragment) {
|
|||||||
empty = pruneOBJECT(doc[selector], j, fragment[i]) && empty;
|
empty = pruneOBJECT(doc[selector], j, fragment[i]) && empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (empty)
|
if (empty) {
|
||||||
{
|
|
||||||
delete doc[selector];
|
delete doc[selector];
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
} else if (nodeEqual(doc[selector], fragment)) {
|
||||||
else if (nodeEqual(doc[selector], fragment)) {
|
|
||||||
delete doc[selector];
|
delete doc[selector];
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -80,14 +78,11 @@ function pruneOBJECT(doc, selector, fragment) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function nodeEqual(node1, node2) {
|
function nodeEqual (node1, node2) {
|
||||||
if (typeof node1 != typeof node2)
|
if (typeof node1 !== typeof node2) { return false; } else if (typeof node1 === 'string') {
|
||||||
return false;
|
node2 = escapeRE(node2).replace(/\\\$\S+/gm, '(.*?)');
|
||||||
else if (typeof node1 == 'string') {
|
|
||||||
node2 = escapeRE(node2).replace(new RegExp('\\$[a-zA-Z0-9-_]+','gm'),'(.*?)');
|
|
||||||
return new RegExp('^' + node2 + '$').test(node1);
|
return new RegExp('^' + node2 + '$').test(node1);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
for (var key in node2) {
|
for (var key in node2) {
|
||||||
if (!nodeEqual(node1[key], node2[key])) return false;
|
if (!nodeEqual(node1[key], node2[key])) return false;
|
||||||
}
|
}
|
||||||
@ -96,6 +91,6 @@ function nodeEqual(node1, node2) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// escape string for use in regex
|
// escape string for use in regex
|
||||||
function escapeRE(str) {
|
function escapeRE (str) {
|
||||||
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '$&');
|
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&');
|
||||||
}
|
}
|
||||||
|
137
node_modules/cordova-common/src/util/xml-helpers.js
generated
vendored
137
node_modules/cordova-common/src/util/xml-helpers.js
generated
vendored
@ -15,32 +15,31 @@
|
|||||||
KIND, either express or implied. See the License for the
|
KIND, either express or implied. See the License for the
|
||||||
specific language governing permissions and limitations
|
specific language governing permissions and limitations
|
||||||
under the License.
|
under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* jshint sub:true, laxcomma:true */
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* contains XML utility functions, some of which are specific to elementtree
|
* contains XML utility functions, some of which are specific to elementtree
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var fs = require('fs')
|
var fs = require('fs');
|
||||||
, path = require('path')
|
var path = require('path');
|
||||||
, _ = require('underscore')
|
var _ = require('underscore');
|
||||||
, et = require('elementtree')
|
var et = require('elementtree');
|
||||||
;
|
|
||||||
|
|
||||||
var ROOT = /^\/([^\/]*)/,
|
/* eslint-disable no-useless-escape */
|
||||||
ABSOLUTE = /^\/([^\/]*)\/(.*)/;
|
var ROOT = /^\/([^\/]*)/;
|
||||||
|
var ABSOLUTE = /^\/([^\/]*)\/(.*)/;
|
||||||
|
/* eslint-enable no-useless-escape */
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
// compare two et.XML nodes, see if they match
|
// compare two et.XML nodes, see if they match
|
||||||
// compares tagName, text, attributes and children (recursively)
|
// compares tagName, text, attributes and children (recursively)
|
||||||
equalNodes: function(one, two) {
|
equalNodes: function (one, two) {
|
||||||
if (one.tag != two.tag) {
|
if (one.tag !== two.tag) {
|
||||||
return false;
|
return false;
|
||||||
} else if (one.text.trim() != two.text.trim()) {
|
} else if (one.text.trim() !== two.text.trim()) {
|
||||||
return false;
|
return false;
|
||||||
} else if (one._children.length != two._children.length) {
|
} else if (one._children.length !== two._children.length) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,13 +55,13 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// adds node to doc at selector, creating parent if it doesn't exist
|
// adds node to doc at selector, creating parent if it doesn't exist
|
||||||
graftXML: function(doc, nodes, selector, after) {
|
graftXML: function (doc, nodes, selector, after) {
|
||||||
var parent = module.exports.resolveParent(doc, selector);
|
var parent = module.exports.resolveParent(doc, selector);
|
||||||
if (!parent) {
|
if (!parent) {
|
||||||
//Try to create the parent recursively if necessary
|
// Try to create the parent recursively if necessary
|
||||||
try {
|
try {
|
||||||
var parentToCreate = et.XML('<' + path.basename(selector) + '>'),
|
var parentToCreate = et.XML('<' + path.basename(selector) + '>');
|
||||||
parentSelector = path.dirname(selector);
|
var parentSelector = path.dirname(selector);
|
||||||
|
|
||||||
this.graftXML(doc, [parentToCreate], parentSelector);
|
this.graftXML(doc, [parentToCreate], parentSelector);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@ -78,7 +77,7 @@ module.exports = {
|
|||||||
var children = parent.getchildren();
|
var children = parent.getchildren();
|
||||||
var insertIdx = after ? findInsertIdx(children, after) : children.length;
|
var insertIdx = after ? findInsertIdx(children, after) : children.length;
|
||||||
|
|
||||||
//TODO: replace with parent.insert after the bug in ElementTree is fixed
|
// TODO: replace with parent.insert after the bug in ElementTree is fixed
|
||||||
parent.getchildren().splice(insertIdx, 0, node);
|
parent.getchildren().splice(insertIdx, 0, node);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -88,7 +87,7 @@ module.exports = {
|
|||||||
|
|
||||||
// adds new attributes to doc at selector
|
// adds new attributes to doc at selector
|
||||||
// Will only merge if attribute has not been modified already or --force is used
|
// Will only merge if attribute has not been modified already or --force is used
|
||||||
graftXMLMerge: function(doc, nodes, selector, xml) {
|
graftXMLMerge: function (doc, nodes, selector, xml) {
|
||||||
var target = module.exports.resolveParent(doc, selector);
|
var target = module.exports.resolveParent(doc, selector);
|
||||||
if (!target) return false;
|
if (!target) return false;
|
||||||
|
|
||||||
@ -107,7 +106,7 @@ module.exports = {
|
|||||||
|
|
||||||
// overwrite all attributes to doc at selector with new attributes
|
// overwrite all attributes to doc at selector with new attributes
|
||||||
// Will only overwrite if attribute has not been modified already or --force is used
|
// Will only overwrite if attribute has not been modified already or --force is used
|
||||||
graftXMLOverwrite: function(doc, nodes, selector, xml) {
|
graftXMLOverwrite: function (doc, nodes, selector, xml) {
|
||||||
var target = module.exports.resolveParent(doc, selector);
|
var target = module.exports.resolveParent(doc, selector);
|
||||||
if (!target) return false;
|
if (!target) return false;
|
||||||
|
|
||||||
@ -132,7 +131,7 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// removes node from doc at selector
|
// removes node from doc at selector
|
||||||
pruneXML: function(doc, nodes, selector) {
|
pruneXML: function (doc, nodes, selector) {
|
||||||
var parent = module.exports.resolveParent(doc, selector);
|
var parent = module.exports.resolveParent(doc, selector);
|
||||||
if (!parent) return false;
|
if (!parent) return false;
|
||||||
|
|
||||||
@ -149,7 +148,7 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// restores attributes from doc at selector
|
// restores attributes from doc at selector
|
||||||
pruneXMLRestore: function(doc, selector, xml) {
|
pruneXMLRestore: function (doc, selector, xml) {
|
||||||
var target = module.exports.resolveParent(doc, selector);
|
var target = module.exports.resolveParent(doc, selector);
|
||||||
if (!target) return false;
|
if (!target) return false;
|
||||||
|
|
||||||
@ -160,7 +159,7 @@ module.exports = {
|
|||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
prunXMLRemove: function(doc, selector, nodes) {
|
pruneXMLRemove: function (doc, selector, nodes) {
|
||||||
var target = module.exports.resolveParent(doc, selector);
|
var target = module.exports.resolveParent(doc, selector);
|
||||||
if (!target) return false;
|
if (!target) return false;
|
||||||
|
|
||||||
@ -177,11 +176,10 @@ module.exports = {
|
|||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
parseElementtreeSync: function (filename) {
|
parseElementtreeSync: function (filename) {
|
||||||
var contents = fs.readFileSync(filename, 'utf-8');
|
var contents = fs.readFileSync(filename, 'utf-8');
|
||||||
if(contents) {
|
if (contents) {
|
||||||
//Windows is the BOM. Skip the Byte Order Mark.
|
// Windows is the BOM. Skip the Byte Order Mark.
|
||||||
contents = contents.substring(contents.indexOf('<'));
|
contents = contents.substring(contents.indexOf('<'));
|
||||||
}
|
}
|
||||||
return new et.ElementTree(et.XML(contents));
|
return new et.ElementTree(et.XML(contents));
|
||||||
@ -194,7 +192,7 @@ module.exports = {
|
|||||||
if (ROOT.test(selector)) {
|
if (ROOT.test(selector)) {
|
||||||
tagName = selector.match(ROOT)[1];
|
tagName = selector.match(ROOT)[1];
|
||||||
// test for wildcard "any-tag" root selector
|
// test for wildcard "any-tag" root selector
|
||||||
if (tagName == '*' || tagName === doc._root.tag) {
|
if (tagName === '*' || tagName === doc._root.tag) {
|
||||||
parent = doc._root;
|
parent = doc._root;
|
||||||
|
|
||||||
// could be an absolute path, but not selecting the root
|
// could be an absolute path, but not selecting the root
|
||||||
@ -212,11 +210,12 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function findChild(node, parent) {
|
function findChild (node, parent) {
|
||||||
var matchingKids = parent.findall(node.tag)
|
var matchingKids = parent.findall(node.tag);
|
||||||
, i, j;
|
var i;
|
||||||
|
var j;
|
||||||
|
|
||||||
for (i = 0, j = matchingKids.length ; i < j ; i++) {
|
for (i = 0, j = matchingKids.length; i < j; i++) {
|
||||||
if (module.exports.equalNodes(node, matchingKids[i])) {
|
if (module.exports.equalNodes(node, matchingKids[i])) {
|
||||||
return matchingKids[i];
|
return matchingKids[i];
|
||||||
}
|
}
|
||||||
@ -224,13 +223,13 @@ function findChild(node, parent) {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function uniqueChild(node, parent) {
|
function uniqueChild (node, parent) {
|
||||||
var matchingKids = parent.findall(node.tag)
|
var matchingKids = parent.findall(node.tag);
|
||||||
, i = 0;
|
var i = 0;
|
||||||
|
|
||||||
if (matchingKids.length === 0) {
|
if (matchingKids.length === 0) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
for (i; i < matchingKids.length; i++) {
|
for (i; i < matchingKids.length; i++) {
|
||||||
if (module.exports.equalNodes(node, matchingKids[i])) {
|
if (module.exports.equalNodes(node, matchingKids[i])) {
|
||||||
return false;
|
return false;
|
||||||
@ -244,51 +243,51 @@ function uniqueChild(node, parent) {
|
|||||||
// of tags after which the insertion should be made. E.g. If we need to
|
// of tags after which the insertion should be made. E.g. If we need to
|
||||||
// insert an element C, and the rule is that the order of children has to be
|
// insert an element C, and the rule is that the order of children has to be
|
||||||
// As, Bs, Cs. After will be equal to "C;B;A".
|
// As, Bs, Cs. After will be equal to "C;B;A".
|
||||||
function findInsertIdx(children, after) {
|
function findInsertIdx (children, after) {
|
||||||
var childrenTags = children.map(function(child) { return child.tag; });
|
var childrenTags = children.map(function (child) { return child.tag; });
|
||||||
var afters = after.split(';');
|
var afters = after.split(';');
|
||||||
var afterIndexes = afters.map(function(current) { return childrenTags.lastIndexOf(current); });
|
var afterIndexes = afters.map(function (current) { return childrenTags.lastIndexOf(current); });
|
||||||
var foundIndex = _.find(afterIndexes, function(index) { return index != -1; });
|
var foundIndex = _.find(afterIndexes, function (index) { return index !== -1; });
|
||||||
|
|
||||||
//add to the beginning if no matching nodes are found
|
// add to the beginning if no matching nodes are found
|
||||||
return typeof foundIndex === 'undefined' ? 0 : foundIndex+1;
|
return typeof foundIndex === 'undefined' ? 0 : foundIndex + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
var BLACKLIST = ['platform', 'feature','plugin','engine'];
|
var BLACKLIST = ['platform', 'feature', 'plugin', 'engine'];
|
||||||
var SINGLETONS = ['content', 'author', 'name'];
|
var SINGLETONS = ['content', 'author', 'name'];
|
||||||
function mergeXml(src, dest, platform, clobber) {
|
function mergeXml (src, dest, platform, clobber) {
|
||||||
// Do nothing for blacklisted tags.
|
// Do nothing for blacklisted tags.
|
||||||
if (BLACKLIST.indexOf(src.tag) != -1) return;
|
if (BLACKLIST.indexOf(src.tag) !== -1) return;
|
||||||
|
|
||||||
//Handle attributes
|
// Handle attributes
|
||||||
Object.getOwnPropertyNames(src.attrib).forEach(function (attribute) {
|
Object.getOwnPropertyNames(src.attrib).forEach(function (attribute) {
|
||||||
if (clobber || !dest.attrib[attribute]) {
|
if (clobber || !dest.attrib[attribute]) {
|
||||||
dest.attrib[attribute] = src.attrib[attribute];
|
dest.attrib[attribute] = src.attrib[attribute];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
//Handle text
|
// Handle text
|
||||||
if (src.text && (clobber || !dest.text)) {
|
if (src.text && (clobber || !dest.text)) {
|
||||||
dest.text = src.text;
|
dest.text = src.text;
|
||||||
}
|
}
|
||||||
//Handle children
|
// Handle children
|
||||||
src.getchildren().forEach(mergeChild);
|
src.getchildren().forEach(mergeChild);
|
||||||
|
|
||||||
//Handle platform
|
// Handle platform
|
||||||
if (platform) {
|
if (platform) {
|
||||||
src.findall('platform[@name="' + platform + '"]').forEach(function (platformElement) {
|
src.findall('platform[@name="' + platform + '"]').forEach(function (platformElement) {
|
||||||
platformElement.getchildren().forEach(mergeChild);
|
platformElement.getchildren().forEach(mergeChild);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
//Handle duplicate preference tags (by name attribute)
|
// Handle duplicate preference tags (by name attribute)
|
||||||
removeDuplicatePreferences(dest);
|
removeDuplicatePreferences(dest);
|
||||||
|
|
||||||
function mergeChild (srcChild) {
|
function mergeChild (srcChild) {
|
||||||
var srcTag = srcChild.tag,
|
var srcTag = srcChild.tag;
|
||||||
destChild = new et.Element(srcTag),
|
var destChild = new et.Element(srcTag);
|
||||||
foundChild,
|
var foundChild;
|
||||||
query = srcTag + '',
|
var query = srcTag + '';
|
||||||
shouldMerge = true;
|
var shouldMerge = true;
|
||||||
|
|
||||||
if (BLACKLIST.indexOf(srcTag) !== -1) return;
|
if (BLACKLIST.indexOf(srcTag) !== -1) return;
|
||||||
|
|
||||||
@ -299,11 +298,11 @@ function mergeXml(src, dest, platform, clobber) {
|
|||||||
dest.remove(destChild);
|
dest.remove(destChild);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//Check for an exact match and if you find one don't add
|
// Check for an exact match and if you find one don't add
|
||||||
var mergeCandidates = dest.findall(query)
|
var mergeCandidates = dest.findall(query)
|
||||||
.filter(function (foundChild) {
|
.filter(function (foundChild) {
|
||||||
return foundChild && textMatch(srcChild, foundChild) && attribMatch(srcChild, foundChild);
|
return foundChild && textMatch(srcChild, foundChild) && attribMatch(srcChild, foundChild);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (mergeCandidates.length > 0) {
|
if (mergeCandidates.length > 0) {
|
||||||
destChild = mergeCandidates[0];
|
destChild = mergeCandidates[0];
|
||||||
@ -316,20 +315,20 @@ function mergeXml(src, dest, platform, clobber) {
|
|||||||
dest.append(destChild);
|
dest.append(destChild);
|
||||||
}
|
}
|
||||||
|
|
||||||
function removeDuplicatePreferences(xml) {
|
function removeDuplicatePreferences (xml) {
|
||||||
// reduce preference tags to a hashtable to remove dupes
|
// reduce preference tags to a hashtable to remove dupes
|
||||||
var prefHash = xml.findall('preference[@name][@value]').reduce(function(previousValue, currentValue) {
|
var prefHash = xml.findall('preference[@name][@value]').reduce(function (previousValue, currentValue) {
|
||||||
previousValue[ currentValue.attrib.name ] = currentValue.attrib.value;
|
previousValue[ currentValue.attrib.name ] = currentValue.attrib.value;
|
||||||
return previousValue;
|
return previousValue;
|
||||||
}, {});
|
}, {});
|
||||||
|
|
||||||
// remove all preferences
|
// remove all preferences
|
||||||
xml.findall('preference[@name][@value]').forEach(function(pref) {
|
xml.findall('preference[@name][@value]').forEach(function (pref) {
|
||||||
xml.remove(pref);
|
xml.remove(pref);
|
||||||
});
|
});
|
||||||
|
|
||||||
// write new preferences
|
// write new preferences
|
||||||
Object.keys(prefHash).forEach(function(key, index) {
|
Object.keys(prefHash).forEach(function (key, index) {
|
||||||
var element = et.SubElement(xml, 'preference');
|
var element = et.SubElement(xml, 'preference');
|
||||||
element.set('name', key);
|
element.set('name', key);
|
||||||
element.set('value', this[key]);
|
element.set('value', this[key]);
|
||||||
@ -340,24 +339,24 @@ function mergeXml(src, dest, platform, clobber) {
|
|||||||
// Expose for testing.
|
// Expose for testing.
|
||||||
module.exports.mergeXml = mergeXml;
|
module.exports.mergeXml = mergeXml;
|
||||||
|
|
||||||
function textMatch(elm1, elm2) {
|
function textMatch (elm1, elm2) {
|
||||||
var text1 = elm1.text ? elm1.text.replace(/\s+/, '') : '',
|
var text1 = elm1.text ? elm1.text.replace(/\s+/, '') : '';
|
||||||
text2 = elm2.text ? elm2.text.replace(/\s+/, '') : '';
|
var text2 = elm2.text ? elm2.text.replace(/\s+/, '') : '';
|
||||||
return (text1 === '' || text1 === text2);
|
return (text1 === '' || text1 === text2);
|
||||||
}
|
}
|
||||||
|
|
||||||
function attribMatch(one, two) {
|
function attribMatch (one, two) {
|
||||||
var oneAttribKeys = Object.keys(one.attrib);
|
var oneAttribKeys = Object.keys(one.attrib);
|
||||||
var twoAttribKeys = Object.keys(two.attrib);
|
var twoAttribKeys = Object.keys(two.attrib);
|
||||||
|
|
||||||
if (oneAttribKeys.length != twoAttribKeys.length) {
|
if (oneAttribKeys.length !== twoAttribKeys.length) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < oneAttribKeys.length; i++) {
|
for (var i = 0; i < oneAttribKeys.length; i++) {
|
||||||
var attribName = oneAttribKeys[i];
|
var attribName = oneAttribKeys[i];
|
||||||
|
|
||||||
if (one.attrib[attribName] != two.attrib[attribName]) {
|
if (one.attrib[attribName] !== two.attrib[attribName]) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
3
node_modules/cordova-registry-mapper/package.json
generated
vendored
3
node_modules/cordova-registry-mapper/package.json
generated
vendored
@ -73,7 +73,8 @@
|
|||||||
],
|
],
|
||||||
"name": "cordova-registry-mapper",
|
"name": "cordova-registry-mapper",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "[](https://travis-ci.org/stevengill/cordova-registry-mapper)\n\n#Cordova Registry Mapper\n\nThis module is used to map Cordova plugin ids to package names and vice versa.\n\nWhen Cordova users add plugins to their projects using ids\n(e.g. `cordova plugin add org.apache.cordova.device`),\nthis module will map that id to the corresponding package name so `cordova-lib` knows what to fetch from **npm**.\n\nThis module was created so the Apache Cordova project could migrate its plugins from\nthe [Cordova Registry](http://registry.cordova.io/)\nto [npm](https://registry.npmjs.com/)\ninstead of having to maintain a registry.\n",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/stevengill/cordova-registry-mapper.git"
|
"url": "git+https://github.com/stevengill/cordova-registry-mapper.git"
|
||||||
|
3
node_modules/elementtree/package.json
generated
vendored
3
node_modules/elementtree/package.json
generated
vendored
@ -97,7 +97,8 @@
|
|||||||
],
|
],
|
||||||
"name": "elementtree",
|
"name": "elementtree",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "node-elementtree\n====================\n\nnode-elementtree is a [Node.js](http://nodejs.org) XML parser and serializer based upon the [Python ElementTree v1.3](http://effbot.org/zone/element-index.htm) module.\n\nInstallation\n====================\n\n $ npm install elementtree\n \nUsing the library\n====================\n\nFor the usage refer to the Python ElementTree library documentation - [http://effbot.org/zone/element-index.htm#usage](http://effbot.org/zone/element-index.htm#usage).\n\nSupported XPath expressions in `find`, `findall` and `findtext` methods are listed on [http://effbot.org/zone/element-xpath.htm](http://effbot.org/zone/element-xpath.htm).\n\nExample 1 – Creating An XML Document\n====================\n\nThis example shows how to build a valid XML document that can be published to\nAtom Hopper. Atom Hopper is used internally as a bridge from products all the\nway to collecting revenue, called “Usage.” MaaS and other products send similar\nevents to it every time user performs an action on a resource\n(e.g. creates,updates or deletes). Below is an example of leveraging the API\nto create a new XML document.\n\n```javascript\nvar et = require('elementtree');\nvar XML = et.XML;\nvar ElementTree = et.ElementTree;\nvar element = et.Element;\nvar subElement = et.SubElement;\n\nvar date, root, tenantId, serviceName, eventType, usageId, dataCenter, region,\nchecks, resourceId, category, startTime, resourceName, etree, xml;\n\ndate = new Date();\n\nroot = element('entry');\nroot.set('xmlns', 'http://www.w3.org/2005/Atom');\n\ntenantId = subElement(root, 'TenantId');\ntenantId.text = '12345';\n\nserviceName = subElement(root, 'ServiceName');\nserviceName.text = 'MaaS';\n\nresourceId = subElement(root, 'ResourceID');\nresourceId.text = 'enAAAA';\n\nusageId = subElement(root, 'UsageID');\nusageId.text = '550e8400-e29b-41d4-a716-446655440000';\n\neventType = subElement(root, 'EventType');\neventType.text = 'create';\n\ncategory = subElement(root, 'category');\ncategory.set('term', 'monitoring.entity.create');\n\ndataCenter = subElement(root, 'DataCenter');\ndataCenter.text = 'global';\n\nregion = subElement(root, 'Region');\nregion.text = 'global';\n\nstartTime = subElement(root, 'StartTime');\nstartTime.text = date;\n\nresourceName = subElement(root, 'ResourceName');\nresourceName.text = 'entity';\n\netree = new ElementTree(root);\nxml = etree.write({'xml_declaration': false});\nconsole.log(xml);\n```\n\nAs you can see, both et.Element and et.SubElement are factory methods which\nreturn a new instance of Element and SubElement class, respectively.\nWhen you create a new element (tag) you can use set method to set an attribute.\nTo set the tag value, assign a value to the .text attribute.\n\nThis example would output a document that looks like this:\n\n```xml\n<entry xmlns=\"http://www.w3.org/2005/Atom\">\n <TenantId>12345</TenantId>\n <ServiceName>MaaS</ServiceName>\n <ResourceID>enAAAA</ResourceID>\n <UsageID>550e8400-e29b-41d4-a716-446655440000</UsageID>\n <EventType>create</EventType>\n <category term=\"monitoring.entity.create\"/>\n <DataCenter>global</DataCenter>\n <Region>global</Region>\n <StartTime>Sun Apr 29 2012 16:37:32 GMT-0700 (PDT)</StartTime>\n <ResourceName>entity</ResourceName>\n</entry>\n```\n\nExample 2 – Parsing An XML Document\n====================\n\nThis example shows how to parse an XML document and use simple XPath selectors.\nFor demonstration purposes, we will use the XML document located at\nhttps://gist.github.com/2554343.\n\nBehind the scenes, node-elementtree uses Isaac’s sax library for parsing XML,\nbut the library has a concept of “parsers,” which means it’s pretty simple to\nadd support for a different parser.\n\n```javascript\nvar fs = require('fs');\n\nvar et = require('elementtree');\n\nvar XML = et.XML;\nvar ElementTree = et.ElementTree;\nvar element = et.Element;\nvar subElement = et.SubElement;\n\nvar data, etree;\n\ndata = fs.readFileSync('document.xml').toString();\netree = et.parse(data);\n\nconsole.log(etree.findall('./entry/TenantId').length); // 2\nconsole.log(etree.findtext('./entry/ServiceName')); // MaaS\nconsole.log(etree.findall('./entry/category')[0].get('term')); // monitoring.entity.create\nconsole.log(etree.findall('*/category/[@term=\"monitoring.entity.update\"]').length); // 1\n```\n\nBuild status\n====================\n\n[](http://travis-ci.org/racker/node-elementtree)\n\n\nLicense\n====================\n\nnode-elementtree is distributed under the [Apache license](http://www.apache.org/licenses/LICENSE-2.0.html).\n",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git://github.com/racker/node-elementtree.git"
|
"url": "git://github.com/racker/node-elementtree.git"
|
||||||
|
3
node_modules/glob/package.json
generated
vendored
3
node_modules/glob/package.json
generated
vendored
File diff suppressed because one or more lines are too long
3
node_modules/inflight/package.json
generated
vendored
3
node_modules/inflight/package.json
generated
vendored
@ -93,7 +93,8 @@
|
|||||||
],
|
],
|
||||||
"name": "inflight",
|
"name": "inflight",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "# inflight\n\nAdd callbacks to requests in flight to avoid async duplication\n\n## USAGE\n\n```javascript\nvar inflight = require('inflight')\n\n// some request that does some stuff\nfunction req(key, callback) {\n // key is any random string. like a url or filename or whatever.\n //\n // will return either a falsey value, indicating that the\n // request for this key is already in flight, or a new callback\n // which when called will call all callbacks passed to inflightk\n // with the same key\n callback = inflight(key, callback)\n\n // If we got a falsey value back, then there's already a req going\n if (!callback) return\n\n // this is where you'd fetch the url or whatever\n // callback is also once()-ified, so it can safely be assigned\n // to multiple events etc. First call wins.\n setTimeout(function() {\n callback(null, key)\n }, 100)\n}\n\n// only assigns a single setTimeout\n// when it dings, all cbs get called\nreq('foo', cb1)\nreq('foo', cb2)\nreq('foo', cb3)\nreq('foo', cb4)\n```\n",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/npm/inflight.git"
|
"url": "git+https://github.com/npm/inflight.git"
|
||||||
|
3
node_modules/inherits/package.json
generated
vendored
3
node_modules/inherits/package.json
generated
vendored
@ -85,7 +85,8 @@
|
|||||||
],
|
],
|
||||||
"name": "inherits",
|
"name": "inherits",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "Browser-friendly inheritance fully compatible with standard node.js\n[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).\n\nThis package exports standard `inherits` from node.js `util` module in\nnode environment, but also provides alternative browser-friendly\nimplementation through [browser\nfield](https://gist.github.com/shtylman/4339901). Alternative\nimplementation is a literal copy of standard one located in standalone\nmodule to avoid requiring of `util`. It also has a shim for old\nbrowsers with no `Object.create` support.\n\nWhile keeping you sure you are using standard `inherits`\nimplementation in node.js environment, it allows bundlers such as\n[browserify](https://github.com/substack/node-browserify) to not\ninclude full `util` package to your client code if all you need is\njust `inherits` function. It worth, because browser shim for `util`\npackage is large and `inherits` is often the single function you need\nfrom it.\n\nIt's recommended to use this package instead of\n`require('util').inherits` for any code that has chances to be used\nnot only in node.js but in browser too.\n\n## usage\n\n```js\nvar inherits = require('inherits');\n// then use exactly as the standard one\n```\n\n## note on version ~1.0\n\nVersion ~1.0 had completely different motivation and is not compatible\nneither with 2.0 nor with standard node.js `inherits`.\n\nIf you are using version ~1.0 and planning to switch to ~2.0, be\ncareful:\n\n* new version uses `super_` instead of `super` for referencing\n superclass\n* new version overwrites current prototype while old one preserves any\n existing fields on it\n",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git://github.com/isaacs/inherits.git"
|
"url": "git://github.com/isaacs/inherits.git"
|
||||||
|
3
node_modules/lodash/package.json
generated
vendored
3
node_modules/lodash/package.json
generated
vendored
File diff suppressed because one or more lines are too long
37
node_modules/minimatch/package.json
generated
vendored
37
node_modules/minimatch/package.json
generated
vendored
File diff suppressed because one or more lines are too long
3
node_modules/nopt/package.json
generated
vendored
3
node_modules/nopt/package.json
generated
vendored
File diff suppressed because one or more lines are too long
3
node_modules/once/package.json
generated
vendored
3
node_modules/once/package.json
generated
vendored
@ -89,7 +89,8 @@
|
|||||||
],
|
],
|
||||||
"name": "once",
|
"name": "once",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "# once\n\nOnly call a function once.\n\n## usage\n\n```javascript\nvar once = require('once')\n\nfunction load (file, cb) {\n cb = once(cb)\n loader.load('file')\n loader.once('load', cb)\n loader.once('error', cb)\n}\n```\n\nOr add to the Function.prototype in a responsible way:\n\n```javascript\n// only has to be done once\nrequire('once').proto()\n\nfunction load (file, cb) {\n cb = cb.once()\n loader.load('file')\n loader.once('load', cb)\n loader.once('error', cb)\n}\n```\n\nIronically, the prototype feature makes this module twice as\ncomplicated as necessary.\n\nTo check whether you function has been called, use `fn.called`. Once the\nfunction is called for the first time the return value of the original\nfunction is saved in `fn.value` and subsequent calls will continue to\nreturn this value.\n\n```javascript\nvar once = require('once')\n\nfunction load (cb) {\n cb = once(cb)\n var stream = createStream()\n stream.once('data', cb)\n stream.once('end', function () {\n if (!cb.called) cb(new Error('not found'))\n })\n}\n```\n\n## `once.strict(func)`\n\nThrow an error if the function is called twice.\n\nSome functions are expected to be called only once. Using `once` for them would\npotentially hide logical errors.\n\nIn the example below, the `greet` function has to call the callback only once:\n\n```javascript\nfunction greet (name, cb) {\n // return is missing from the if statement\n // when no name is passed, the callback is called twice\n if (!name) cb('Hello anonymous')\n cb('Hello ' + name)\n}\n\nfunction log (msg) {\n console.log(msg)\n}\n\n// this will print 'Hello anonymous' but the logical error will be missed\ngreet(null, once(msg))\n\n// once.strict will print 'Hello anonymous' and throw an error when the callback will be called the second time\ngreet(null, once.strict(msg))\n```\n",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git://github.com/isaacs/once.git"
|
"url": "git://github.com/isaacs/once.git"
|
||||||
|
3
node_modules/os-homedir/package.json
generated
vendored
3
node_modules/os-homedir/package.json
generated
vendored
@ -97,7 +97,8 @@
|
|||||||
],
|
],
|
||||||
"name": "os-homedir",
|
"name": "os-homedir",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "# os-homedir [](https://travis-ci.org/sindresorhus/os-homedir)\n\n> Node.js 4 [`os.homedir()`](https://nodejs.org/api/os.html#os_os_homedir) [ponyfill](https://ponyfill.com)\n\n\n## Install\n\n```\n$ npm install --save os-homedir\n```\n\n\n## Usage\n\n```js\nconst osHomedir = require('os-homedir');\n\nconsole.log(osHomedir());\n//=> '/Users/sindresorhus'\n```\n\n\n## Related\n\n- [user-home](https://github.com/sindresorhus/user-home) - Same as this module but caches the result\n- [home-or-tmp](https://github.com/sindresorhus/home-or-tmp) - Get the user home directory with fallback to the system temp directory\n\n\n## License\n\nMIT © [Sindre Sorhus](https://sindresorhus.com)\n",
|
||||||
|
"readmeFilename": "readme.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/sindresorhus/os-homedir.git"
|
"url": "git+https://github.com/sindresorhus/os-homedir.git"
|
||||||
|
3
node_modules/os-tmpdir/package.json
generated
vendored
3
node_modules/os-tmpdir/package.json
generated
vendored
@ -97,7 +97,8 @@
|
|||||||
],
|
],
|
||||||
"name": "os-tmpdir",
|
"name": "os-tmpdir",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "# os-tmpdir [](https://travis-ci.org/sindresorhus/os-tmpdir)\n\n> Node.js [`os.tmpdir()`](https://nodejs.org/api/os.html#os_os_tmpdir) [ponyfill](https://ponyfill.com)\n\nUse this instead of `require('os').tmpdir()` to get a consistent behavior on different Node.js versions (even 0.8).\n\n\n## Install\n\n```\n$ npm install --save os-tmpdir\n```\n\n\n## Usage\n\n```js\nconst osTmpdir = require('os-tmpdir');\n\nosTmpdir();\n//=> '/var/folders/m3/5574nnhn0yj488ccryqr7tc80000gn/T'\n```\n\n\n## API\n\nSee the [`os.tmpdir()` docs](https://nodejs.org/api/os.html#os_os_tmpdir).\n\n\n## License\n\nMIT © [Sindre Sorhus](https://sindresorhus.com)\n",
|
||||||
|
"readmeFilename": "readme.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/sindresorhus/os-tmpdir.git"
|
"url": "git+https://github.com/sindresorhus/os-tmpdir.git"
|
||||||
|
3
node_modules/osenv/package.json
generated
vendored
3
node_modules/osenv/package.json
generated
vendored
@ -101,7 +101,8 @@
|
|||||||
],
|
],
|
||||||
"name": "osenv",
|
"name": "osenv",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "# osenv\n\nLook up environment settings specific to different operating systems.\n\n## Usage\n\n```javascript\nvar osenv = require('osenv')\nvar path = osenv.path()\nvar user = osenv.user()\n// etc.\n\n// Some things are not reliably in the env, and have a fallback command:\nvar h = osenv.hostname(function (er, hostname) {\n h = hostname\n})\n// This will still cause it to be memoized, so calling osenv.hostname()\n// is now an immediate operation.\n\n// You can always send a cb, which will get called in the nextTick\n// if it's been memoized, or wait for the fallback data if it wasn't\n// found in the environment.\nosenv.hostname(function (er, hostname) {\n if (er) console.error('error looking up hostname')\n else console.log('this machine calls itself %s', hostname)\n})\n```\n\n## osenv.hostname()\n\nThe machine name. Calls `hostname` if not found.\n\n## osenv.user()\n\nThe currently logged-in user. Calls `whoami` if not found.\n\n## osenv.prompt()\n\nEither PS1 on unix, or PROMPT on Windows.\n\n## osenv.tmpdir()\n\nThe place where temporary files should be created.\n\n## osenv.home()\n\nNo place like it.\n\n## osenv.path()\n\nAn array of the places that the operating system will search for\nexecutables.\n\n## osenv.editor() \n\nReturn the executable name of the editor program. This uses the EDITOR\nand VISUAL environment variables, and falls back to `vi` on Unix, or\n`notepad.exe` on Windows.\n\n## osenv.shell()\n\nThe SHELL on Unix, which Windows calls the ComSpec. Defaults to 'bash'\nor 'cmd'.\n",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/npm/osenv.git"
|
"url": "git+https://github.com/npm/osenv.git"
|
||||||
|
3
node_modules/path-is-absolute/package.json
generated
vendored
3
node_modules/path-is-absolute/package.json
generated
vendored
@ -99,7 +99,8 @@
|
|||||||
],
|
],
|
||||||
"name": "path-is-absolute",
|
"name": "path-is-absolute",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "# path-is-absolute [](https://travis-ci.org/sindresorhus/path-is-absolute)\n\n> Node.js 0.12 [`path.isAbsolute()`](http://nodejs.org/api/path.html#path_path_isabsolute_path) [ponyfill](https://ponyfill.com)\n\n\n## Install\n\n```\n$ npm install --save path-is-absolute\n```\n\n\n## Usage\n\n```js\nconst pathIsAbsolute = require('path-is-absolute');\n\n// Running on Linux\npathIsAbsolute('/home/foo');\n//=> true\npathIsAbsolute('C:/Users/foo');\n//=> false\n\n// Running on Windows\npathIsAbsolute('C:/Users/foo');\n//=> true\npathIsAbsolute('/home/foo');\n//=> false\n\n// Running on any OS\npathIsAbsolute.posix('/home/foo');\n//=> true\npathIsAbsolute.posix('C:/Users/foo');\n//=> false\npathIsAbsolute.win32('C:/Users/foo');\n//=> true\npathIsAbsolute.win32('/home/foo');\n//=> false\n```\n\n\n## API\n\nSee the [`path.isAbsolute()` docs](http://nodejs.org/api/path.html#path_path_isabsolute_path).\n\n### pathIsAbsolute(path)\n\n### pathIsAbsolute.posix(path)\n\nPOSIX specific version.\n\n### pathIsAbsolute.win32(path)\n\nWindows specific version.\n\n\n## License\n\nMIT © [Sindre Sorhus](https://sindresorhus.com)\n",
|
||||||
|
"readmeFilename": "readme.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/sindresorhus/path-is-absolute.git"
|
"url": "git+https://github.com/sindresorhus/path-is-absolute.git"
|
||||||
|
3
node_modules/plist/package.json
generated
vendored
3
node_modules/plist/package.json
generated
vendored
@ -113,7 +113,8 @@
|
|||||||
],
|
],
|
||||||
"name": "plist",
|
"name": "plist",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "plist.js\n========\n### Mac OS X Plist parser/builder for Node.js and browsers\n\n[](https://saucelabs.com/u/plistjs)\n\n[](https://travis-ci.org/TooTallNate/plist.js)\n\nProvides facilities for reading and writing Mac OS X Plist (property list)\nfiles. These are often used in programming OS X and iOS applications, as\nwell as the iTunes configuration XML file.\n\nPlist files represent stored programming \"object\"s. They are very similar\nto JSON. A valid Plist file is representable as a native JavaScript Object\nand vice-versa.\n\n\n## Usage\n\n### Node.js\n\nInstall using `npm`:\n\n``` bash\n$ npm install --save plist\n```\n\nThen `require()` the _plist_ module in your file:\n\n``` js\nvar plist = require('plist');\n\n// now use the `parse()` and `build()` functions\nvar val = plist.parse('<plist><string>Hello World!</string></plist>');\nconsole.log(val); // \"Hello World!\"\n```\n\n\n### Browser\n\nInclude the `dist/plist.js` in a `<script>` tag in your HTML file:\n\n``` html\n<script src=\"plist.js\"></script>\n<script>\n // now use the `parse()` and `build()` functions\n var val = plist.parse('<plist><string>Hello World!</string></plist>');\n console.log(val); // \"Hello World!\"\n</script>\n```\n\n\n## API\n\n### Parsing\n\nParsing a plist from filename:\n\n``` javascript\nvar fs = require('fs');\nvar plist = require('plist');\n\nvar obj = plist.parse(fs.readFileSync('myPlist.plist', 'utf8'));\nconsole.log(JSON.stringify(obj));\n```\n\nParsing a plist from string payload:\n\n``` javascript\nvar plist = require('plist');\n\nvar obj = plist.parse('<plist><string>Hello World!</string></plist>');\nconsole.log(obj); // Hello World!\n```\n\n### Building\n\nGiven an existing JavaScript Object, you can turn it into an XML document\nthat complies with the plist DTD:\n\n``` javascript\nvar plist = require('plist');\n\nconsole.log(plist.build({ foo: 'bar' }));\n```\n\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2010-2014 Nathan Rajlich <nathan@tootallnate.net>\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git://github.com/TooTallNate/node-plist.git"
|
"url": "git://github.com/TooTallNate/node-plist.git"
|
||||||
|
10
node_modules/properties-parser/package.json
generated
vendored
10
node_modules/properties-parser/package.json
generated
vendored
@ -54,7 +54,7 @@
|
|||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.3.1"
|
"node": ">= 0.3.1"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/xavi-/node-properties-parser",
|
"homepage": "https://github.com/xavi-/node-properties-parser#readme",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"parser",
|
"parser",
|
||||||
".properties",
|
".properties",
|
||||||
@ -66,13 +66,15 @@
|
|||||||
"main": "./index.js",
|
"main": "./index.js",
|
||||||
"maintainers": [
|
"maintainers": [
|
||||||
{
|
{
|
||||||
"name": "xavi",
|
"name": "Xavi",
|
||||||
"email": "xavi.rmz@gmail.com"
|
"email": "xavi.rmz@gmail.com",
|
||||||
|
"url": "http://xavi.co"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"name": "properties-parser",
|
"name": "properties-parser",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "# node-properties-parser\n\nA parser for [.properties](http://en.wikipedia.org/wiki/.properties) files written in javascript. Properties files store key-value pairs. They are typically used for configuration and internationalization in Java applications as well as in Actionscript projects. Here's an example of the format:\n\n\t# You are reading the \".properties\" entry.\n\t! The exclamation mark can also mark text as comments.\n\twebsite = http://en.wikipedia.org/\n\tlanguage = English\n\t# The backslash below tells the application to continue reading\n\t# the value onto the next line.\n\tmessage = Welcome to \\\n\t Wikipedia!\n\t# Add spaces to the key\n\tkey\\ with\\ spaces = This is the value that could be looked up with the key \"key with spaces\".\n\t# Unicode\n\ttab : \\u0009\n*(taken from [Wikipedia](http://en.wikipedia.org/wiki/.properties#Format))*\n\nCurrently works with any version of node.js.\n\n## The API\n\n- `parse(text)`: Parses `text` into key-value pairs. Returns an object containing the key-value pairs.\n- `read(path[, callback])`: Opens the file specified by `path` and calls `parse` on its content. If the optional `callback` parameter is provided, the result is then passed to it as the second parameter. If an error occurs, the error object is passed to `callback` as the first parameter. If `callback` is not provided, the file specified by `path` is synchronously read and calls `parse` on its contents. The resulting object is immediately returned.\n- `createEditor([path[, callback]])`: If neither `path` or `callback` are provided an empty editor object is returned synchronously. If only `path` is provided, the file specified by `path` is synchronously read and parsed. An editor object with the results in then immediately returned. If both `path` and `callback` are provided, the file specified by `path` is read and parsed asynchronously. An editor object with the results are then passed to `callback` as the second parameters. If an error occurs, the error object is passed to `callback` as the first parameter.\n- `Editor`: The editor object is returned by `createEditor`. Has the following API:\n\t- `get(key)`: Returns the value currently associated with `key`.\n\t- `set(key, [value[, comment]])`: Associates `key` with `value`. An optional comment can be provided. If `value` is not specified or is `null`, then `key` is unset.\n\t- `unset(key)`: Unsets the specified `key`.\n\t- `save([path][, callback]])`: Writes the current contents of this editor object to a file specified by `path`. If `path` is not provided, then it'll be defaulted to the `path` value passed to `createEditor`. The `callback` parameter is called when the file has been written to disk.\n\t- `addHeadComment`: Added a comment to the head of the file.\n\t- `toString`: Returns the string representation of this properties editor object. This string will be written to a file if `save` is called.\n\n## Getting node-properties-parser\n\nThe easiest way to get node-properties-parser is with [npm](http://npmjs.org/):\n\n\tnpm install properties-parser\n\nAlternatively you can clone this git repository:\n\n\tgit://github.com/xavi-/node-properties-parser.git\n\n## Developed by\n* Xavi Ramirez\n\n## License\nThis project is released under [The MIT License](http://www.opensource.org/licenses/mit-license.php).",
|
||||||
|
"readmeFilename": "README.markdown",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/xavi-/node-properties-parser.git"
|
"url": "git+https://github.com/xavi-/node-properties-parser.git"
|
||||||
|
3
node_modules/q/package.json
generated
vendored
3
node_modules/q/package.json
generated
vendored
File diff suppressed because one or more lines are too long
5
node_modules/sax/package.json
generated
vendored
5
node_modules/sax/package.json
generated
vendored
File diff suppressed because one or more lines are too long
90
node_modules/semver/README.md
generated
vendored
90
node_modules/semver/README.md
generated
vendored
@ -1,55 +1,65 @@
|
|||||||
semver(1) -- The semantic versioner for npm
|
semver(1) -- The semantic versioner for npm
|
||||||
===========================================
|
===========================================
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install --save semver
|
||||||
|
````
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
$ npm install semver
|
As a node module:
|
||||||
$ node
|
|
||||||
var semver = require('semver')
|
|
||||||
|
|
||||||
semver.valid('1.2.3') // '1.2.3'
|
```js
|
||||||
semver.valid('a.b.c') // null
|
const semver = require('semver')
|
||||||
semver.clean(' =v1.2.3 ') // '1.2.3'
|
|
||||||
semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
|
semver.valid('1.2.3') // '1.2.3'
|
||||||
semver.gt('1.2.3', '9.8.7') // false
|
semver.valid('a.b.c') // null
|
||||||
semver.lt('1.2.3', '9.8.7') // true
|
semver.clean(' =v1.2.3 ') // '1.2.3'
|
||||||
|
semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
|
||||||
|
semver.gt('1.2.3', '9.8.7') // false
|
||||||
|
semver.lt('1.2.3', '9.8.7') // true
|
||||||
|
```
|
||||||
|
|
||||||
As a command-line utility:
|
As a command-line utility:
|
||||||
|
|
||||||
$ semver -h
|
```
|
||||||
|
$ semver -h
|
||||||
|
|
||||||
SemVer 5.1.0
|
SemVer 5.3.0
|
||||||
|
|
||||||
A JavaScript implementation of the http://semver.org/ specification
|
A JavaScript implementation of the http://semver.org/ specification
|
||||||
Copyright Isaac Z. Schlueter
|
Copyright Isaac Z. Schlueter
|
||||||
|
|
||||||
Usage: semver [options] <version> [<version> [...]]
|
Usage: semver [options] <version> [<version> [...]]
|
||||||
Prints valid versions sorted by SemVer precedence
|
Prints valid versions sorted by SemVer precedence
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
-r --range <range>
|
-r --range <range>
|
||||||
Print versions that match the specified range.
|
Print versions that match the specified range.
|
||||||
|
|
||||||
-i --increment [<level>]
|
-i --increment [<level>]
|
||||||
Increment a version by the specified level. Level can
|
Increment a version by the specified level. Level can
|
||||||
be one of: major, minor, patch, premajor, preminor,
|
be one of: major, minor, patch, premajor, preminor,
|
||||||
prepatch, or prerelease. Default level is 'patch'.
|
prepatch, or prerelease. Default level is 'patch'.
|
||||||
Only one version may be specified.
|
Only one version may be specified.
|
||||||
|
|
||||||
--preid <identifier>
|
--preid <identifier>
|
||||||
Identifier to be used to prefix premajor, preminor,
|
Identifier to be used to prefix premajor, preminor,
|
||||||
prepatch or prerelease version increments.
|
prepatch or prerelease version increments.
|
||||||
|
|
||||||
-l --loose
|
-l --loose
|
||||||
Interpret versions and ranges loosely
|
Interpret versions and ranges loosely
|
||||||
|
|
||||||
Program exits successfully if any valid version satisfies
|
Program exits successfully if any valid version satisfies
|
||||||
all supplied ranges, and prints all satisfying versions.
|
all supplied ranges, and prints all satisfying versions.
|
||||||
|
|
||||||
If no satisfying versions are found, then exits failure.
|
If no satisfying versions are found, then exits failure.
|
||||||
|
|
||||||
Versions are printed in ascending order, so supplying
|
Versions are printed in ascending order, so supplying
|
||||||
multiple versions to the utility will just sort them.
|
multiple versions to the utility will just sort them.
|
||||||
|
```
|
||||||
|
|
||||||
## Versions
|
## Versions
|
||||||
|
|
||||||
@ -126,20 +136,20 @@ The method `.inc` takes an additional `identifier` string argument that
|
|||||||
will append the value of the string as a prerelease identifier:
|
will append the value of the string as a prerelease identifier:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
> semver.inc('1.2.3', 'prerelease', 'beta')
|
semver.inc('1.2.3', 'prerelease', 'beta')
|
||||||
'1.2.4-beta.0'
|
// '1.2.4-beta.0'
|
||||||
```
|
```
|
||||||
|
|
||||||
command-line example:
|
command-line example:
|
||||||
|
|
||||||
```shell
|
```bash
|
||||||
$ semver 1.2.3 -i prerelease --preid beta
|
$ semver 1.2.3 -i prerelease --preid beta
|
||||||
1.2.4-beta.0
|
1.2.4-beta.0
|
||||||
```
|
```
|
||||||
|
|
||||||
Which then can be used to increment further:
|
Which then can be used to increment further:
|
||||||
|
|
||||||
```shell
|
```bash
|
||||||
$ semver 1.2.4-beta.0 -i prerelease
|
$ semver 1.2.4-beta.0 -i prerelease
|
||||||
1.2.4-beta.1
|
1.2.4-beta.1
|
||||||
```
|
```
|
||||||
@ -296,6 +306,8 @@ strings that they parse.
|
|||||||
* `major(v)`: Return the major version number.
|
* `major(v)`: Return the major version number.
|
||||||
* `minor(v)`: Return the minor version number.
|
* `minor(v)`: Return the minor version number.
|
||||||
* `patch(v)`: Return the patch version number.
|
* `patch(v)`: Return the patch version number.
|
||||||
|
* `intersects(r1, r2, loose)`: Return true if the two supplied ranges
|
||||||
|
or comparators intersect.
|
||||||
|
|
||||||
### Comparison
|
### Comparison
|
||||||
|
|
||||||
@ -319,6 +331,9 @@ strings that they parse.
|
|||||||
(`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
|
(`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
|
||||||
or null if the versions are the same.
|
or null if the versions are the same.
|
||||||
|
|
||||||
|
### Comparators
|
||||||
|
|
||||||
|
* `intersects(comparator)`: Return true if the comparators intersect
|
||||||
|
|
||||||
### Ranges
|
### Ranges
|
||||||
|
|
||||||
@ -337,6 +352,7 @@ strings that they parse.
|
|||||||
the bounds of the range in either the high or low direction. The
|
the bounds of the range in either the high or low direction. The
|
||||||
`hilo` argument must be either the string `'>'` or `'<'`. (This is
|
`hilo` argument must be either the string `'>'` or `'<'`. (This is
|
||||||
the function called by `gtr` and `ltr`.)
|
the function called by `gtr` and `ltr`.)
|
||||||
|
* `intersects(range)`: Return true if any of the ranges comparators intersect
|
||||||
|
|
||||||
Note that, since ranges may be non-contiguous, a version might not be
|
Note that, since ranges may be non-contiguous, a version might not be
|
||||||
greater than a range, less than a range, *or* satisfy a range! For
|
greater than a range, less than a range, *or* satisfy a range! For
|
||||||
|
32
node_modules/semver/package.json
generated
vendored
32
node_modules/semver/package.json
generated
vendored
File diff suppressed because one or more lines are too long
119
node_modules/semver/semver.js
generated
vendored
119
node_modules/semver/semver.js
generated
vendored
@ -563,7 +563,7 @@ function patch(a, loose) {
|
|||||||
|
|
||||||
exports.compare = compare;
|
exports.compare = compare;
|
||||||
function compare(a, b, loose) {
|
function compare(a, b, loose) {
|
||||||
return new SemVer(a, loose).compare(b);
|
return new SemVer(a, loose).compare(new SemVer(b, loose));
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.compareLoose = compareLoose;
|
exports.compareLoose = compareLoose;
|
||||||
@ -704,11 +704,59 @@ Comparator.prototype.test = function(version) {
|
|||||||
return cmp(version, this.operator, this.semver, this.loose);
|
return cmp(version, this.operator, this.semver, this.loose);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Comparator.prototype.intersects = function(comp, loose) {
|
||||||
|
if (!(comp instanceof Comparator)) {
|
||||||
|
throw new TypeError('a Comparator is required');
|
||||||
|
}
|
||||||
|
|
||||||
|
var rangeTmp;
|
||||||
|
|
||||||
|
if (this.operator === '') {
|
||||||
|
rangeTmp = new Range(comp.value, loose);
|
||||||
|
return satisfies(this.value, rangeTmp, loose);
|
||||||
|
} else if (comp.operator === '') {
|
||||||
|
rangeTmp = new Range(this.value, loose);
|
||||||
|
return satisfies(comp.semver, rangeTmp, loose);
|
||||||
|
}
|
||||||
|
|
||||||
|
var sameDirectionIncreasing =
|
||||||
|
(this.operator === '>=' || this.operator === '>') &&
|
||||||
|
(comp.operator === '>=' || comp.operator === '>');
|
||||||
|
var sameDirectionDecreasing =
|
||||||
|
(this.operator === '<=' || this.operator === '<') &&
|
||||||
|
(comp.operator === '<=' || comp.operator === '<');
|
||||||
|
var sameSemVer = this.semver.version === comp.semver.version;
|
||||||
|
var differentDirectionsInclusive =
|
||||||
|
(this.operator === '>=' || this.operator === '<=') &&
|
||||||
|
(comp.operator === '>=' || comp.operator === '<=');
|
||||||
|
var oppositeDirectionsLessThan =
|
||||||
|
cmp(this.semver, '<', comp.semver, loose) &&
|
||||||
|
((this.operator === '>=' || this.operator === '>') &&
|
||||||
|
(comp.operator === '<=' || comp.operator === '<'));
|
||||||
|
var oppositeDirectionsGreaterThan =
|
||||||
|
cmp(this.semver, '>', comp.semver, loose) &&
|
||||||
|
((this.operator === '<=' || this.operator === '<') &&
|
||||||
|
(comp.operator === '>=' || comp.operator === '>'));
|
||||||
|
|
||||||
|
return sameDirectionIncreasing || sameDirectionDecreasing ||
|
||||||
|
(sameSemVer && differentDirectionsInclusive) ||
|
||||||
|
oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
exports.Range = Range;
|
exports.Range = Range;
|
||||||
function Range(range, loose) {
|
function Range(range, loose) {
|
||||||
if ((range instanceof Range) && range.loose === loose)
|
if (range instanceof Range) {
|
||||||
return range;
|
if (range.loose === loose) {
|
||||||
|
return range;
|
||||||
|
} else {
|
||||||
|
return new Range(range.raw, loose);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (range instanceof Comparator) {
|
||||||
|
return new Range(range.value, loose);
|
||||||
|
}
|
||||||
|
|
||||||
if (!(this instanceof Range))
|
if (!(this instanceof Range))
|
||||||
return new Range(range, loose);
|
return new Range(range, loose);
|
||||||
@ -783,6 +831,22 @@ Range.prototype.parseRange = function(range) {
|
|||||||
return set;
|
return set;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Range.prototype.intersects = function(range, loose) {
|
||||||
|
if (!(range instanceof Range)) {
|
||||||
|
throw new TypeError('a Range is required');
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.set.some(function(thisComparators) {
|
||||||
|
return thisComparators.every(function(thisComparator) {
|
||||||
|
return range.set.some(function(rangeComparators) {
|
||||||
|
return rangeComparators.every(function(rangeComparator) {
|
||||||
|
return thisComparator.intersects(rangeComparator, loose);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// Mostly just for testing and legacy API reasons
|
// Mostly just for testing and legacy API reasons
|
||||||
exports.toComparators = toComparators;
|
exports.toComparators = toComparators;
|
||||||
function toComparators(range, loose) {
|
function toComparators(range, loose) {
|
||||||
@ -1087,20 +1151,42 @@ function satisfies(version, range, loose) {
|
|||||||
|
|
||||||
exports.maxSatisfying = maxSatisfying;
|
exports.maxSatisfying = maxSatisfying;
|
||||||
function maxSatisfying(versions, range, loose) {
|
function maxSatisfying(versions, range, loose) {
|
||||||
return versions.filter(function(version) {
|
var max = null;
|
||||||
return satisfies(version, range, loose);
|
var maxSV = null;
|
||||||
}).sort(function(a, b) {
|
try {
|
||||||
return rcompare(a, b, loose);
|
var rangeObj = new Range(range, loose);
|
||||||
})[0] || null;
|
} catch (er) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
versions.forEach(function (v) {
|
||||||
|
if (rangeObj.test(v)) { // satisfies(v, range, loose)
|
||||||
|
if (!max || maxSV.compare(v) === -1) { // compare(max, v, true)
|
||||||
|
max = v;
|
||||||
|
maxSV = new SemVer(max, loose);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return max;
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.minSatisfying = minSatisfying;
|
exports.minSatisfying = minSatisfying;
|
||||||
function minSatisfying(versions, range, loose) {
|
function minSatisfying(versions, range, loose) {
|
||||||
return versions.filter(function(version) {
|
var min = null;
|
||||||
return satisfies(version, range, loose);
|
var minSV = null;
|
||||||
}).sort(function(a, b) {
|
try {
|
||||||
return compare(a, b, loose);
|
var rangeObj = new Range(range, loose);
|
||||||
})[0] || null;
|
} catch (er) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
versions.forEach(function (v) {
|
||||||
|
if (rangeObj.test(v)) { // satisfies(v, range, loose)
|
||||||
|
if (!min || minSV.compare(v) === 1) { // compare(min, v, true)
|
||||||
|
min = v;
|
||||||
|
minSV = new SemVer(min, loose);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return min;
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.validRange = validRange;
|
exports.validRange = validRange;
|
||||||
@ -1201,3 +1287,10 @@ function prerelease(version, loose) {
|
|||||||
var parsed = parse(version, loose);
|
var parsed = parse(version, loose);
|
||||||
return (parsed && parsed.prerelease.length) ? parsed.prerelease : null;
|
return (parsed && parsed.prerelease.length) ? parsed.prerelease : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exports.intersects = intersects;
|
||||||
|
function intersects(r1, r2, loose) {
|
||||||
|
r1 = new Range(r1, loose)
|
||||||
|
r2 = new Range(r2, loose)
|
||||||
|
return r1.intersects(r2)
|
||||||
|
}
|
||||||
|
3
node_modules/shelljs/package.json
generated
vendored
3
node_modules/shelljs/package.json
generated
vendored
File diff suppressed because one or more lines are too long
3
node_modules/underscore/package.json
generated
vendored
3
node_modules/underscore/package.json
generated
vendored
@ -87,7 +87,8 @@
|
|||||||
],
|
],
|
||||||
"name": "underscore",
|
"name": "underscore",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": " __\n /\\ \\ __\n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____\n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\\n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n \\ \\____/\n \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nUnderscore is an open-sourced component of DocumentCloud:\nhttps://github.com/documentcloud\n\nMany thanks to our contributors:\nhttps://github.com/jashkenas/underscore/contributors\n",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git://github.com/jashkenas/underscore.git"
|
"url": "git://github.com/jashkenas/underscore.git"
|
||||||
|
5
node_modules/unorm/package.json
generated
vendored
5
node_modules/unorm/package.json
generated
vendored
@ -80,7 +80,7 @@
|
|||||||
"node": ">= 0.4.0"
|
"node": ">= 0.4.0"
|
||||||
},
|
},
|
||||||
"gitHead": "e802d0d7844cf74b03742bce1147a82ace218396",
|
"gitHead": "e802d0d7844cf74b03742bce1147a82ace218396",
|
||||||
"homepage": "https://github.com/walling/unorm",
|
"homepage": "https://github.com/walling/unorm#readme",
|
||||||
"license": "MIT or GPL-2.0",
|
"license": "MIT or GPL-2.0",
|
||||||
"main": "./lib/unorm.js",
|
"main": "./lib/unorm.js",
|
||||||
"maintainers": [
|
"maintainers": [
|
||||||
@ -91,7 +91,8 @@
|
|||||||
],
|
],
|
||||||
"name": "unorm",
|
"name": "unorm",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "This is [Unicode Normalizer] in a Common JS module. I'm not affiliated with Matsuza, the original author of Unicode Normalizer.\n\n[](https://travis-ci.org/walling/unorm)\n\n\nInstallation\n------------\n\n```bash\nnpm install unorm\n```\n\nPolyfill\n--------\n\nYou can use this module as a polyfill for [String.prototype.normalize], for example:\n\n```javascript\nconsole.log('æøåäüö'.normalize('NFKD'));\n```\n\nThe module uses some [EcmaScript 5](http://kangax.github.io/es5-compat-table/) features. Other browsers should use a compability shim, e.g. [es5-shim](https://github.com/kriskowal/es5-shim).\n\nFunctions\n---------\n\nThis module exports four functions: `nfc`, `nfd`, `nfkc`, and `nfkd`; one for each Unicode normalization. In the browser the functions are exported in the `unorm` global. In CommonJS environments you just require the module. Functions:\n\n * `unorm.nfd(str)` – Canonical Decomposition\n * `unorm.nfc(str)` – Canonical Decomposition, followed by Canonical Composition\n * `unorm.nfkd(str)` – Compatibility Decomposition\n * `unorm.nfkc(str)` – Compatibility Decomposition, followed by Canonical Composition\n\n\nNode.JS example\n---------------\n\nFor a longer example, see `examples` directory.\n\n```javascript\nvar unorm = require('unorm');\n\nvar text =\n 'The \\u212B symbol invented by A. J. \\u00C5ngstr\\u00F6m ' +\n '(1814, L\\u00F6gd\\u00F6, \\u2013 1874) denotes the length ' +\n '10\\u207B\\u00B9\\u2070 m.';\n\nvar combining = /[\\u0300-\\u036F]/g; // Use XRegExp('\\\\p{M}', 'g'); see example.js.\n\nconsole.log('Regular: ' + text);\nconsole.log('NFC: ' + unorm.nfc(text));\nconsole.log('NFD: ' + unorm.nfd(text));\nconsole.log('NFKC: ' + unorm.nfkc(text));\nconsole.log('NFKD: * ' + unorm.nfkd(text).replace(combining, ''));\nconsole.log(' * = Combining characters removed from decomposed form.');\n```\n\n\nRoad map\n--------\n\nAs of November 2013. Longer term:\n\n- Look at possible optimizations (speed primarely, module size secondarily)\n- Adding functions to quick check normalizations: `is_nfc`, `is_nfd`, etc.\n\n\nContributers\n------------\n\n - **Oleg Grenrus** is helping to maintain this library. He cleaned up the code base, fixed JSHint errors, created a test suite and updated the normalization data to Unicode 6.3.\n\n\nDevelopment notes\n-----------------\n\n- [Unicode normalization forms report](http://www.unicode.org/reports/tr15/)\n- Unicode data can be found from http://www.unicode.org/Public/UCD/latest/ucd\n\nTo generate new unicode data, run:\n```sh\ncd src/data/src\njavac UnormNormalizerBuilder.java\njava UnormNormalizerBuilder\n```\nproduced `unormdata.js` contains needed table\n\nExecute `node benchmark/benchmark.js` to run simple benchmarks, if you do any changes which may affect performance.\n\nLicense\n-------\n\nThis project includes the software package **Unicode Normalizer 1.0.0**. The\nsoftware dual licensed under the MIT and GPL licenses. Here is the MIT license:\n\n Copyright (c) 2008-2013 Matsuza <matsuza@gmail.com>, Bjarke Walling <bwp@bwp.dk>\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to\n deal in the Software without restriction, including without limitation the\n rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n sell copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n IN THE SOFTWARE.\n\n\n[Unicode Normalizer]: http://coderepos.org/share/browser/lang/javascript/UnicodeNormalizer\n[String.prototype.normalize]: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-15.5.3.26\n",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+ssh://git@github.com/walling/unorm.git"
|
"url": "git+ssh://git@github.com/walling/unorm.git"
|
||||||
|
5
node_modules/util-deprecate/package.json
generated
vendored
5
node_modules/util-deprecate/package.json
generated
vendored
@ -36,7 +36,7 @@
|
|||||||
"_requiredBy": [
|
"_requiredBy": [
|
||||||
"/plist"
|
"/plist"
|
||||||
],
|
],
|
||||||
"_resolved": "http://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
"_resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||||
"_shasum": "450d4dc9fa70de732762fbd2d4a28981419a0ccf",
|
"_shasum": "450d4dc9fa70de732762fbd2d4a28981419a0ccf",
|
||||||
"_shrinkwrap": null,
|
"_shrinkwrap": null,
|
||||||
"_spec": "util-deprecate@1.0.2",
|
"_spec": "util-deprecate@1.0.2",
|
||||||
@ -77,7 +77,8 @@
|
|||||||
],
|
],
|
||||||
"name": "util-deprecate",
|
"name": "util-deprecate",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "util-deprecate\n==============\n### The Node.js `util.deprecate()` function with browser support\n\nIn Node.js, this module simply re-exports the `util.deprecate()` function.\n\nIn the web browser (i.e. via browserify), a browser-specific implementation\nof the `util.deprecate()` function is used.\n\n\n## API\n\nA `deprecate()` function is the only thing exposed by this module.\n\n``` javascript\n// setup:\nexports.foo = deprecate(foo, 'foo() is deprecated, use bar() instead');\n\n\n// users see:\nfoo();\n// foo() is deprecated, use bar() instead\nfoo();\nfoo();\n```\n\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2014 Nathan Rajlich <nathan@tootallnate.net>\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git://github.com/TooTallNate/util-deprecate.git"
|
"url": "git://github.com/TooTallNate/util-deprecate.git"
|
||||||
|
3
node_modules/wrappy/package.json
generated
vendored
3
node_modules/wrappy/package.json
generated
vendored
@ -85,7 +85,8 @@
|
|||||||
],
|
],
|
||||||
"name": "wrappy",
|
"name": "wrappy",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "# wrappy\n\nCallback wrapping utility\n\n## USAGE\n\n```javascript\nvar wrappy = require(\"wrappy\")\n\n// var wrapper = wrappy(wrapperFunction)\n\n// make sure a cb is called only once\n// See also: http://npm.im/once for this specific use case\nvar once = wrappy(function (cb) {\n var called = false\n return function () {\n if (called) return\n called = true\n return cb.apply(this, arguments)\n }\n})\n\nfunction printBoo () {\n console.log('boo')\n}\n// has some rando property\nprintBoo.iAmBooPrinter = true\n\nvar onlyPrintOnce = once(printBoo)\n\nonlyPrintOnce() // prints 'boo'\nonlyPrintOnce() // does nothing\n\n// random property is retained!\nassert.equal(onlyPrintOnce.iAmBooPrinter, true)\n```\n",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/npm/wrappy.git"
|
"url": "git+https://github.com/npm/wrappy.git"
|
||||||
|
5
node_modules/xmlbuilder/package.json
generated
vendored
5
node_modules/xmlbuilder/package.json
generated
vendored
@ -35,7 +35,7 @@
|
|||||||
"_requiredBy": [
|
"_requiredBy": [
|
||||||
"/plist"
|
"/plist"
|
||||||
],
|
],
|
||||||
"_resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.0.0.tgz",
|
"_resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.0.0.tgz",
|
||||||
"_shasum": "98b8f651ca30aa624036f127d11cc66dc7b907a3",
|
"_shasum": "98b8f651ca30aa624036f127d11cc66dc7b907a3",
|
||||||
"_shrinkwrap": null,
|
"_shrinkwrap": null,
|
||||||
"_spec": "xmlbuilder@4.0.0",
|
"_spec": "xmlbuilder@4.0.0",
|
||||||
@ -83,7 +83,8 @@
|
|||||||
],
|
],
|
||||||
"name": "xmlbuilder",
|
"name": "xmlbuilder",
|
||||||
"optionalDependencies": {},
|
"optionalDependencies": {},
|
||||||
"readme": "ERROR: No README data found!",
|
"readme": "# xmlbuilder-js\n\nAn XML builder for [node.js](https://nodejs.org/) similar to \n[java-xmlbuilder](https://github.com/jmurty/java-xmlbuilder).\n\n[](http://opensource.org/licenses/MIT)\n[](https://npmjs.com/package/xmlbuilder)\n[](https://npmjs.com/package/xmlbuilder)\n\n[](http://travis-ci.org/oozcitak/xmlbuilder-js)\n[](https://david-dm.org/oozcitak/xmlbuilder-js)\n[](https://david-dm.org/oozcitak/xmlbuilder-js)\n[](https://coveralls.io/github/oozcitak/xmlbuilder-js)\n\n### Installation:\n\n``` sh\nnpm install xmlbuilder\n```\n\n### Usage:\n\n``` js\nvar builder = require('xmlbuilder');\nvar xml = builder.create('root')\n .ele('xmlbuilder')\n .ele('repo', {'type': 'git'}, 'git://github.com/oozcitak/xmlbuilder-js.git')\n .end({ pretty: true});\n \nconsole.log(xml);\n```\n\nwill result in:\n\n``` xml\n<?xml version=\"1.0\"?>\n<root>\n <xmlbuilder>\n <repo type=\"git\">git://github.com/oozcitak/xmlbuilder-js.git</repo>\n </xmlbuilder>\n</root>\n```\n\nIt is also possible to convert objects into nodes:\n\n``` js\nbuilder.create({\n root: {\n xmlbuilder: {\n repo: {\n '@type': 'git', // attributes start with @\n '#text': 'git://github.com/oozcitak/xmlbuilder-js.git' // text node\n }\n }\n }\n});\n```\n\nIf you need to do some processing:\n\n``` js\nvar root = builder.create('squares');\nroot.com('f(x) = x^2');\nfor(var i = 1; i <= 5; i++)\n{\n var item = root.ele('data');\n item.att('x', i);\n item.att('y', i * i);\n}\n```\n\nThis will result in:\n\n``` xml\n<?xml version=\"1.0\"?>\n<squares>\n <!-- f(x) = x^2 -->\n <data x=\"1\" y=\"1\"/>\n <data x=\"2\" y=\"4\"/>\n <data x=\"3\" y=\"9\"/>\n <data x=\"4\" y=\"16\"/>\n <data x=\"5\" y=\"25\"/>\n</squares>\n```\n\nSee the [wiki](https://github.com/oozcitak/xmlbuilder-js/wiki) for details.\n",
|
||||||
|
"readmeFilename": "README.md",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git://github.com/oozcitak/xmlbuilder-js.git"
|
"url": "git://github.com/oozcitak/xmlbuilder-js.git"
|
||||||
|
22
node_modules/xmldom/package.json
generated
vendored
22
node_modules/xmldom/package.json
generated
vendored
File diff suppressed because one or more lines are too long
@ -28,7 +28,7 @@
|
|||||||
"author": "Apache Software Foundation",
|
"author": "Apache Software Foundation",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cordova-common": "^2.0.1",
|
"cordova-common": "^2.1.0",
|
||||||
"elementtree": "0.1.6",
|
"elementtree": "0.1.6",
|
||||||
"nopt": "^3.0.1",
|
"nopt": "^3.0.1",
|
||||||
"properties-parser": "^0.2.3",
|
"properties-parser": "^0.2.3",
|
||||||
|
Loading…
Reference in New Issue
Block a user