mirror of
https://github.com/apache/cordova-android.git
synced 2025-02-20 23:56:20 +08:00
CB-9782 Check in cordova-common dependency
This commit is contained in:
parent
78b7ae72c9
commit
ab72e48431
24
node_modules/cordova-common/.jscs.json
generated
vendored
Normal file
24
node_modules/cordova-common/.jscs.json
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
{
|
||||
"disallowMixedSpacesAndTabs": true,
|
||||
"disallowTrailingWhitespace": true,
|
||||
"validateLineBreaks": "LF",
|
||||
"validateIndentation": 4,
|
||||
"requireLineFeedAtFileEnd": true,
|
||||
|
||||
"disallowSpaceAfterPrefixUnaryOperators": true,
|
||||
"disallowSpaceBeforePostfixUnaryOperators": true,
|
||||
"requireSpaceAfterLineComment": true,
|
||||
"requireCapitalizedConstructors": true,
|
||||
|
||||
"disallowSpacesInNamedFunctionExpression": {
|
||||
"beforeOpeningRoundBrace": true
|
||||
},
|
||||
|
||||
"requireSpaceAfterKeywords": [
|
||||
"if",
|
||||
"else",
|
||||
"for",
|
||||
"while",
|
||||
"do"
|
||||
]
|
||||
}
|
1
node_modules/cordova-common/.jshintignore
generated
vendored
Normal file
1
node_modules/cordova-common/.jshintignore
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
spec/fixtures/*
|
2
node_modules/cordova-common/.npmignore
generated
vendored
Normal file
2
node_modules/cordova-common/.npmignore
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
spec
|
||||
coverage
|
2
node_modules/cordova-common/.ratignore
generated
vendored
Normal file
2
node_modules/cordova-common/.ratignore
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
fixtures
|
||||
coverage
|
33
node_modules/cordova-common/README.md
generated
vendored
Normal file
33
node_modules/cordova-common/README.md
generated
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
<!--
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
-->
|
||||
|
||||
# cordova-common
|
||||
Contains shared classes and routines used by [cordova-lib](https://github.com/apache/cordova-lib/) and platforms.
|
||||
|
||||
## Setup
|
||||
* Clone this repository onto your local machine.
|
||||
`git clone https://git-wip-us.apache.org/repos/asf/cordova-lib.git`
|
||||
* In terminal, navigate to the inner cordova-common directory.
|
||||
`cd cordova-lib/cordova-common`
|
||||
* Install dependencies and npm-link
|
||||
`npm install && npm link`
|
||||
* Navigate to cordova-lib directory and link cordova-common
|
||||
`cd ../cordova-lib && npm link cordova-common && npm install`
|
31
node_modules/cordova-common/RELEASENOTES.md
generated
vendored
Normal file
31
node_modules/cordova-common/RELEASENOTES.md
generated
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
<!--
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
-->
|
||||
# Cordova-common Release Notes
|
||||
|
||||
### 0.1.0 (Oct, 2015)
|
||||
* CB-9598 Correct cordova-lib -> cordova-common in README
|
||||
* Pick ConfigParser changes from apache@0c3614e
|
||||
* CB-9743 Removes system frameworks handling from ConfigChanges
|
||||
* CB-9598 Cleans out code which has been moved to `cordova-common`
|
||||
* Pick ConfigParser changes from apache@ddb027b
|
||||
* Picking CordovaError changes from apache@a3b1fca
|
||||
* CB-9598 Adds tests and fixtures based on existing cordova-lib ones
|
||||
* CB-9598 Initial implementation for cordova-common
|
42
node_modules/cordova-common/cordova-common.js
generated
vendored
Normal file
42
node_modules/cordova-common/cordova-common.js
generated
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
/**
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
*/
|
||||
|
||||
/* jshint node:true */
|
||||
|
||||
// For now expose plugman and cordova just as they were in the old repos
|
||||
exports = module.exports = {
|
||||
events: require('./src/events'),
|
||||
superspawn: require('./src/superspawn'),
|
||||
|
||||
ActionStack: require('./src/ActionStack'),
|
||||
CordovaError: require('./src/CordovaError/CordovaError'),
|
||||
CordovaExternalToolErrorContext: require('./src/CordovaError/CordovaExternalToolErrorContext'),
|
||||
PlatformJson: require('./src/PlatformJson'),
|
||||
ConfigParser: require('./src/ConfigParser/ConfigParser.js'),
|
||||
|
||||
PluginInfo: require('./src/PluginInfo/PluginInfo.js'),
|
||||
PluginInfoProvider: require('./src/PluginInfo/PluginInfoProvider.js'),
|
||||
|
||||
ConfigChanges: require('./src/ConfigChanges/ConfigChanges.js'),
|
||||
ConfigKeeper: require('./src/ConfigChanges/ConfigKeeper.js'),
|
||||
ConfigFile: require('./src/ConfigChanges/ConfigFile.js'),
|
||||
mungeUtil: require('./src/ConfigChanges/munge-util.js'),
|
||||
|
||||
xmlHelpers: require('./src/util/xml-helpers')
|
||||
};
|
8
node_modules/cordova-common/node_modules/bplist-parser/.npmignore
generated
vendored
Normal file
8
node_modules/cordova-common/node_modules/bplist-parser/.npmignore
generated
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
/build/*
|
||||
node_modules
|
||||
*.node
|
||||
*.sh
|
||||
*.swp
|
||||
.lock*
|
||||
npm-debug.log
|
||||
.idea
|
47
node_modules/cordova-common/node_modules/bplist-parser/README.md
generated
vendored
Normal file
47
node_modules/cordova-common/node_modules/bplist-parser/README.md
generated
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
bplist-parser
|
||||
=============
|
||||
|
||||
Binary Mac OS X Plist (property list) parser.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
$ npm install bplist-parser
|
||||
```
|
||||
|
||||
## Quick Examples
|
||||
|
||||
```javascript
|
||||
var bplist = require('bplist-parser');
|
||||
|
||||
bplist.parseFile('myPlist.bplist', function(err, obj) {
|
||||
if (err) throw err;
|
||||
|
||||
console.log(JSON.stringify(obj));
|
||||
});
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
(The MIT License)
|
||||
|
||||
Copyright (c) 2012 Near Infinity Corporation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
337
node_modules/cordova-common/node_modules/bplist-parser/bplistParser.js
generated
vendored
Normal file
337
node_modules/cordova-common/node_modules/bplist-parser/bplistParser.js
generated
vendored
Normal file
@ -0,0 +1,337 @@
|
||||
'use strict';
|
||||
|
||||
// adapted from http://code.google.com/p/plist/source/browse/trunk/src/com/dd/plist/BinaryPropertyListParser.java
|
||||
|
||||
var fs = require('fs');
|
||||
var debug = false;
|
||||
|
||||
exports.maxObjectSize = 100 * 1000 * 1000; // 100Meg
|
||||
exports.maxObjectCount = 32768;
|
||||
|
||||
// EPOCH = new SimpleDateFormat("yyyy MM dd zzz").parse("2001 01 01 GMT").getTime();
|
||||
// ...but that's annoying in a static initializer because it can throw exceptions, ick.
|
||||
// So we just hardcode the correct value.
|
||||
var EPOCH = 978307200000;
|
||||
|
||||
// UID object definition
|
||||
var UID = exports.UID = function(id) {
|
||||
this.UID = id;
|
||||
}
|
||||
|
||||
var parseFile = exports.parseFile = function (fileNameOrBuffer, callback) {
|
||||
function tryParseBuffer(buffer) {
|
||||
var err = null;
|
||||
var result;
|
||||
try {
|
||||
result = parseBuffer(buffer);
|
||||
} catch (ex) {
|
||||
err = ex;
|
||||
}
|
||||
callback(err, result);
|
||||
}
|
||||
|
||||
if (Buffer.isBuffer(fileNameOrBuffer)) {
|
||||
return tryParseBuffer(fileNameOrBuffer);
|
||||
} else {
|
||||
fs.readFile(fileNameOrBuffer, function (err, data) {
|
||||
if (err) { return callback(err); }
|
||||
tryParseBuffer(data);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
var parseBuffer = exports.parseBuffer = function (buffer) {
|
||||
var result = {};
|
||||
|
||||
// check header
|
||||
var header = buffer.slice(0, 'bplist'.length).toString('utf8');
|
||||
if (header !== 'bplist') {
|
||||
throw new Error("Invalid binary plist. Expected 'bplist' at offset 0.");
|
||||
}
|
||||
|
||||
// Handle trailer, last 32 bytes of the file
|
||||
var trailer = buffer.slice(buffer.length - 32, buffer.length);
|
||||
// 6 null bytes (index 0 to 5)
|
||||
var offsetSize = trailer.readUInt8(6);
|
||||
if (debug) {
|
||||
console.log("offsetSize: " + offsetSize);
|
||||
}
|
||||
var objectRefSize = trailer.readUInt8(7);
|
||||
if (debug) {
|
||||
console.log("objectRefSize: " + objectRefSize);
|
||||
}
|
||||
var numObjects = readUInt64BE(trailer, 8);
|
||||
if (debug) {
|
||||
console.log("numObjects: " + numObjects);
|
||||
}
|
||||
var topObject = readUInt64BE(trailer, 16);
|
||||
if (debug) {
|
||||
console.log("topObject: " + topObject);
|
||||
}
|
||||
var offsetTableOffset = readUInt64BE(trailer, 24);
|
||||
if (debug) {
|
||||
console.log("offsetTableOffset: " + offsetTableOffset);
|
||||
}
|
||||
|
||||
if (numObjects > exports.maxObjectCount) {
|
||||
throw new Error("maxObjectCount exceeded");
|
||||
}
|
||||
|
||||
// Handle offset table
|
||||
var offsetTable = [];
|
||||
|
||||
for (var i = 0; i < numObjects; i++) {
|
||||
var offsetBytes = buffer.slice(offsetTableOffset + i * offsetSize, offsetTableOffset + (i + 1) * offsetSize);
|
||||
offsetTable[i] = readUInt(offsetBytes, 0);
|
||||
if (debug) {
|
||||
console.log("Offset for Object #" + i + " is " + offsetTable[i] + " [" + offsetTable[i].toString(16) + "]");
|
||||
}
|
||||
}
|
||||
|
||||
// Parses an object inside the currently parsed binary property list.
|
||||
// For the format specification check
|
||||
// <a href="http://www.opensource.apple.com/source/CF/CF-635/CFBinaryPList.c">
|
||||
// Apple's binary property list parser implementation</a>.
|
||||
function parseObject(tableOffset) {
|
||||
var offset = offsetTable[tableOffset];
|
||||
var type = buffer[offset];
|
||||
var objType = (type & 0xF0) >> 4; //First 4 bits
|
||||
var objInfo = (type & 0x0F); //Second 4 bits
|
||||
switch (objType) {
|
||||
case 0x0:
|
||||
return parseSimple();
|
||||
case 0x1:
|
||||
return parseInteger();
|
||||
case 0x8:
|
||||
return parseUID();
|
||||
case 0x2:
|
||||
return parseReal();
|
||||
case 0x3:
|
||||
return parseDate();
|
||||
case 0x4:
|
||||
return parseData();
|
||||
case 0x5: // ASCII
|
||||
return parsePlistString();
|
||||
case 0x6: // UTF-16
|
||||
return parsePlistString(true);
|
||||
case 0xA:
|
||||
return parseArray();
|
||||
case 0xD:
|
||||
return parseDictionary();
|
||||
default:
|
||||
throw new Error("Unhandled type 0x" + objType.toString(16));
|
||||
}
|
||||
|
||||
function parseSimple() {
|
||||
//Simple
|
||||
switch (objInfo) {
|
||||
case 0x0: // null
|
||||
return null;
|
||||
case 0x8: // false
|
||||
return false;
|
||||
case 0x9: // true
|
||||
return true;
|
||||
case 0xF: // filler byte
|
||||
return null;
|
||||
default:
|
||||
throw new Error("Unhandled simple type 0x" + objType.toString(16));
|
||||
}
|
||||
}
|
||||
|
||||
function parseInteger() {
|
||||
var length = Math.pow(2, objInfo);
|
||||
if (length < exports.maxObjectSize) {
|
||||
return readUInt(buffer.slice(offset + 1, offset + 1 + length));
|
||||
} else {
|
||||
throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports.maxObjectSize + " are available.");
|
||||
}
|
||||
}
|
||||
|
||||
function parseUID() {
|
||||
var length = objInfo + 1;
|
||||
if (length < exports.maxObjectSize) {
|
||||
return new UID(readUInt(buffer.slice(offset + 1, offset + 1 + length)));
|
||||
} else {
|
||||
throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports.maxObjectSize + " are available.");
|
||||
}
|
||||
}
|
||||
|
||||
function parseReal() {
|
||||
var length = Math.pow(2, objInfo);
|
||||
if (length < exports.maxObjectSize) {
|
||||
var realBuffer = buffer.slice(offset + 1, offset + 1 + length);
|
||||
if (length === 4) {
|
||||
return realBuffer.readFloatBE(0);
|
||||
}
|
||||
else if (length === 8) {
|
||||
return realBuffer.readDoubleBE(0);
|
||||
}
|
||||
} else {
|
||||
throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports.maxObjectSize + " are available.");
|
||||
}
|
||||
}
|
||||
|
||||
function parseDate() {
|
||||
if (objInfo != 0x3) {
|
||||
console.error("Unknown date type :" + objInfo + ". Parsing anyway...");
|
||||
}
|
||||
var dateBuffer = buffer.slice(offset + 1, offset + 9);
|
||||
return new Date(EPOCH + (1000 * dateBuffer.readDoubleBE(0)));
|
||||
}
|
||||
|
||||
function parseData() {
|
||||
var dataoffset = 1;
|
||||
var length = objInfo;
|
||||
if (objInfo == 0xF) {
|
||||
var int_type = buffer[offset + 1];
|
||||
var intType = (int_type & 0xF0) / 0x10;
|
||||
if (intType != 0x1) {
|
||||
console.error("0x4: UNEXPECTED LENGTH-INT TYPE! " + intType);
|
||||
}
|
||||
var intInfo = int_type & 0x0F;
|
||||
var intLength = Math.pow(2, intInfo);
|
||||
dataoffset = 2 + intLength;
|
||||
if (intLength < 3) {
|
||||
length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));
|
||||
} else {
|
||||
length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));
|
||||
}
|
||||
}
|
||||
if (length < exports.maxObjectSize) {
|
||||
return buffer.slice(offset + dataoffset, offset + dataoffset + length);
|
||||
} else {
|
||||
throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports.maxObjectSize + " are available.");
|
||||
}
|
||||
}
|
||||
|
||||
function parsePlistString (isUtf16) {
|
||||
isUtf16 = isUtf16 || 0;
|
||||
var enc = "utf8";
|
||||
var length = objInfo;
|
||||
var stroffset = 1;
|
||||
if (objInfo == 0xF) {
|
||||
var int_type = buffer[offset + 1];
|
||||
var intType = (int_type & 0xF0) / 0x10;
|
||||
if (intType != 0x1) {
|
||||
console.err("UNEXPECTED LENGTH-INT TYPE! " + intType);
|
||||
}
|
||||
var intInfo = int_type & 0x0F;
|
||||
var intLength = Math.pow(2, intInfo);
|
||||
var stroffset = 2 + intLength;
|
||||
if (intLength < 3) {
|
||||
length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));
|
||||
} else {
|
||||
length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));
|
||||
}
|
||||
}
|
||||
// length is String length -> to get byte length multiply by 2, as 1 character takes 2 bytes in UTF-16
|
||||
length *= (isUtf16 + 1);
|
||||
if (length < exports.maxObjectSize) {
|
||||
var plistString = new Buffer(buffer.slice(offset + stroffset, offset + stroffset + length));
|
||||
if (isUtf16) {
|
||||
plistString = swapBytes(plistString);
|
||||
enc = "ucs2";
|
||||
}
|
||||
return plistString.toString(enc);
|
||||
} else {
|
||||
throw new Error("To little heap space available! Wanted to read " + length + " bytes, but only " + exports.maxObjectSize + " are available.");
|
||||
}
|
||||
}
|
||||
|
||||
function parseArray() {
|
||||
var length = objInfo;
|
||||
var arrayoffset = 1;
|
||||
if (objInfo == 0xF) {
|
||||
var int_type = buffer[offset + 1];
|
||||
var intType = (int_type & 0xF0) / 0x10;
|
||||
if (intType != 0x1) {
|
||||
console.error("0xa: UNEXPECTED LENGTH-INT TYPE! " + intType);
|
||||
}
|
||||
var intInfo = int_type & 0x0F;
|
||||
var intLength = Math.pow(2, intInfo);
|
||||
arrayoffset = 2 + intLength;
|
||||
if (intLength < 3) {
|
||||
length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));
|
||||
} else {
|
||||
length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));
|
||||
}
|
||||
}
|
||||
if (length * objectRefSize > exports.maxObjectSize) {
|
||||
throw new Error("To little heap space available!");
|
||||
}
|
||||
var array = [];
|
||||
for (var i = 0; i < length; i++) {
|
||||
var objRef = readUInt(buffer.slice(offset + arrayoffset + i * objectRefSize, offset + arrayoffset + (i + 1) * objectRefSize));
|
||||
array[i] = parseObject(objRef);
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
function parseDictionary() {
|
||||
var length = objInfo;
|
||||
var dictoffset = 1;
|
||||
if (objInfo == 0xF) {
|
||||
var int_type = buffer[offset + 1];
|
||||
var intType = (int_type & 0xF0) / 0x10;
|
||||
if (intType != 0x1) {
|
||||
console.error("0xD: UNEXPECTED LENGTH-INT TYPE! " + intType);
|
||||
}
|
||||
var intInfo = int_type & 0x0F;
|
||||
var intLength = Math.pow(2, intInfo);
|
||||
dictoffset = 2 + intLength;
|
||||
if (intLength < 3) {
|
||||
length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));
|
||||
} else {
|
||||
length = readUInt(buffer.slice(offset + 2, offset + 2 + intLength));
|
||||
}
|
||||
}
|
||||
if (length * 2 * objectRefSize > exports.maxObjectSize) {
|
||||
throw new Error("To little heap space available!");
|
||||
}
|
||||
if (debug) {
|
||||
console.log("Parsing dictionary #" + tableOffset);
|
||||
}
|
||||
var dict = {};
|
||||
for (var i = 0; i < length; i++) {
|
||||
var keyRef = readUInt(buffer.slice(offset + dictoffset + i * objectRefSize, offset + dictoffset + (i + 1) * objectRefSize));
|
||||
var valRef = readUInt(buffer.slice(offset + dictoffset + (length * objectRefSize) + i * objectRefSize, offset + dictoffset + (length * objectRefSize) + (i + 1) * objectRefSize));
|
||||
var key = parseObject(keyRef);
|
||||
var val = parseObject(valRef);
|
||||
if (debug) {
|
||||
console.log(" DICT #" + tableOffset + ": Mapped " + key + " to " + val);
|
||||
}
|
||||
dict[key] = val;
|
||||
}
|
||||
return dict;
|
||||
}
|
||||
}
|
||||
|
||||
return [ parseObject(topObject) ];
|
||||
};
|
||||
|
||||
function readUInt(buffer, start) {
|
||||
start = start || 0;
|
||||
|
||||
var l = 0;
|
||||
for (var i = start; i < buffer.length; i++) {
|
||||
l <<= 8;
|
||||
l |= buffer[i] & 0xFF;
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
||||
// we're just going to toss the high order bits because javascript doesn't have 64-bit ints
|
||||
function readUInt64BE(buffer, start) {
|
||||
var data = buffer.slice(start, start + 8);
|
||||
return data.readUInt32BE(4, 8);
|
||||
}
|
||||
|
||||
function swapBytes(buffer) {
|
||||
var len = buffer.length;
|
||||
for (var i = 0; i < len; i += 2) {
|
||||
var a = buffer[i];
|
||||
buffer[i] = buffer[i+1];
|
||||
buffer[i+1] = a;
|
||||
}
|
||||
return buffer;
|
||||
}
|
52
node_modules/cordova-common/node_modules/bplist-parser/package.json
generated
vendored
Normal file
52
node_modules/cordova-common/node_modules/bplist-parser/package.json
generated
vendored
Normal file
@ -0,0 +1,52 @@
|
||||
{
|
||||
"name": "bplist-parser",
|
||||
"version": "0.1.0",
|
||||
"description": "Binary plist parser.",
|
||||
"main": "bplistParser.js",
|
||||
"scripts": {
|
||||
"test": "./node_modules/nodeunit/bin/nodeunit test"
|
||||
},
|
||||
"keywords": [
|
||||
"bplist",
|
||||
"plist",
|
||||
"parser"
|
||||
],
|
||||
"author": {
|
||||
"name": "Joe Ferner",
|
||||
"email": "joe.ferner@nearinfinity.com"
|
||||
},
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"nodeunit": "~0.9.1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/nearinfinity/node-bplist-parser.git"
|
||||
},
|
||||
"gitHead": "82d14f8defa7fc1e9f78a469c76c235ac244fd8f",
|
||||
"bugs": {
|
||||
"url": "https://github.com/nearinfinity/node-bplist-parser/issues"
|
||||
},
|
||||
"homepage": "https://github.com/nearinfinity/node-bplist-parser",
|
||||
"_id": "bplist-parser@0.1.0",
|
||||
"_shasum": "630823f2056437d4dbefc20e84017f8bac48e008",
|
||||
"_from": "bplist-parser@>=0.1.0 <0.2.0",
|
||||
"_npmVersion": "1.4.14",
|
||||
"_npmUser": {
|
||||
"name": "joeferner",
|
||||
"email": "joe@fernsroth.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "joeferner",
|
||||
"email": "joe@fernsroth.com"
|
||||
}
|
||||
],
|
||||
"dist": {
|
||||
"shasum": "630823f2056437d4dbefc20e84017f8bac48e008",
|
||||
"tarball": "http://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.0.tgz"
|
||||
},
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.0.tgz",
|
||||
"readme": "ERROR: No README data found!"
|
||||
}
|
1
node_modules/cordova-common/node_modules/cordova-registry-mapper/.npmignore
generated
vendored
Normal file
1
node_modules/cordova-common/node_modules/cordova-registry-mapper/.npmignore
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
node_modules
|
7
node_modules/cordova-common/node_modules/cordova-registry-mapper/.travis.yml
generated
vendored
Normal file
7
node_modules/cordova-common/node_modules/cordova-registry-mapper/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
language: node_js
|
||||
sudo: false
|
||||
node_js:
|
||||
- "0.10"
|
||||
install: npm install
|
||||
script:
|
||||
- npm test
|
14
node_modules/cordova-common/node_modules/cordova-registry-mapper/README.md
generated
vendored
Normal file
14
node_modules/cordova-common/node_modules/cordova-registry-mapper/README.md
generated
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
[](https://travis-ci.org/stevengill/cordova-registry-mapper)
|
||||
|
||||
#Cordova Registry Mapper
|
||||
|
||||
This module is used to map Cordova plugin ids to package names and vice versa.
|
||||
|
||||
When Cordova users add plugins to their projects using ids
|
||||
(e.g. `cordova plugin add org.apache.cordova.device`),
|
||||
this module will map that id to the corresponding package name so `cordova-lib` knows what to fetch from **npm**.
|
||||
|
||||
This module was created so the Apache Cordova project could migrate its plugins from
|
||||
the [Cordova Registry](http://registry.cordova.io/)
|
||||
to [npm](https://registry.npmjs.com/)
|
||||
instead of having to maintain a registry.
|
182
node_modules/cordova-common/node_modules/cordova-registry-mapper/index.js
generated
vendored
Normal file
182
node_modules/cordova-common/node_modules/cordova-registry-mapper/index.js
generated
vendored
Normal file
@ -0,0 +1,182 @@
|
||||
var map = {
|
||||
'org.apache.cordova.battery-status':'cordova-plugin-battery-status',
|
||||
'org.apache.cordova.camera':'cordova-plugin-camera',
|
||||
'org.apache.cordova.console':'cordova-plugin-console',
|
||||
'org.apache.cordova.contacts':'cordova-plugin-contacts',
|
||||
'org.apache.cordova.device':'cordova-plugin-device',
|
||||
'org.apache.cordova.device-motion':'cordova-plugin-device-motion',
|
||||
'org.apache.cordova.device-orientation':'cordova-plugin-device-orientation',
|
||||
'org.apache.cordova.dialogs':'cordova-plugin-dialogs',
|
||||
'org.apache.cordova.file':'cordova-plugin-file',
|
||||
'org.apache.cordova.file-transfer':'cordova-plugin-file-transfer',
|
||||
'org.apache.cordova.geolocation':'cordova-plugin-geolocation',
|
||||
'org.apache.cordova.globalization':'cordova-plugin-globalization',
|
||||
'org.apache.cordova.inappbrowser':'cordova-plugin-inappbrowser',
|
||||
'org.apache.cordova.media':'cordova-plugin-media',
|
||||
'org.apache.cordova.media-capture':'cordova-plugin-media-capture',
|
||||
'org.apache.cordova.network-information':'cordova-plugin-network-information',
|
||||
'org.apache.cordova.splashscreen':'cordova-plugin-splashscreen',
|
||||
'org.apache.cordova.statusbar':'cordova-plugin-statusbar',
|
||||
'org.apache.cordova.vibration':'cordova-plugin-vibration',
|
||||
'org.apache.cordova.test-framework':'cordova-plugin-test-framework',
|
||||
'com.msopentech.websql' : 'cordova-plugin-websql',
|
||||
'com.msopentech.indexeddb' : 'cordova-plugin-indexeddb',
|
||||
'com.microsoft.aad.adal' : 'cordova-plugin-ms-adal',
|
||||
'com.microsoft.capptain' : 'capptain-cordova',
|
||||
'com.microsoft.services.aadgraph' : 'cordova-plugin-ms-aad-graph',
|
||||
'com.microsoft.services.files' : 'cordova-plugin-ms-files',
|
||||
'om.microsoft.services.outlook' : 'cordova-plugin-ms-outlook',
|
||||
'com.pbakondy.sim' : 'cordova-plugin-sim',
|
||||
'android.support.v4' : 'cordova-plugin-android-support-v4',
|
||||
'android.support.v7-appcompat' : 'cordova-plugin-android-support-v7-appcompat',
|
||||
'com.google.playservices' : 'cordova-plugin-googleplayservices',
|
||||
'com.google.cordova.admob' : 'cordova-plugin-admobpro',
|
||||
'com.rjfun.cordova.extension' : 'cordova-plugin-extension',
|
||||
'com.rjfun.cordova.plugin.admob' : 'cordova-plugin-admob',
|
||||
'com.rjfun.cordova.flurryads' : 'cordova-plugin-flurry',
|
||||
'com.rjfun.cordova.facebookads' : 'cordova-plugin-facebookads',
|
||||
'com.rjfun.cordova.httpd' : 'cordova-plugin-httpd',
|
||||
'com.rjfun.cordova.iad' : 'cordova-plugin-iad',
|
||||
'com.rjfun.cordova.iflyspeech' : 'cordova-plugin-iflyspeech',
|
||||
'com.rjfun.cordova.lianlianpay' : 'cordova-plugin-lianlianpay',
|
||||
'com.rjfun.cordova.mobfox' : 'cordova-plugin-mobfox',
|
||||
'com.rjfun.cordova.mopub' : 'cordova-plugin-mopub',
|
||||
'com.rjfun.cordova.mmedia' : 'cordova-plugin-mmedia',
|
||||
'com.rjfun.cordova.nativeaudio' : 'cordova-plugin-nativeaudio',
|
||||
'com.rjfun.cordova.plugin.paypalmpl' : 'cordova-plugin-paypalmpl',
|
||||
'com.rjfun.cordova.smartadserver' : 'cordova-plugin-smartadserver',
|
||||
'com.rjfun.cordova.sms' : 'cordova-plugin-sms',
|
||||
'com.rjfun.cordova.wifi' : 'cordova-plugin-wifi',
|
||||
'com.ohh2ahh.plugins.appavailability' : 'cordova-plugin-appavailability',
|
||||
'org.adapt-it.cordova.fonts' : 'cordova-plugin-fonts',
|
||||
'de.martinreinhardt.cordova.plugins.barcodeScanner' : 'cordova-plugin-barcodescanner',
|
||||
'de.martinreinhardt.cordova.plugins.urlhandler' : 'cordova-plugin-urlhandler',
|
||||
'de.martinreinhardt.cordova.plugins.email' : 'cordova-plugin-email',
|
||||
'de.martinreinhardt.cordova.plugins.certificates' : 'cordova-plugin-certificates',
|
||||
'de.martinreinhardt.cordova.plugins.sqlite' : 'cordova-plugin-sqlite',
|
||||
'fr.smile.cordova.fileopener' : 'cordova-plugin-fileopener',
|
||||
'org.smile.websqldatabase.initializer' : 'cordova-plugin-websqldatabase-initializer',
|
||||
'org.smile.websqldatabase.wpdb' : 'cordova-plugin-websqldatabase',
|
||||
'org.jboss.aerogear.cordova.push' : 'aerogear-cordova-push',
|
||||
'org.jboss.aerogear.cordova.oauth2' : 'aerogear-cordova-oauth2',
|
||||
'org.jboss.aerogear.cordova.geo' : 'aerogear-cordova-geo',
|
||||
'org.jboss.aerogear.cordova.crypto' : 'aerogear-cordova-crypto',
|
||||
'org.jboss.aerogaer.cordova.otp' : 'aerogear-cordova-otp',
|
||||
'uk.co.ilee.applewatch' : 'cordova-plugin-apple-watch',
|
||||
'uk.co.ilee.directions' : 'cordova-plugin-directions',
|
||||
'uk.co.ilee.gamecenter' : 'cordova-plugin-game-center',
|
||||
'uk.co.ilee.jailbreakdetection' : 'cordova-plugin-jailbreak-detection',
|
||||
'uk.co.ilee.nativetransitions' : 'cordova-plugin-native-transitions',
|
||||
'uk.co.ilee.pedometer' : 'cordova-plugin-pedometer',
|
||||
'uk.co.ilee.shake' : 'cordova-plugin-shake',
|
||||
'uk.co.ilee.touchid' : 'cordova-plugin-touchid',
|
||||
'com.knowledgecode.cordova.websocket' : 'cordova-plugin-websocket',
|
||||
'com.elixel.plugins.settings' : 'cordova-plugin-settings',
|
||||
'com.cowbell.cordova.geofence' : 'cordova-plugin-geofence',
|
||||
'com.blackberry.community.preventsleep' : 'cordova-plugin-preventsleep',
|
||||
'com.blackberry.community.gamepad' : 'cordova-plugin-gamepad',
|
||||
'com.blackberry.community.led' : 'cordova-plugin-led',
|
||||
'com.blackberry.community.thumbnail' : 'cordova-plugin-thumbnail',
|
||||
'com.blackberry.community.mediakeys' : 'cordova-plugin-mediakeys',
|
||||
'com.blackberry.community.simplebtlehrplugin' : 'cordova-plugin-bluetoothheartmonitor',
|
||||
'com.blackberry.community.simplebeaconplugin' : 'cordova-plugin-bluetoothibeacon',
|
||||
'com.blackberry.community.simplebtsppplugin' : 'cordova-plugin-bluetoothspp',
|
||||
'com.blackberry.community.clipboard' : 'cordova-plugin-clipboard',
|
||||
'com.blackberry.community.curl' : 'cordova-plugin-curl',
|
||||
'com.blackberry.community.qt' : 'cordova-plugin-qtbridge',
|
||||
'com.blackberry.community.upnp' : 'cordova-plugin-upnp',
|
||||
'com.blackberry.community.PasswordCrypto' : 'cordova-plugin-password-crypto',
|
||||
'com.blackberry.community.deviceinfoplugin' : 'cordova-plugin-deviceinfo',
|
||||
'com.blackberry.community.gsecrypto' : 'cordova-plugin-bb-crypto',
|
||||
'com.blackberry.community.mongoose' : 'cordova-plugin-mongoose',
|
||||
'com.blackberry.community.sysdialog' : 'cordova-plugin-bb-sysdialog',
|
||||
'com.blackberry.community.screendisplay' : 'cordova-plugin-screendisplay',
|
||||
'com.blackberry.community.messageplugin' : 'cordova-plugin-bb-messageretrieve',
|
||||
'com.blackberry.community.emailsenderplugin' : 'cordova-plugin-emailsender',
|
||||
'com.blackberry.community.audiometadata' : 'cordova-plugin-audiometadata',
|
||||
'com.blackberry.community.deviceemails' : 'cordova-plugin-deviceemails',
|
||||
'com.blackberry.community.audiorecorder' : 'cordova-plugin-audiorecorder',
|
||||
'com.blackberry.community.vibration' : 'cordova-plugin-vibrate-intense',
|
||||
'com.blackberry.community.SMSPlugin' : 'cordova-plugin-bb-sms',
|
||||
'com.blackberry.community.extractZipFile' : 'cordova-plugin-bb-zip',
|
||||
'com.blackberry.community.lowlatencyaudio' : 'cordova-plugin-bb-nativeaudio',
|
||||
'com.blackberry.community.barcodescanner' : 'phonegap-plugin-barcodescanner',
|
||||
'com.blackberry.app' : 'cordova-plugin-bb-app',
|
||||
'com.blackberry.bbm.platform' : 'cordova-plugin-bbm',
|
||||
'com.blackberry.connection' : 'cordova-plugin-bb-connection',
|
||||
'com.blackberry.identity' : 'cordova-plugin-bb-identity',
|
||||
'com.blackberry.invoke.card' : 'cordova-plugin-bb-card',
|
||||
'com.blackberry.invoke' : 'cordova-plugin-bb-invoke',
|
||||
'com.blackberry.invoked' : 'cordova-plugin-bb-invoked',
|
||||
'com.blackberry.io.filetransfer' : 'cordova-plugin-bb-filetransfer',
|
||||
'com.blackberry.io' : 'cordova-plugin-bb-io',
|
||||
'com.blackberry.notification' : 'cordova-plugin-bb-notification',
|
||||
'com.blackberry.payment' : 'cordova-plugin-bb-payment',
|
||||
'com.blackberry.pim.calendar' : 'cordova-plugin-bb-calendar',
|
||||
'com.blackberry.pim.contacts' : 'cordova-plugin-bb-contacts',
|
||||
'com.blackberry.pim.lib' : 'cordova-plugin-bb-pimlib',
|
||||
'com.blackberry.push' : 'cordova-plugin-bb-push',
|
||||
'com.blackberry.screenshot' : 'cordova-plugin-screenshot',
|
||||
'com.blackberry.sensors' : 'cordova-plugin-bb-sensors',
|
||||
'com.blackberry.system' : 'cordova-plugin-bb-system',
|
||||
'com.blackberry.ui.contextmenu' : 'cordova-plugin-bb-ctxmenu',
|
||||
'com.blackberry.ui.cover' : 'cordova-plugin-bb-cover',
|
||||
'com.blackberry.ui.dialog' : 'cordova-plugin-bb-dialog',
|
||||
'com.blackberry.ui.input' : 'cordova-plugin-touch-keyboard',
|
||||
'com.blackberry.ui.toast' : 'cordova-plugin-toast',
|
||||
'com.blackberry.user.identity' : 'cordova-plugin-bb-idservice',
|
||||
'com.blackberry.utils' : 'cordova-plugin-bb-utils',
|
||||
'net.yoik.cordova.plugins.screenorientation' : 'cordova-plugin-screen-orientation',
|
||||
'com.phonegap.plugins.barcodescanner' : 'phonegap-plugin-barcodescanner',
|
||||
'com.manifoldjs.hostedwebapp' : 'cordova-plugin-hostedwebapp',
|
||||
'com.initialxy.cordova.themeablebrowser' : 'cordova-plugin-themeablebrowser',
|
||||
'gr.denton.photosphere' : 'cordova-plugin-panoramaviewer',
|
||||
'nl.x-services.plugins.actionsheet' : 'cordova-plugin-actionsheet',
|
||||
'nl.x-services.plugins.socialsharing' : 'cordova-plugin-x-socialsharing',
|
||||
'nl.x-services.plugins.googleplus' : 'cordova-plugin-googleplus',
|
||||
'nl.x-services.plugins.insomnia' : 'cordova-plugin-insomnia',
|
||||
'nl.x-services.plugins.toast' : 'cordova-plugin-x-toast',
|
||||
'nl.x-services.plugins.calendar' : 'cordova-plugin-calendar',
|
||||
'nl.x-services.plugins.launchmyapp' : 'cordova-plugin-customurlscheme',
|
||||
'com.bridge.open' : 'cordova-open',
|
||||
'com.bridge.safe' : 'cordova-safe',
|
||||
'com.disusered.open' : 'cordova-open',
|
||||
'com.disusered.safe' : 'cordova-safe',
|
||||
'me.apla.cordova.app-preferences' : 'cordova-plugin-app-preferences',
|
||||
'com.konotor.cordova' : 'cordova-plugin-konotor',
|
||||
'io.intercom.cordova' : 'cordova-plugin-intercom',
|
||||
'com.onesignal.plugins.onesignal' : 'onesignal-cordova-plugin',
|
||||
'com.danjarvis.document-contract': 'cordova-plugin-document-contract',
|
||||
'com.eface2face.iosrtc' : 'cordova-plugin-iosrtc',
|
||||
'com.mobileapptracking.matplugin' : 'cordova-plugin-tune',
|
||||
'com.marianhello.cordova.background-geolocation' : 'cordova-plugin-mauron85-background-geolocation',
|
||||
'fr.louisbl.cordova.locationservices' : 'cordova-plugin-locationservices',
|
||||
'fr.louisbl.cordova.gpslocation' : 'cordova-plugin-gpslocation',
|
||||
'com.hiliaox.weibo' : 'cordova-plugin-weibo',
|
||||
'com.uxcam.cordova.plugin' : 'cordova-uxcam',
|
||||
'de.fastr.phonegap.plugins.downloader' : 'cordova-plugin-fastrde-downloader',
|
||||
'de.fastr.phonegap.plugins.injectView' : 'cordova-plugin-fastrde-injectview',
|
||||
'de.fastr.phonegap.plugins.CheckGPS' : 'cordova-plugin-fastrde-checkgps',
|
||||
'de.fastr.phonegap.plugins.md5chksum' : ' cordova-plugin-fastrde-md5',
|
||||
'io.repro.cordova' : 'cordova-plugin-repro',
|
||||
're.notifica.cordova': 'cordova-plugin-notificare-push',
|
||||
'com.megster.cordova.ble': 'cordova-plugin-ble-central',
|
||||
'com.megster.cordova.bluetoothserial': 'cordova-plugin-bluetooth-serial',
|
||||
'cz.velda.cordova.plugin.devicefeedback': 'cordova-plugin-velda-devicefeedback',
|
||||
'cz.Velda.cordova.plugin.devicefeedback': 'cordova-plugin-velda-devicefeedback',
|
||||
'org.scriptotek.appinfo': 'cordova-plugin-appinfo',
|
||||
'com.yezhiming.cordova.appinfo': 'cordova-plugin-appinfo',
|
||||
'pl.makingwaves.estimotebeacons': 'cordova-plugin-estimote',
|
||||
'com.evothings.ble': 'cordova-plugin-ble',
|
||||
'com.appsee.plugin' : 'cordova-plugin-appsee',
|
||||
'am.armsoft.plugins.listpicker': 'cordova-plugin-listpicker'
|
||||
}
|
||||
|
||||
module.exports.oldToNew = map;
|
||||
|
||||
var reverseMap = {};
|
||||
Object.keys(map).forEach(function(elem){
|
||||
reverseMap[map[elem]] = elem;
|
||||
})
|
||||
|
||||
module.exports.newToOld = reverseMap;
|
1
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/.npmignore
generated
vendored
Normal file
1
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/.npmignore
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
/node_modules
|
4
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/.travis.yml
generated
vendored
Normal file
4
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.8"
|
||||
- "0.10"
|
18
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/LICENSE
generated
vendored
Normal file
18
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/LICENSE
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
This software is released under the MIT license:
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
140
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/index.js
generated
vendored
Normal file
140
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/index.js
generated
vendored
Normal file
@ -0,0 +1,140 @@
|
||||
var defined = require('defined');
|
||||
var createDefaultStream = require('./lib/default_stream');
|
||||
var Test = require('./lib/test');
|
||||
var createResult = require('./lib/results');
|
||||
var through = require('through');
|
||||
|
||||
var canEmitExit = typeof process !== 'undefined' && process
|
||||
&& typeof process.on === 'function' && process.browser !== true
|
||||
;
|
||||
var canExit = typeof process !== 'undefined' && process
|
||||
&& typeof process.exit === 'function'
|
||||
;
|
||||
|
||||
var nextTick = typeof setImmediate !== 'undefined'
|
||||
? setImmediate
|
||||
: process.nextTick
|
||||
;
|
||||
|
||||
exports = module.exports = (function () {
|
||||
var harness;
|
||||
var lazyLoad = function () {
|
||||
return getHarness().apply(this, arguments);
|
||||
};
|
||||
|
||||
lazyLoad.only = function () {
|
||||
return getHarness().only.apply(this, arguments);
|
||||
};
|
||||
|
||||
lazyLoad.createStream = function (opts) {
|
||||
if (!opts) opts = {};
|
||||
if (!harness) {
|
||||
var output = through();
|
||||
getHarness({ stream: output, objectMode: opts.objectMode });
|
||||
return output;
|
||||
}
|
||||
return harness.createStream(opts);
|
||||
};
|
||||
|
||||
return lazyLoad
|
||||
|
||||
function getHarness (opts) {
|
||||
if (!opts) opts = {};
|
||||
opts.autoclose = !canEmitExit;
|
||||
if (!harness) harness = createExitHarness(opts);
|
||||
return harness;
|
||||
}
|
||||
})();
|
||||
|
||||
function createExitHarness (conf) {
|
||||
if (!conf) conf = {};
|
||||
var harness = createHarness({
|
||||
autoclose: defined(conf.autoclose, false)
|
||||
});
|
||||
|
||||
var stream = harness.createStream({ objectMode: conf.objectMode });
|
||||
var es = stream.pipe(conf.stream || createDefaultStream());
|
||||
if (canEmitExit) {
|
||||
es.on('error', function (err) { harness._exitCode = 1 });
|
||||
}
|
||||
|
||||
var ended = false;
|
||||
stream.on('end', function () { ended = true });
|
||||
|
||||
if (conf.exit === false) return harness;
|
||||
if (!canEmitExit || !canExit) return harness;
|
||||
|
||||
var inErrorState = false;
|
||||
|
||||
process.on('exit', function (code) {
|
||||
// let the process exit cleanly.
|
||||
if (code !== 0) {
|
||||
return
|
||||
}
|
||||
|
||||
if (!ended) {
|
||||
var only = harness._results._only;
|
||||
for (var i = 0; i < harness._tests.length; i++) {
|
||||
var t = harness._tests[i];
|
||||
if (only && t.name !== only) continue;
|
||||
t._exit();
|
||||
}
|
||||
}
|
||||
harness.close();
|
||||
process.exit(code || harness._exitCode);
|
||||
});
|
||||
|
||||
return harness;
|
||||
}
|
||||
|
||||
exports.createHarness = createHarness;
|
||||
exports.Test = Test;
|
||||
exports.test = exports; // tap compat
|
||||
exports.test.skip = Test.skip;
|
||||
|
||||
var exitInterval;
|
||||
|
||||
function createHarness (conf_) {
|
||||
if (!conf_) conf_ = {};
|
||||
var results = createResult();
|
||||
if (conf_.autoclose !== false) {
|
||||
results.once('done', function () { results.close() });
|
||||
}
|
||||
|
||||
var test = function (name, conf, cb) {
|
||||
var t = new Test(name, conf, cb);
|
||||
test._tests.push(t);
|
||||
|
||||
(function inspectCode (st) {
|
||||
st.on('test', function sub (st_) {
|
||||
inspectCode(st_);
|
||||
});
|
||||
st.on('result', function (r) {
|
||||
if (!r.ok) test._exitCode = 1
|
||||
});
|
||||
})(t);
|
||||
|
||||
results.push(t);
|
||||
return t;
|
||||
};
|
||||
test._results = results;
|
||||
|
||||
test._tests = [];
|
||||
|
||||
test.createStream = function (opts) {
|
||||
return results.createStream(opts);
|
||||
};
|
||||
|
||||
var only = false;
|
||||
test.only = function (name) {
|
||||
if (only) throw new Error('there can only be one only test');
|
||||
results.only(name);
|
||||
only = true;
|
||||
return test.apply(null, arguments);
|
||||
};
|
||||
test._exitCode = 0;
|
||||
|
||||
test.close = function () { results.close() };
|
||||
|
||||
return test;
|
||||
}
|
31
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/lib/default_stream.js
generated
vendored
Normal file
31
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/lib/default_stream.js
generated
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
var through = require('through');
|
||||
var fs = require('fs');
|
||||
|
||||
module.exports = function () {
|
||||
var line = '';
|
||||
var stream = through(write, flush);
|
||||
return stream;
|
||||
|
||||
function write (buf) {
|
||||
for (var i = 0; i < buf.length; i++) {
|
||||
var c = typeof buf === 'string'
|
||||
? buf.charAt(i)
|
||||
: String.fromCharCode(buf[i])
|
||||
;
|
||||
if (c === '\n') flush();
|
||||
else line += c;
|
||||
}
|
||||
}
|
||||
|
||||
function flush () {
|
||||
if (fs.writeSync && /^win/.test(process.platform)) {
|
||||
try { fs.writeSync(1, line + '\n'); }
|
||||
catch (e) { stream.emit('error', e) }
|
||||
}
|
||||
else {
|
||||
try { console.log(line) }
|
||||
catch (e) { stream.emit('error', e) }
|
||||
}
|
||||
line = '';
|
||||
}
|
||||
};
|
189
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/lib/results.js
generated
vendored
Normal file
189
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/lib/results.js
generated
vendored
Normal file
@ -0,0 +1,189 @@
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
var inherits = require('inherits');
|
||||
var through = require('through');
|
||||
var resumer = require('resumer');
|
||||
var inspect = require('object-inspect');
|
||||
var nextTick = typeof setImmediate !== 'undefined'
|
||||
? setImmediate
|
||||
: process.nextTick
|
||||
;
|
||||
|
||||
module.exports = Results;
|
||||
inherits(Results, EventEmitter);
|
||||
|
||||
function Results () {
|
||||
if (!(this instanceof Results)) return new Results;
|
||||
this.count = 0;
|
||||
this.fail = 0;
|
||||
this.pass = 0;
|
||||
this._stream = through();
|
||||
this.tests = [];
|
||||
}
|
||||
|
||||
Results.prototype.createStream = function (opts) {
|
||||
if (!opts) opts = {};
|
||||
var self = this;
|
||||
var output, testId = 0;
|
||||
if (opts.objectMode) {
|
||||
output = through();
|
||||
self.on('_push', function ontest (t, extra) {
|
||||
if (!extra) extra = {};
|
||||
var id = testId++;
|
||||
t.once('prerun', function () {
|
||||
var row = {
|
||||
type: 'test',
|
||||
name: t.name,
|
||||
id: id
|
||||
};
|
||||
if (has(extra, 'parent')) {
|
||||
row.parent = extra.parent;
|
||||
}
|
||||
output.queue(row);
|
||||
});
|
||||
t.on('test', function (st) {
|
||||
ontest(st, { parent: id });
|
||||
});
|
||||
t.on('result', function (res) {
|
||||
res.test = id;
|
||||
res.type = 'assert';
|
||||
output.queue(res);
|
||||
});
|
||||
t.on('end', function () {
|
||||
output.queue({ type: 'end', test: id });
|
||||
});
|
||||
});
|
||||
self.on('done', function () { output.queue(null) });
|
||||
}
|
||||
else {
|
||||
output = resumer();
|
||||
output.queue('TAP version 13\n');
|
||||
self._stream.pipe(output);
|
||||
}
|
||||
|
||||
nextTick(function next() {
|
||||
var t;
|
||||
while (t = getNextTest(self)) {
|
||||
t.run();
|
||||
if (!t.ended) return t.once('end', function(){ nextTick(next); });
|
||||
}
|
||||
self.emit('done');
|
||||
});
|
||||
|
||||
return output;
|
||||
};
|
||||
|
||||
Results.prototype.push = function (t) {
|
||||
var self = this;
|
||||
self.tests.push(t);
|
||||
self._watch(t);
|
||||
self.emit('_push', t);
|
||||
};
|
||||
|
||||
Results.prototype.only = function (name) {
|
||||
if (this._only) {
|
||||
self.count ++;
|
||||
self.fail ++;
|
||||
write('not ok ' + self.count + ' already called .only()\n');
|
||||
}
|
||||
this._only = name;
|
||||
};
|
||||
|
||||
Results.prototype._watch = function (t) {
|
||||
var self = this;
|
||||
var write = function (s) { self._stream.queue(s) };
|
||||
t.once('prerun', function () {
|
||||
write('# ' + t.name + '\n');
|
||||
});
|
||||
|
||||
t.on('result', function (res) {
|
||||
if (typeof res === 'string') {
|
||||
write('# ' + res + '\n');
|
||||
return;
|
||||
}
|
||||
write(encodeResult(res, self.count + 1));
|
||||
self.count ++;
|
||||
|
||||
if (res.ok) self.pass ++
|
||||
else self.fail ++
|
||||
});
|
||||
|
||||
t.on('test', function (st) { self._watch(st) });
|
||||
};
|
||||
|
||||
Results.prototype.close = function () {
|
||||
var self = this;
|
||||
if (self.closed) self._stream.emit('error', new Error('ALREADY CLOSED'));
|
||||
self.closed = true;
|
||||
var write = function (s) { self._stream.queue(s) };
|
||||
|
||||
write('\n1..' + self.count + '\n');
|
||||
write('# tests ' + self.count + '\n');
|
||||
write('# pass ' + self.pass + '\n');
|
||||
if (self.fail) write('# fail ' + self.fail + '\n')
|
||||
else write('\n# ok\n')
|
||||
|
||||
self._stream.queue(null);
|
||||
};
|
||||
|
||||
function encodeResult (res, count) {
|
||||
var output = '';
|
||||
output += (res.ok ? 'ok ' : 'not ok ') + count;
|
||||
output += res.name ? ' ' + res.name.toString().replace(/\s+/g, ' ') : '';
|
||||
|
||||
if (res.skip) output += ' # SKIP';
|
||||
else if (res.todo) output += ' # TODO';
|
||||
|
||||
output += '\n';
|
||||
if (res.ok) return output;
|
||||
|
||||
var outer = ' ';
|
||||
var inner = outer + ' ';
|
||||
output += outer + '---\n';
|
||||
output += inner + 'operator: ' + res.operator + '\n';
|
||||
|
||||
if (has(res, 'expected') || has(res, 'actual')) {
|
||||
var ex = inspect(res.expected);
|
||||
var ac = inspect(res.actual);
|
||||
|
||||
if (Math.max(ex.length, ac.length) > 65) {
|
||||
output += inner + 'expected:\n' + inner + ' ' + ex + '\n';
|
||||
output += inner + 'actual:\n' + inner + ' ' + ac + '\n';
|
||||
}
|
||||
else {
|
||||
output += inner + 'expected: ' + ex + '\n';
|
||||
output += inner + 'actual: ' + ac + '\n';
|
||||
}
|
||||
}
|
||||
if (res.at) {
|
||||
output += inner + 'at: ' + res.at + '\n';
|
||||
}
|
||||
if (res.operator === 'error' && res.actual && res.actual.stack) {
|
||||
var lines = String(res.actual.stack).split('\n');
|
||||
output += inner + 'stack:\n';
|
||||
output += inner + ' ' + lines[0] + '\n';
|
||||
for (var i = 1; i < lines.length; i++) {
|
||||
output += inner + lines[i] + '\n';
|
||||
}
|
||||
}
|
||||
|
||||
output += outer + '...\n';
|
||||
return output;
|
||||
}
|
||||
|
||||
function getNextTest (results) {
|
||||
if (!results._only) {
|
||||
return results.tests.shift();
|
||||
}
|
||||
|
||||
do {
|
||||
var t = results.tests.shift();
|
||||
if (!t) continue;
|
||||
if (results._only === t.name) {
|
||||
return t;
|
||||
}
|
||||
} while (results.tests.length !== 0)
|
||||
}
|
||||
|
||||
function has (obj, prop) {
|
||||
return Object.prototype.hasOwnProperty.call(obj, prop);
|
||||
}
|
496
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/lib/test.js
generated
vendored
Normal file
496
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/lib/test.js
generated
vendored
Normal file
@ -0,0 +1,496 @@
|
||||
var deepEqual = require('deep-equal');
|
||||
var defined = require('defined');
|
||||
var path = require('path');
|
||||
var inherits = require('inherits');
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
|
||||
module.exports = Test;
|
||||
|
||||
var nextTick = typeof setImmediate !== 'undefined'
|
||||
? setImmediate
|
||||
: process.nextTick
|
||||
;
|
||||
|
||||
inherits(Test, EventEmitter);
|
||||
|
||||
var getTestArgs = function (name_, opts_, cb_) {
|
||||
var name = '(anonymous)';
|
||||
var opts = {};
|
||||
var cb;
|
||||
|
||||
for (var i = 0; i < arguments.length; i++) {
|
||||
var arg = arguments[i];
|
||||
var t = typeof arg;
|
||||
if (t === 'string') {
|
||||
name = arg;
|
||||
}
|
||||
else if (t === 'object') {
|
||||
opts = arg || opts;
|
||||
}
|
||||
else if (t === 'function') {
|
||||
cb = arg;
|
||||
}
|
||||
}
|
||||
return { name: name, opts: opts, cb: cb };
|
||||
};
|
||||
|
||||
function Test (name_, opts_, cb_) {
|
||||
if (! (this instanceof Test)) {
|
||||
return new Test(name_, opts_, cb_);
|
||||
}
|
||||
|
||||
var args = getTestArgs(name_, opts_, cb_);
|
||||
|
||||
this.readable = true;
|
||||
this.name = args.name || '(anonymous)';
|
||||
this.assertCount = 0;
|
||||
this.pendingCount = 0;
|
||||
this._skip = args.opts.skip || false;
|
||||
this._plan = undefined;
|
||||
this._cb = args.cb;
|
||||
this._progeny = [];
|
||||
this._ok = true;
|
||||
|
||||
if (args.opts.timeout !== undefined) {
|
||||
this.timeoutAfter(args.opts.timeout);
|
||||
}
|
||||
|
||||
for (var prop in this) {
|
||||
this[prop] = (function bind(self, val) {
|
||||
if (typeof val === 'function') {
|
||||
return function bound() {
|
||||
return val.apply(self, arguments);
|
||||
};
|
||||
}
|
||||
else return val;
|
||||
})(this, this[prop]);
|
||||
}
|
||||
}
|
||||
|
||||
Test.prototype.run = function () {
|
||||
if (!this._cb || this._skip) {
|
||||
return this._end();
|
||||
}
|
||||
this.emit('prerun');
|
||||
this._cb(this);
|
||||
this.emit('run');
|
||||
};
|
||||
|
||||
Test.prototype.test = function (name, opts, cb) {
|
||||
var self = this;
|
||||
var t = new Test(name, opts, cb);
|
||||
this._progeny.push(t);
|
||||
this.pendingCount++;
|
||||
this.emit('test', t);
|
||||
t.on('prerun', function () {
|
||||
self.assertCount++;
|
||||
})
|
||||
|
||||
if (!self._pendingAsserts()) {
|
||||
nextTick(function () {
|
||||
self._end();
|
||||
});
|
||||
}
|
||||
|
||||
nextTick(function() {
|
||||
if (!self._plan && self.pendingCount == self._progeny.length) {
|
||||
self._end();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Test.prototype.comment = function (msg) {
|
||||
this.emit('result', msg.trim().replace(/^#\s*/, ''));
|
||||
};
|
||||
|
||||
Test.prototype.plan = function (n) {
|
||||
this._plan = n;
|
||||
this.emit('plan', n);
|
||||
};
|
||||
|
||||
Test.prototype.timeoutAfter = function(ms) {
|
||||
if (!ms) throw new Error('timeoutAfter requires a timespan');
|
||||
var self = this;
|
||||
var timeout = setTimeout(function() {
|
||||
self.fail('test timed out after ' + ms + 'ms');
|
||||
self.end();
|
||||
}, ms);
|
||||
this.once('end', function() {
|
||||
clearTimeout(timeout);
|
||||
});
|
||||
}
|
||||
|
||||
Test.prototype.end = function (err) {
|
||||
var self = this;
|
||||
if (arguments.length >= 1) {
|
||||
this.ifError(err);
|
||||
}
|
||||
|
||||
if (this.calledEnd) {
|
||||
this.fail('.end() called twice');
|
||||
}
|
||||
this.calledEnd = true;
|
||||
this._end();
|
||||
};
|
||||
|
||||
Test.prototype._end = function (err) {
|
||||
var self = this;
|
||||
if (this._progeny.length) {
|
||||
var t = this._progeny.shift();
|
||||
t.on('end', function () { self._end() });
|
||||
t.run();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.ended) this.emit('end');
|
||||
var pendingAsserts = this._pendingAsserts();
|
||||
if (!this._planError && this._plan !== undefined && pendingAsserts) {
|
||||
this._planError = true;
|
||||
this.fail('plan != count', {
|
||||
expected : this._plan,
|
||||
actual : this.assertCount
|
||||
});
|
||||
}
|
||||
this.ended = true;
|
||||
};
|
||||
|
||||
Test.prototype._exit = function () {
|
||||
if (this._plan !== undefined &&
|
||||
!this._planError && this.assertCount !== this._plan) {
|
||||
this._planError = true;
|
||||
this.fail('plan != count', {
|
||||
expected : this._plan,
|
||||
actual : this.assertCount,
|
||||
exiting : true
|
||||
});
|
||||
}
|
||||
else if (!this.ended) {
|
||||
this.fail('test exited without ending', {
|
||||
exiting: true
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
Test.prototype._pendingAsserts = function () {
|
||||
if (this._plan === undefined) {
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
return this._plan - (this._progeny.length + this.assertCount);
|
||||
}
|
||||
};
|
||||
|
||||
Test.prototype._assert = function assert (ok, opts) {
|
||||
var self = this;
|
||||
var extra = opts.extra || {};
|
||||
|
||||
var res = {
|
||||
id : self.assertCount ++,
|
||||
ok : Boolean(ok),
|
||||
skip : defined(extra.skip, opts.skip),
|
||||
name : defined(extra.message, opts.message, '(unnamed assert)'),
|
||||
operator : defined(extra.operator, opts.operator)
|
||||
};
|
||||
if (has(opts, 'actual') || has(extra, 'actual')) {
|
||||
res.actual = defined(extra.actual, opts.actual);
|
||||
}
|
||||
if (has(opts, 'expected') || has(extra, 'expected')) {
|
||||
res.expected = defined(extra.expected, opts.expected);
|
||||
}
|
||||
this._ok = Boolean(this._ok && ok);
|
||||
|
||||
if (!ok) {
|
||||
res.error = defined(extra.error, opts.error, new Error(res.name));
|
||||
}
|
||||
|
||||
if (!ok) {
|
||||
var e = new Error('exception');
|
||||
var err = (e.stack || '').split('\n');
|
||||
var dir = path.dirname(__dirname) + '/';
|
||||
|
||||
for (var i = 0; i < err.length; i++) {
|
||||
var m = /^[^\s]*\s*\bat\s+(.+)/.exec(err[i]);
|
||||
if (!m) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var s = m[1].split(/\s+/);
|
||||
var filem = /(\/[^:\s]+:(\d+)(?::(\d+))?)/.exec(s[1]);
|
||||
if (!filem) {
|
||||
filem = /(\/[^:\s]+:(\d+)(?::(\d+))?)/.exec(s[2]);
|
||||
|
||||
if (!filem) {
|
||||
filem = /(\/[^:\s]+:(\d+)(?::(\d+))?)/.exec(s[3]);
|
||||
|
||||
if (!filem) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (filem[1].slice(0, dir.length) === dir) {
|
||||
continue;
|
||||
}
|
||||
|
||||
res.functionName = s[0];
|
||||
res.file = filem[1];
|
||||
res.line = Number(filem[2]);
|
||||
if (filem[3]) res.column = filem[3];
|
||||
|
||||
res.at = m[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
self.emit('result', res);
|
||||
|
||||
var pendingAsserts = self._pendingAsserts();
|
||||
if (!pendingAsserts) {
|
||||
if (extra.exiting) {
|
||||
self._end();
|
||||
} else {
|
||||
nextTick(function () {
|
||||
self._end();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (!self._planError && pendingAsserts < 0) {
|
||||
self._planError = true;
|
||||
self.fail('plan != count', {
|
||||
expected : self._plan,
|
||||
actual : self._plan - pendingAsserts
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
Test.prototype.fail = function (msg, extra) {
|
||||
this._assert(false, {
|
||||
message : msg,
|
||||
operator : 'fail',
|
||||
extra : extra
|
||||
});
|
||||
};
|
||||
|
||||
Test.prototype.pass = function (msg, extra) {
|
||||
this._assert(true, {
|
||||
message : msg,
|
||||
operator : 'pass',
|
||||
extra : extra
|
||||
});
|
||||
};
|
||||
|
||||
Test.prototype.skip = function (msg, extra) {
|
||||
this._assert(true, {
|
||||
message : msg,
|
||||
operator : 'skip',
|
||||
skip : true,
|
||||
extra : extra
|
||||
});
|
||||
};
|
||||
|
||||
Test.prototype.ok
|
||||
= Test.prototype['true']
|
||||
= Test.prototype.assert
|
||||
= function (value, msg, extra) {
|
||||
this._assert(value, {
|
||||
message : msg,
|
||||
operator : 'ok',
|
||||
expected : true,
|
||||
actual : value,
|
||||
extra : extra
|
||||
});
|
||||
};
|
||||
|
||||
Test.prototype.notOk
|
||||
= Test.prototype['false']
|
||||
= Test.prototype.notok
|
||||
= function (value, msg, extra) {
|
||||
this._assert(!value, {
|
||||
message : msg,
|
||||
operator : 'notOk',
|
||||
expected : false,
|
||||
actual : value,
|
||||
extra : extra
|
||||
});
|
||||
};
|
||||
|
||||
Test.prototype.error
|
||||
= Test.prototype.ifError
|
||||
= Test.prototype.ifErr
|
||||
= Test.prototype.iferror
|
||||
= function (err, msg, extra) {
|
||||
this._assert(!err, {
|
||||
message : defined(msg, String(err)),
|
||||
operator : 'error',
|
||||
actual : err,
|
||||
extra : extra
|
||||
});
|
||||
};
|
||||
|
||||
Test.prototype.equal
|
||||
= Test.prototype.equals
|
||||
= Test.prototype.isEqual
|
||||
= Test.prototype.is
|
||||
= Test.prototype.strictEqual
|
||||
= Test.prototype.strictEquals
|
||||
= function (a, b, msg, extra) {
|
||||
this._assert(a === b, {
|
||||
message : defined(msg, 'should be equal'),
|
||||
operator : 'equal',
|
||||
actual : a,
|
||||
expected : b,
|
||||
extra : extra
|
||||
});
|
||||
};
|
||||
|
||||
Test.prototype.notEqual
|
||||
= Test.prototype.notEquals
|
||||
= Test.prototype.notStrictEqual
|
||||
= Test.prototype.notStrictEquals
|
||||
= Test.prototype.isNotEqual
|
||||
= Test.prototype.isNot
|
||||
= Test.prototype.not
|
||||
= Test.prototype.doesNotEqual
|
||||
= Test.prototype.isInequal
|
||||
= function (a, b, msg, extra) {
|
||||
this._assert(a !== b, {
|
||||
message : defined(msg, 'should not be equal'),
|
||||
operator : 'notEqual',
|
||||
actual : a,
|
||||
notExpected : b,
|
||||
extra : extra
|
||||
});
|
||||
};
|
||||
|
||||
Test.prototype.deepEqual
|
||||
= Test.prototype.deepEquals
|
||||
= Test.prototype.isEquivalent
|
||||
= Test.prototype.same
|
||||
= function (a, b, msg, extra) {
|
||||
this._assert(deepEqual(a, b, { strict: true }), {
|
||||
message : defined(msg, 'should be equivalent'),
|
||||
operator : 'deepEqual',
|
||||
actual : a,
|
||||
expected : b,
|
||||
extra : extra
|
||||
});
|
||||
};
|
||||
|
||||
Test.prototype.deepLooseEqual
|
||||
= Test.prototype.looseEqual
|
||||
= Test.prototype.looseEquals
|
||||
= function (a, b, msg, extra) {
|
||||
this._assert(deepEqual(a, b), {
|
||||
message : defined(msg, 'should be equivalent'),
|
||||
operator : 'deepLooseEqual',
|
||||
actual : a,
|
||||
expected : b,
|
||||
extra : extra
|
||||
});
|
||||
};
|
||||
|
||||
Test.prototype.notDeepEqual
|
||||
= Test.prototype.notEquivalent
|
||||
= Test.prototype.notDeeply
|
||||
= Test.prototype.notSame
|
||||
= Test.prototype.isNotDeepEqual
|
||||
= Test.prototype.isNotDeeply
|
||||
= Test.prototype.isNotEquivalent
|
||||
= Test.prototype.isInequivalent
|
||||
= function (a, b, msg, extra) {
|
||||
this._assert(!deepEqual(a, b, { strict: true }), {
|
||||
message : defined(msg, 'should not be equivalent'),
|
||||
operator : 'notDeepEqual',
|
||||
actual : a,
|
||||
notExpected : b,
|
||||
extra : extra
|
||||
});
|
||||
};
|
||||
|
||||
Test.prototype.notDeepLooseEqual
|
||||
= Test.prototype.notLooseEqual
|
||||
= Test.prototype.notLooseEquals
|
||||
= function (a, b, msg, extra) {
|
||||
this._assert(!deepEqual(a, b), {
|
||||
message : defined(msg, 'should be equivalent'),
|
||||
operator : 'notDeepLooseEqual',
|
||||
actual : a,
|
||||
expected : b,
|
||||
extra : extra
|
||||
});
|
||||
};
|
||||
|
||||
Test.prototype['throws'] = function (fn, expected, msg, extra) {
|
||||
if (typeof expected === 'string') {
|
||||
msg = expected;
|
||||
expected = undefined;
|
||||
}
|
||||
|
||||
var caught = undefined;
|
||||
|
||||
try {
|
||||
fn();
|
||||
} catch (err) {
|
||||
caught = { error : err };
|
||||
var message = err.message;
|
||||
delete err.message;
|
||||
err.message = message;
|
||||
}
|
||||
|
||||
var passed = caught;
|
||||
|
||||
if (expected instanceof RegExp) {
|
||||
passed = expected.test(caught && caught.error);
|
||||
expected = String(expected);
|
||||
}
|
||||
|
||||
if (typeof expected === 'function') {
|
||||
passed = caught.error instanceof expected;
|
||||
caught.error = caught.error.constructor;
|
||||
}
|
||||
|
||||
this._assert(passed, {
|
||||
message : defined(msg, 'should throw'),
|
||||
operator : 'throws',
|
||||
actual : caught && caught.error,
|
||||
expected : expected,
|
||||
error: !passed && caught && caught.error,
|
||||
extra : extra
|
||||
});
|
||||
};
|
||||
|
||||
Test.prototype.doesNotThrow = function (fn, expected, msg, extra) {
|
||||
if (typeof expected === 'string') {
|
||||
msg = expected;
|
||||
expected = undefined;
|
||||
}
|
||||
var caught = undefined;
|
||||
try {
|
||||
fn();
|
||||
}
|
||||
catch (err) {
|
||||
caught = { error : err };
|
||||
}
|
||||
this._assert(!caught, {
|
||||
message : defined(msg, 'should not throw'),
|
||||
operator : 'throws',
|
||||
actual : caught && caught.error,
|
||||
expected : expected,
|
||||
error : caught && caught.error,
|
||||
extra : extra
|
||||
});
|
||||
};
|
||||
|
||||
function has (obj, prop) {
|
||||
return Object.prototype.hasOwnProperty.call(obj, prop);
|
||||
}
|
||||
|
||||
Test.skip = function (name_, _opts, _cb) {
|
||||
var args = getTestArgs.apply(null, arguments);
|
||||
args.opts.skip = true;
|
||||
return Test(args.name, args.opts, args.cb);
|
||||
};
|
||||
|
||||
// vim: set softtabstop=4 shiftwidth=4:
|
||||
|
4
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/deep-equal/.travis.yml
generated
vendored
Normal file
4
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/deep-equal/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- 0.4
|
||||
- 0.6
|
18
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/deep-equal/LICENSE
generated
vendored
Normal file
18
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/deep-equal/LICENSE
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
This software is released under the MIT license:
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
94
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/deep-equal/index.js
generated
vendored
Normal file
94
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/deep-equal/index.js
generated
vendored
Normal file
@ -0,0 +1,94 @@
|
||||
var pSlice = Array.prototype.slice;
|
||||
var objectKeys = require('./lib/keys.js');
|
||||
var isArguments = require('./lib/is_arguments.js');
|
||||
|
||||
var deepEqual = module.exports = function (actual, expected, opts) {
|
||||
if (!opts) opts = {};
|
||||
// 7.1. All identical values are equivalent, as determined by ===.
|
||||
if (actual === expected) {
|
||||
return true;
|
||||
|
||||
} else if (actual instanceof Date && expected instanceof Date) {
|
||||
return actual.getTime() === expected.getTime();
|
||||
|
||||
// 7.3. Other pairs that do not both pass typeof value == 'object',
|
||||
// equivalence is determined by ==.
|
||||
} else if (typeof actual != 'object' && typeof expected != 'object') {
|
||||
return opts.strict ? actual === expected : actual == expected;
|
||||
|
||||
// 7.4. For all other Object pairs, including Array objects, equivalence is
|
||||
// determined by having the same number of owned properties (as verified
|
||||
// with Object.prototype.hasOwnProperty.call), the same set of keys
|
||||
// (although not necessarily the same order), equivalent values for every
|
||||
// corresponding key, and an identical 'prototype' property. Note: this
|
||||
// accounts for both named and indexed properties on Arrays.
|
||||
} else {
|
||||
return objEquiv(actual, expected, opts);
|
||||
}
|
||||
}
|
||||
|
||||
function isUndefinedOrNull(value) {
|
||||
return value === null || value === undefined;
|
||||
}
|
||||
|
||||
function isBuffer (x) {
|
||||
if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;
|
||||
if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {
|
||||
return false;
|
||||
}
|
||||
if (x.length > 0 && typeof x[0] !== 'number') return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
function objEquiv(a, b, opts) {
|
||||
var i, key;
|
||||
if (isUndefinedOrNull(a) || isUndefinedOrNull(b))
|
||||
return false;
|
||||
// an identical 'prototype' property.
|
||||
if (a.prototype !== b.prototype) return false;
|
||||
//~~~I've managed to break Object.keys through screwy arguments passing.
|
||||
// Converting to array solves the problem.
|
||||
if (isArguments(a)) {
|
||||
if (!isArguments(b)) {
|
||||
return false;
|
||||
}
|
||||
a = pSlice.call(a);
|
||||
b = pSlice.call(b);
|
||||
return deepEqual(a, b, opts);
|
||||
}
|
||||
if (isBuffer(a)) {
|
||||
if (!isBuffer(b)) {
|
||||
return false;
|
||||
}
|
||||
if (a.length !== b.length) return false;
|
||||
for (i = 0; i < a.length; i++) {
|
||||
if (a[i] !== b[i]) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
try {
|
||||
var ka = objectKeys(a),
|
||||
kb = objectKeys(b);
|
||||
} catch (e) {//happens when one is a string literal and the other isn't
|
||||
return false;
|
||||
}
|
||||
// having the same number of owned properties (keys incorporates
|
||||
// hasOwnProperty)
|
||||
if (ka.length != kb.length)
|
||||
return false;
|
||||
//the same set of keys (although not necessarily the same order),
|
||||
ka.sort();
|
||||
kb.sort();
|
||||
//~~~cheap key test
|
||||
for (i = ka.length - 1; i >= 0; i--) {
|
||||
if (ka[i] != kb[i])
|
||||
return false;
|
||||
}
|
||||
//equivalent values for every corresponding key, and
|
||||
//~~~possibly expensive deep test
|
||||
for (i = ka.length - 1; i >= 0; i--) {
|
||||
key = ka[i];
|
||||
if (!deepEqual(a[key], b[key], opts)) return false;
|
||||
}
|
||||
return typeof a === typeof b;
|
||||
}
|
20
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/deep-equal/lib/is_arguments.js
generated
vendored
Normal file
20
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/deep-equal/lib/is_arguments.js
generated
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
var supportsArgumentsClass = (function(){
|
||||
return Object.prototype.toString.call(arguments)
|
||||
})() == '[object Arguments]';
|
||||
|
||||
exports = module.exports = supportsArgumentsClass ? supported : unsupported;
|
||||
|
||||
exports.supported = supported;
|
||||
function supported(object) {
|
||||
return Object.prototype.toString.call(object) == '[object Arguments]';
|
||||
};
|
||||
|
||||
exports.unsupported = unsupported;
|
||||
function unsupported(object){
|
||||
return object &&
|
||||
typeof object == 'object' &&
|
||||
typeof object.length == 'number' &&
|
||||
Object.prototype.hasOwnProperty.call(object, 'callee') &&
|
||||
!Object.prototype.propertyIsEnumerable.call(object, 'callee') ||
|
||||
false;
|
||||
};
|
9
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/deep-equal/lib/keys.js
generated
vendored
Normal file
9
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/deep-equal/lib/keys.js
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
exports = module.exports = typeof Object.keys === 'function'
|
||||
? Object.keys : shim;
|
||||
|
||||
exports.shim = shim;
|
||||
function shim (obj) {
|
||||
var keys = [];
|
||||
for (var key in obj) keys.push(key);
|
||||
return keys;
|
||||
}
|
84
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/deep-equal/package.json
generated
vendored
Normal file
84
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/deep-equal/package.json
generated
vendored
Normal file
@ -0,0 +1,84 @@
|
||||
{
|
||||
"name": "deep-equal",
|
||||
"version": "0.2.2",
|
||||
"description": "node's assert.deepEqual algorithm",
|
||||
"main": "index.js",
|
||||
"directories": {
|
||||
"lib": ".",
|
||||
"example": "example",
|
||||
"test": "test"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "tape test/*.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"tape": "^3.5.0"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+ssh://git@github.com/substack/node-deep-equal.git"
|
||||
},
|
||||
"keywords": [
|
||||
"equality",
|
||||
"equal",
|
||||
"compare"
|
||||
],
|
||||
"author": {
|
||||
"name": "James Halliday",
|
||||
"email": "mail@substack.net",
|
||||
"url": "http://substack.net"
|
||||
},
|
||||
"license": "MIT",
|
||||
"testling": {
|
||||
"files": "test/*.js",
|
||||
"browsers": {
|
||||
"ie": [
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9
|
||||
],
|
||||
"ff": [
|
||||
3.5,
|
||||
10,
|
||||
15
|
||||
],
|
||||
"chrome": [
|
||||
10,
|
||||
22
|
||||
],
|
||||
"safari": [
|
||||
5.1
|
||||
],
|
||||
"opera": [
|
||||
12
|
||||
]
|
||||
}
|
||||
},
|
||||
"gitHead": "05cd26a25f0d7babf0c2758827b4dafec9d0582e",
|
||||
"bugs": {
|
||||
"url": "https://github.com/substack/node-deep-equal/issues"
|
||||
},
|
||||
"homepage": "https://github.com/substack/node-deep-equal",
|
||||
"_id": "deep-equal@0.2.2",
|
||||
"_shasum": "84b745896f34c684e98f2ce0e42abaf43bba017d",
|
||||
"_from": "deep-equal@>=0.2.0 <0.3.0",
|
||||
"_npmVersion": "2.3.0",
|
||||
"_nodeVersion": "0.10.35",
|
||||
"_npmUser": {
|
||||
"name": "substack",
|
||||
"email": "mail@substack.net"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "substack",
|
||||
"email": "mail@substack.net"
|
||||
}
|
||||
],
|
||||
"dist": {
|
||||
"shasum": "84b745896f34c684e98f2ce0e42abaf43bba017d",
|
||||
"tarball": "http://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz"
|
||||
},
|
||||
"_resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz",
|
||||
"readme": "ERROR: No README data found!"
|
||||
}
|
61
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/deep-equal/readme.markdown
generated
vendored
Normal file
61
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/deep-equal/readme.markdown
generated
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
# deep-equal
|
||||
|
||||
Node's `assert.deepEqual() algorithm` as a standalone module.
|
||||
|
||||
This module is around [5 times faster](https://gist.github.com/2790507)
|
||||
than wrapping `assert.deepEqual()` in a `try/catch`.
|
||||
|
||||
[](https://ci.testling.com/substack/node-deep-equal)
|
||||
|
||||
[](https://travis-ci.org/substack/node-deep-equal)
|
||||
|
||||
# example
|
||||
|
||||
``` js
|
||||
var equal = require('deep-equal');
|
||||
console.dir([
|
||||
equal(
|
||||
{ a : [ 2, 3 ], b : [ 4 ] },
|
||||
{ a : [ 2, 3 ], b : [ 4 ] }
|
||||
),
|
||||
equal(
|
||||
{ x : 5, y : [6] },
|
||||
{ x : 5, y : 6 }
|
||||
)
|
||||
]);
|
||||
```
|
||||
|
||||
# methods
|
||||
|
||||
``` js
|
||||
var deepEqual = require('deep-equal')
|
||||
```
|
||||
|
||||
## deepEqual(a, b, opts)
|
||||
|
||||
Compare objects `a` and `b`, returning whether they are equal according to a
|
||||
recursive equality algorithm.
|
||||
|
||||
If `opts.strict` is `true`, use strict equality (`===`) to compare leaf nodes.
|
||||
The default is to use coercive equality (`==`) because that's how
|
||||
`assert.deepEqual()` works by default.
|
||||
|
||||
# install
|
||||
|
||||
With [npm](http://npmjs.org) do:
|
||||
|
||||
```
|
||||
npm install deep-equal
|
||||
```
|
||||
|
||||
# test
|
||||
|
||||
With [npm](http://npmjs.org) do:
|
||||
|
||||
```
|
||||
npm test
|
||||
```
|
||||
|
||||
# license
|
||||
|
||||
MIT. Derived largely from node's assert module.
|
4
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/defined/.travis.yml
generated
vendored
Normal file
4
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/defined/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- 0.6
|
||||
- 0.8
|
18
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/defined/LICENSE
generated
vendored
Normal file
18
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/defined/LICENSE
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
This software is released under the MIT license:
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
5
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/defined/index.js
generated
vendored
Normal file
5
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/defined/index.js
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
module.exports = function () {
|
||||
for (var i = 0; i < arguments.length; i++) {
|
||||
if (arguments[i] !== undefined) return arguments[i];
|
||||
}
|
||||
};
|
60
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/defined/package.json
generated
vendored
Normal file
60
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/defined/package.json
generated
vendored
Normal file
@ -0,0 +1,60 @@
|
||||
{
|
||||
"name": "defined",
|
||||
"version": "0.0.0",
|
||||
"description": "return the first argument that is `!== undefined`",
|
||||
"main": "index.js",
|
||||
"directories": {
|
||||
"example": "example",
|
||||
"test": "test"
|
||||
},
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"tap": "~0.3.0",
|
||||
"tape": "~0.0.2"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "tap test/*.js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/substack/defined.git"
|
||||
},
|
||||
"homepage": "https://github.com/substack/defined",
|
||||
"keywords": [
|
||||
"undefined",
|
||||
"short-circuit",
|
||||
"||",
|
||||
"or",
|
||||
"//",
|
||||
"defined-or"
|
||||
],
|
||||
"author": {
|
||||
"name": "James Halliday",
|
||||
"email": "mail@substack.net",
|
||||
"url": "http://substack.net"
|
||||
},
|
||||
"license": "MIT",
|
||||
"_id": "defined@0.0.0",
|
||||
"dist": {
|
||||
"shasum": "f35eea7d705e933baf13b2f03b3f83d921403b3e",
|
||||
"tarball": "http://registry.npmjs.org/defined/-/defined-0.0.0.tgz"
|
||||
},
|
||||
"_npmVersion": "1.1.59",
|
||||
"_npmUser": {
|
||||
"name": "substack",
|
||||
"email": "mail@substack.net"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "substack",
|
||||
"email": "mail@substack.net"
|
||||
}
|
||||
],
|
||||
"_shasum": "f35eea7d705e933baf13b2f03b3f83d921403b3e",
|
||||
"_resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz",
|
||||
"_from": "defined@>=0.0.0 <0.1.0",
|
||||
"bugs": {
|
||||
"url": "https://github.com/substack/defined/issues"
|
||||
},
|
||||
"readme": "ERROR: No README data found!"
|
||||
}
|
51
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/defined/readme.markdown
generated
vendored
Normal file
51
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/defined/readme.markdown
generated
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
# defined
|
||||
|
||||
return the first argument that is `!== undefined`
|
||||
|
||||
[](http://travis-ci.org/substack/defined)
|
||||
|
||||
Most of the time when I chain together `||`s, I actually just want the first
|
||||
item that is not `undefined`, not the first non-falsy item.
|
||||
|
||||
This module is like the defined-or (`//`) operator in perl 5.10+.
|
||||
|
||||
# example
|
||||
|
||||
``` js
|
||||
var defined = require('defined');
|
||||
var opts = { y : false, w : 4 };
|
||||
var x = defined(opts.x, opts.y, opts.w, 100);
|
||||
console.log(x);
|
||||
```
|
||||
|
||||
```
|
||||
$ node example/defined.js
|
||||
false
|
||||
```
|
||||
|
||||
The return value is `false` because `false` is the first item that is
|
||||
`!== undefined`.
|
||||
|
||||
# methods
|
||||
|
||||
``` js
|
||||
var defined = require('defined')
|
||||
```
|
||||
|
||||
## var x = defined(a, b, c...)
|
||||
|
||||
Return the first item in the argument list `a, b, c...` that is `!== undefined`.
|
||||
|
||||
If all the items are `=== undefined`, return undefined.
|
||||
|
||||
# install
|
||||
|
||||
With [npm](https://npmjs.org) do:
|
||||
|
||||
```
|
||||
npm install defined
|
||||
```
|
||||
|
||||
# license
|
||||
|
||||
MIT
|
2
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/.npmignore
generated
vendored
Normal file
2
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/.npmignore
generated
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
.*.swp
|
||||
test/a/
|
3
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/.travis.yml
generated
vendored
Normal file
3
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- 0.8
|
27
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/LICENSE
generated
vendored
Normal file
27
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/LICENSE
generated
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
Copyright (c) Isaac Z. Schlueter ("Author")
|
||||
All rights reserved.
|
||||
|
||||
The BSD License
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
|
||||
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
250
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/README.md
generated
vendored
Normal file
250
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/README.md
generated
vendored
Normal file
@ -0,0 +1,250 @@
|
||||
# Glob
|
||||
|
||||
Match files using the patterns the shell uses, like stars and stuff.
|
||||
|
||||
This is a glob implementation in JavaScript. It uses the `minimatch`
|
||||
library to do its matching.
|
||||
|
||||
## Attention: node-glob users!
|
||||
|
||||
The API has changed dramatically between 2.x and 3.x. This library is
|
||||
now 100% JavaScript, and the integer flags have been replaced with an
|
||||
options object.
|
||||
|
||||
Also, there's an event emitter class, proper tests, and all the other
|
||||
things you've come to expect from node modules.
|
||||
|
||||
And best of all, no compilation!
|
||||
|
||||
## Usage
|
||||
|
||||
```javascript
|
||||
var glob = require("glob")
|
||||
|
||||
// options is optional
|
||||
glob("**/*.js", options, function (er, files) {
|
||||
// files is an array of filenames.
|
||||
// If the `nonull` option is set, and nothing
|
||||
// was found, then files is ["**/*.js"]
|
||||
// er is an error object or null.
|
||||
})
|
||||
```
|
||||
|
||||
## Features
|
||||
|
||||
Please see the [minimatch
|
||||
documentation](https://github.com/isaacs/minimatch) for more details.
|
||||
|
||||
Supports these glob features:
|
||||
|
||||
* Brace Expansion
|
||||
* Extended glob matching
|
||||
* "Globstar" `**` matching
|
||||
|
||||
See:
|
||||
|
||||
* `man sh`
|
||||
* `man bash`
|
||||
* `man 3 fnmatch`
|
||||
* `man 5 gitignore`
|
||||
* [minimatch documentation](https://github.com/isaacs/minimatch)
|
||||
|
||||
## glob(pattern, [options], cb)
|
||||
|
||||
* `pattern` {String} Pattern to be matched
|
||||
* `options` {Object}
|
||||
* `cb` {Function}
|
||||
* `err` {Error | null}
|
||||
* `matches` {Array<String>} filenames found matching the pattern
|
||||
|
||||
Perform an asynchronous glob search.
|
||||
|
||||
## glob.sync(pattern, [options])
|
||||
|
||||
* `pattern` {String} Pattern to be matched
|
||||
* `options` {Object}
|
||||
* return: {Array<String>} filenames found matching the pattern
|
||||
|
||||
Perform a synchronous glob search.
|
||||
|
||||
## Class: glob.Glob
|
||||
|
||||
Create a Glob object by instanting the `glob.Glob` class.
|
||||
|
||||
```javascript
|
||||
var Glob = require("glob").Glob
|
||||
var mg = new Glob(pattern, options, cb)
|
||||
```
|
||||
|
||||
It's an EventEmitter, and starts walking the filesystem to find matches
|
||||
immediately.
|
||||
|
||||
### new glob.Glob(pattern, [options], [cb])
|
||||
|
||||
* `pattern` {String} pattern to search for
|
||||
* `options` {Object}
|
||||
* `cb` {Function} Called when an error occurs, or matches are found
|
||||
* `err` {Error | null}
|
||||
* `matches` {Array<String>} filenames found matching the pattern
|
||||
|
||||
Note that if the `sync` flag is set in the options, then matches will
|
||||
be immediately available on the `g.found` member.
|
||||
|
||||
### Properties
|
||||
|
||||
* `minimatch` The minimatch object that the glob uses.
|
||||
* `options` The options object passed in.
|
||||
* `error` The error encountered. When an error is encountered, the
|
||||
glob object is in an undefined state, and should be discarded.
|
||||
* `aborted` Boolean which is set to true when calling `abort()`. There
|
||||
is no way at this time to continue a glob search after aborting, but
|
||||
you can re-use the statCache to avoid having to duplicate syscalls.
|
||||
* `statCache` Collection of all the stat results the glob search
|
||||
performed.
|
||||
* `cache` Convenience object. Each field has the following possible
|
||||
values:
|
||||
* `false` - Path does not exist
|
||||
* `true` - Path exists
|
||||
* `1` - Path exists, and is not a directory
|
||||
* `2` - Path exists, and is a directory
|
||||
* `[file, entries, ...]` - Path exists, is a directory, and the
|
||||
array value is the results of `fs.readdir`
|
||||
|
||||
### Events
|
||||
|
||||
* `end` When the matching is finished, this is emitted with all the
|
||||
matches found. If the `nonull` option is set, and no match was found,
|
||||
then the `matches` list contains the original pattern. The matches
|
||||
are sorted, unless the `nosort` flag is set.
|
||||
* `match` Every time a match is found, this is emitted with the matched.
|
||||
* `error` Emitted when an unexpected error is encountered, or whenever
|
||||
any fs error occurs if `options.strict` is set.
|
||||
* `abort` When `abort()` is called, this event is raised.
|
||||
|
||||
### Methods
|
||||
|
||||
* `abort` Stop the search.
|
||||
|
||||
### Options
|
||||
|
||||
All the options that can be passed to Minimatch can also be passed to
|
||||
Glob to change pattern matching behavior. Also, some have been added,
|
||||
or have glob-specific ramifications.
|
||||
|
||||
All options are false by default, unless otherwise noted.
|
||||
|
||||
All options are added to the glob object, as well.
|
||||
|
||||
* `cwd` The current working directory in which to search. Defaults
|
||||
to `process.cwd()`.
|
||||
* `root` The place where patterns starting with `/` will be mounted
|
||||
onto. Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix
|
||||
systems, and `C:\` or some such on Windows.)
|
||||
* `dot` Include `.dot` files in normal matches and `globstar` matches.
|
||||
Note that an explicit dot in a portion of the pattern will always
|
||||
match dot files.
|
||||
* `nomount` By default, a pattern starting with a forward-slash will be
|
||||
"mounted" onto the root setting, so that a valid filesystem path is
|
||||
returned. Set this flag to disable that behavior.
|
||||
* `mark` Add a `/` character to directory matches. Note that this
|
||||
requires additional stat calls.
|
||||
* `nosort` Don't sort the results.
|
||||
* `stat` Set to true to stat *all* results. This reduces performance
|
||||
somewhat, and is completely unnecessary, unless `readdir` is presumed
|
||||
to be an untrustworthy indicator of file existence. It will cause
|
||||
ELOOP to be triggered one level sooner in the case of cyclical
|
||||
symbolic links.
|
||||
* `silent` When an unusual error is encountered
|
||||
when attempting to read a directory, a warning will be printed to
|
||||
stderr. Set the `silent` option to true to suppress these warnings.
|
||||
* `strict` When an unusual error is encountered
|
||||
when attempting to read a directory, the process will just continue on
|
||||
in search of other matches. Set the `strict` option to raise an error
|
||||
in these cases.
|
||||
* `cache` See `cache` property above. Pass in a previously generated
|
||||
cache object to save some fs calls.
|
||||
* `statCache` A cache of results of filesystem information, to prevent
|
||||
unnecessary stat calls. While it should not normally be necessary to
|
||||
set this, you may pass the statCache from one glob() call to the
|
||||
options object of another, if you know that the filesystem will not
|
||||
change between calls. (See "Race Conditions" below.)
|
||||
* `sync` Perform a synchronous glob search.
|
||||
* `nounique` In some cases, brace-expanded patterns can result in the
|
||||
same file showing up multiple times in the result set. By default,
|
||||
this implementation prevents duplicates in the result set.
|
||||
Set this flag to disable that behavior.
|
||||
* `nonull` Set to never return an empty set, instead returning a set
|
||||
containing the pattern itself. This is the default in glob(3).
|
||||
* `nocase` Perform a case-insensitive match. Note that case-insensitive
|
||||
filesystems will sometimes result in glob returning results that are
|
||||
case-insensitively matched anyway, since readdir and stat will not
|
||||
raise an error.
|
||||
* `debug` Set to enable debug logging in minimatch and glob.
|
||||
* `globDebug` Set to enable debug logging in glob, but not minimatch.
|
||||
|
||||
## Comparisons to other fnmatch/glob implementations
|
||||
|
||||
While strict compliance with the existing standards is a worthwhile
|
||||
goal, some discrepancies exist between node-glob and other
|
||||
implementations, and are intentional.
|
||||
|
||||
If the pattern starts with a `!` character, then it is negated. Set the
|
||||
`nonegate` flag to suppress this behavior, and treat leading `!`
|
||||
characters normally. This is perhaps relevant if you wish to start the
|
||||
pattern with a negative extglob pattern like `!(a|B)`. Multiple `!`
|
||||
characters at the start of a pattern will negate the pattern multiple
|
||||
times.
|
||||
|
||||
If a pattern starts with `#`, then it is treated as a comment, and
|
||||
will not match anything. Use `\#` to match a literal `#` at the
|
||||
start of a line, or set the `nocomment` flag to suppress this behavior.
|
||||
|
||||
The double-star character `**` is supported by default, unless the
|
||||
`noglobstar` flag is set. This is supported in the manner of bsdglob
|
||||
and bash 4.1, where `**` only has special significance if it is the only
|
||||
thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but
|
||||
`a/**b` will not.
|
||||
|
||||
If an escaped pattern has no matches, and the `nonull` flag is set,
|
||||
then glob returns the pattern as-provided, rather than
|
||||
interpreting the character escapes. For example,
|
||||
`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than
|
||||
`"*a?"`. This is akin to setting the `nullglob` option in bash, except
|
||||
that it does not resolve escaped pattern characters.
|
||||
|
||||
If brace expansion is not disabled, then it is performed before any
|
||||
other interpretation of the glob pattern. Thus, a pattern like
|
||||
`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded
|
||||
**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are
|
||||
checked for validity. Since those two are valid, matching proceeds.
|
||||
|
||||
## Windows
|
||||
|
||||
**Please only use forward-slashes in glob expressions.**
|
||||
|
||||
Though windows uses either `/` or `\` as its path separator, only `/`
|
||||
characters are used by this glob implementation. You must use
|
||||
forward-slashes **only** in glob expressions. Back-slashes will always
|
||||
be interpreted as escape characters, not path separators.
|
||||
|
||||
Results from absolute patterns such as `/foo/*` are mounted onto the
|
||||
root setting using `path.join`. On windows, this will by default result
|
||||
in `/foo/*` matching `C:\foo\bar.txt`.
|
||||
|
||||
## Race Conditions
|
||||
|
||||
Glob searching, by its very nature, is susceptible to race conditions,
|
||||
since it relies on directory walking and such.
|
||||
|
||||
As a result, it is possible that a file that exists when glob looks for
|
||||
it may have been deleted or modified by the time it returns the result.
|
||||
|
||||
As part of its internal implementation, this program caches all stat
|
||||
and readdir calls that it makes, in order to cut down on system
|
||||
overhead. However, this also makes it even more susceptible to races,
|
||||
especially if the cache or statCache objects are reused between glob
|
||||
calls.
|
||||
|
||||
Users are thus advised not to use a glob result as a guarantee of
|
||||
filesystem state in the face of rapid changes. For the vast majority
|
||||
of operations, this is never a problem.
|
9
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/examples/g.js
generated
vendored
Normal file
9
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/examples/g.js
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
var Glob = require("../").Glob
|
||||
|
||||
var pattern = "test/a/**/[cg]/../[cg]"
|
||||
console.log(pattern)
|
||||
|
||||
var mg = new Glob(pattern, {mark: true, sync:true}, function (er, matches) {
|
||||
console.log("matches", matches)
|
||||
})
|
||||
console.log("after")
|
9
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/examples/usr-local.js
generated
vendored
Normal file
9
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/examples/usr-local.js
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
var Glob = require("../").Glob
|
||||
|
||||
var pattern = "{./*/*,/*,/usr/local/*}"
|
||||
console.log(pattern)
|
||||
|
||||
var mg = new Glob(pattern, {mark: true}, function (er, matches) {
|
||||
console.log("matches", matches)
|
||||
})
|
||||
console.log("after")
|
728
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/glob.js
generated
vendored
Normal file
728
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/glob.js
generated
vendored
Normal file
@ -0,0 +1,728 @@
|
||||
// Approach:
|
||||
//
|
||||
// 1. Get the minimatch set
|
||||
// 2. For each pattern in the set, PROCESS(pattern)
|
||||
// 3. Store matches per-set, then uniq them
|
||||
//
|
||||
// PROCESS(pattern)
|
||||
// Get the first [n] items from pattern that are all strings
|
||||
// Join these together. This is PREFIX.
|
||||
// If there is no more remaining, then stat(PREFIX) and
|
||||
// add to matches if it succeeds. END.
|
||||
// readdir(PREFIX) as ENTRIES
|
||||
// If fails, END
|
||||
// If pattern[n] is GLOBSTAR
|
||||
// // handle the case where the globstar match is empty
|
||||
// // by pruning it out, and testing the resulting pattern
|
||||
// PROCESS(pattern[0..n] + pattern[n+1 .. $])
|
||||
// // handle other cases.
|
||||
// for ENTRY in ENTRIES (not dotfiles)
|
||||
// // attach globstar + tail onto the entry
|
||||
// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $])
|
||||
//
|
||||
// else // not globstar
|
||||
// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)
|
||||
// Test ENTRY against pattern[n]
|
||||
// If fails, continue
|
||||
// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])
|
||||
//
|
||||
// Caveat:
|
||||
// Cache all stats and readdirs results to minimize syscall. Since all
|
||||
// we ever care about is existence and directory-ness, we can just keep
|
||||
// `true` for files, and [children,...] for directories, or `false` for
|
||||
// things that don't exist.
|
||||
|
||||
|
||||
|
||||
module.exports = glob
|
||||
|
||||
var fs = require("fs")
|
||||
, minimatch = require("minimatch")
|
||||
, Minimatch = minimatch.Minimatch
|
||||
, inherits = require("inherits")
|
||||
, EE = require("events").EventEmitter
|
||||
, path = require("path")
|
||||
, isDir = {}
|
||||
, assert = require("assert").ok
|
||||
|
||||
function glob (pattern, options, cb) {
|
||||
if (typeof options === "function") cb = options, options = {}
|
||||
if (!options) options = {}
|
||||
|
||||
if (typeof options === "number") {
|
||||
deprecated()
|
||||
return
|
||||
}
|
||||
|
||||
var g = new Glob(pattern, options, cb)
|
||||
return g.sync ? g.found : g
|
||||
}
|
||||
|
||||
glob.fnmatch = deprecated
|
||||
|
||||
function deprecated () {
|
||||
throw new Error("glob's interface has changed. Please see the docs.")
|
||||
}
|
||||
|
||||
glob.sync = globSync
|
||||
function globSync (pattern, options) {
|
||||
if (typeof options === "number") {
|
||||
deprecated()
|
||||
return
|
||||
}
|
||||
|
||||
options = options || {}
|
||||
options.sync = true
|
||||
return glob(pattern, options)
|
||||
}
|
||||
|
||||
this._processingEmitQueue = false
|
||||
|
||||
glob.Glob = Glob
|
||||
inherits(Glob, EE)
|
||||
function Glob (pattern, options, cb) {
|
||||
if (!(this instanceof Glob)) {
|
||||
return new Glob(pattern, options, cb)
|
||||
}
|
||||
|
||||
if (typeof options === "function") {
|
||||
cb = options
|
||||
options = null
|
||||
}
|
||||
|
||||
if (typeof cb === "function") {
|
||||
this.on("error", cb)
|
||||
this.on("end", function (matches) {
|
||||
cb(null, matches)
|
||||
})
|
||||
}
|
||||
|
||||
options = options || {}
|
||||
|
||||
this._endEmitted = false
|
||||
this.EOF = {}
|
||||
this._emitQueue = []
|
||||
|
||||
this.paused = false
|
||||
this._processingEmitQueue = false
|
||||
|
||||
this.maxDepth = options.maxDepth || 1000
|
||||
this.maxLength = options.maxLength || Infinity
|
||||
this.cache = options.cache || {}
|
||||
this.statCache = options.statCache || {}
|
||||
|
||||
this.changedCwd = false
|
||||
var cwd = process.cwd()
|
||||
if (!options.hasOwnProperty("cwd")) this.cwd = cwd
|
||||
else {
|
||||
this.cwd = options.cwd
|
||||
this.changedCwd = path.resolve(options.cwd) !== cwd
|
||||
}
|
||||
|
||||
this.root = options.root || path.resolve(this.cwd, "/")
|
||||
this.root = path.resolve(this.root)
|
||||
if (process.platform === "win32")
|
||||
this.root = this.root.replace(/\\/g, "/")
|
||||
|
||||
this.nomount = !!options.nomount
|
||||
|
||||
if (!pattern) {
|
||||
throw new Error("must provide pattern")
|
||||
}
|
||||
|
||||
// base-matching: just use globstar for that.
|
||||
if (options.matchBase && -1 === pattern.indexOf("/")) {
|
||||
if (options.noglobstar) {
|
||||
throw new Error("base matching requires globstar")
|
||||
}
|
||||
pattern = "**/" + pattern
|
||||
}
|
||||
|
||||
this.strict = options.strict !== false
|
||||
this.dot = !!options.dot
|
||||
this.mark = !!options.mark
|
||||
this.sync = !!options.sync
|
||||
this.nounique = !!options.nounique
|
||||
this.nonull = !!options.nonull
|
||||
this.nosort = !!options.nosort
|
||||
this.nocase = !!options.nocase
|
||||
this.stat = !!options.stat
|
||||
|
||||
this.debug = !!options.debug || !!options.globDebug
|
||||
if (this.debug)
|
||||
this.log = console.error
|
||||
|
||||
this.silent = !!options.silent
|
||||
|
||||
var mm = this.minimatch = new Minimatch(pattern, options)
|
||||
this.options = mm.options
|
||||
pattern = this.pattern = mm.pattern
|
||||
|
||||
this.error = null
|
||||
this.aborted = false
|
||||
|
||||
// list of all the patterns that ** has resolved do, so
|
||||
// we can avoid visiting multiple times.
|
||||
this._globstars = {}
|
||||
|
||||
EE.call(this)
|
||||
|
||||
// process each pattern in the minimatch set
|
||||
var n = this.minimatch.set.length
|
||||
|
||||
// The matches are stored as {<filename>: true,...} so that
|
||||
// duplicates are automagically pruned.
|
||||
// Later, we do an Object.keys() on these.
|
||||
// Keep them as a list so we can fill in when nonull is set.
|
||||
this.matches = new Array(n)
|
||||
|
||||
this.minimatch.set.forEach(iterator.bind(this))
|
||||
function iterator (pattern, i, set) {
|
||||
this._process(pattern, 0, i, function (er) {
|
||||
if (er) this.emit("error", er)
|
||||
if (-- n <= 0) this._finish()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Glob.prototype.log = function () {}
|
||||
|
||||
Glob.prototype._finish = function () {
|
||||
assert(this instanceof Glob)
|
||||
|
||||
var nou = this.nounique
|
||||
, all = nou ? [] : {}
|
||||
|
||||
for (var i = 0, l = this.matches.length; i < l; i ++) {
|
||||
var matches = this.matches[i]
|
||||
this.log("matches[%d] =", i, matches)
|
||||
// do like the shell, and spit out the literal glob
|
||||
if (!matches) {
|
||||
if (this.nonull) {
|
||||
var literal = this.minimatch.globSet[i]
|
||||
if (nou) all.push(literal)
|
||||
else all[literal] = true
|
||||
}
|
||||
} else {
|
||||
// had matches
|
||||
var m = Object.keys(matches)
|
||||
if (nou) all.push.apply(all, m)
|
||||
else m.forEach(function (m) {
|
||||
all[m] = true
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if (!nou) all = Object.keys(all)
|
||||
|
||||
if (!this.nosort) {
|
||||
all = all.sort(this.nocase ? alphasorti : alphasort)
|
||||
}
|
||||
|
||||
if (this.mark) {
|
||||
// at *some* point we statted all of these
|
||||
all = all.map(this._mark, this)
|
||||
}
|
||||
|
||||
this.log("emitting end", all)
|
||||
|
||||
this.EOF = this.found = all
|
||||
this.emitMatch(this.EOF)
|
||||
}
|
||||
|
||||
function alphasorti (a, b) {
|
||||
a = a.toLowerCase()
|
||||
b = b.toLowerCase()
|
||||
return alphasort(a, b)
|
||||
}
|
||||
|
||||
function alphasort (a, b) {
|
||||
return a > b ? 1 : a < b ? -1 : 0
|
||||
}
|
||||
|
||||
Glob.prototype._mark = function (p) {
|
||||
var c = this.cache[p]
|
||||
var m = p
|
||||
if (c) {
|
||||
var isDir = c === 2 || Array.isArray(c)
|
||||
var slash = p.slice(-1) === '/'
|
||||
|
||||
if (isDir && !slash)
|
||||
m += '/'
|
||||
else if (!isDir && slash)
|
||||
m = m.slice(0, -1)
|
||||
|
||||
if (m !== p) {
|
||||
this.statCache[m] = this.statCache[p]
|
||||
this.cache[m] = this.cache[p]
|
||||
}
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
Glob.prototype.abort = function () {
|
||||
this.aborted = true
|
||||
this.emit("abort")
|
||||
}
|
||||
|
||||
Glob.prototype.pause = function () {
|
||||
if (this.paused) return
|
||||
if (this.sync)
|
||||
this.emit("error", new Error("Can't pause/resume sync glob"))
|
||||
this.paused = true
|
||||
this.emit("pause")
|
||||
}
|
||||
|
||||
Glob.prototype.resume = function () {
|
||||
if (!this.paused) return
|
||||
if (this.sync)
|
||||
this.emit("error", new Error("Can't pause/resume sync glob"))
|
||||
this.paused = false
|
||||
this.emit("resume")
|
||||
this._processEmitQueue()
|
||||
//process.nextTick(this.emit.bind(this, "resume"))
|
||||
}
|
||||
|
||||
Glob.prototype.emitMatch = function (m) {
|
||||
this.log('emitMatch', m)
|
||||
this._emitQueue.push(m)
|
||||
this._processEmitQueue()
|
||||
}
|
||||
|
||||
Glob.prototype._processEmitQueue = function (m) {
|
||||
this.log("pEQ paused=%j processing=%j m=%j", this.paused,
|
||||
this._processingEmitQueue, m)
|
||||
var done = false
|
||||
while (!this._processingEmitQueue &&
|
||||
!this.paused) {
|
||||
this._processingEmitQueue = true
|
||||
var m = this._emitQueue.shift()
|
||||
this.log(">processEmitQueue", m === this.EOF ? ":EOF:" : m)
|
||||
if (!m) {
|
||||
this.log(">processEmitQueue, falsey m")
|
||||
this._processingEmitQueue = false
|
||||
break
|
||||
}
|
||||
|
||||
if (m === this.EOF || !(this.mark && !this.stat)) {
|
||||
this.log("peq: unmarked, or eof")
|
||||
next.call(this, 0, false)
|
||||
} else if (this.statCache[m]) {
|
||||
var sc = this.statCache[m]
|
||||
var exists
|
||||
if (sc)
|
||||
exists = sc.isDirectory() ? 2 : 1
|
||||
this.log("peq: stat cached")
|
||||
next.call(this, exists, exists === 2)
|
||||
} else {
|
||||
this.log("peq: _stat, then next")
|
||||
this._stat(m, next)
|
||||
}
|
||||
|
||||
function next(exists, isDir) {
|
||||
this.log("next", m, exists, isDir)
|
||||
var ev = m === this.EOF ? "end" : "match"
|
||||
|
||||
// "end" can only happen once.
|
||||
assert(!this._endEmitted)
|
||||
if (ev === "end")
|
||||
this._endEmitted = true
|
||||
|
||||
if (exists) {
|
||||
// Doesn't mean it necessarily doesn't exist, it's possible
|
||||
// we just didn't check because we don't care that much, or
|
||||
// this is EOF anyway.
|
||||
if (isDir && !m.match(/\/$/)) {
|
||||
m = m + "/"
|
||||
} else if (!isDir && m.match(/\/$/)) {
|
||||
m = m.replace(/\/+$/, "")
|
||||
}
|
||||
}
|
||||
this.log("emit", ev, m)
|
||||
this.emit(ev, m)
|
||||
this._processingEmitQueue = false
|
||||
if (done && m !== this.EOF && !this.paused)
|
||||
this._processEmitQueue()
|
||||
}
|
||||
}
|
||||
done = true
|
||||
}
|
||||
|
||||
Glob.prototype._process = function (pattern, depth, index, cb_) {
|
||||
assert(this instanceof Glob)
|
||||
|
||||
var cb = function cb (er, res) {
|
||||
assert(this instanceof Glob)
|
||||
if (this.paused) {
|
||||
if (!this._processQueue) {
|
||||
this._processQueue = []
|
||||
this.once("resume", function () {
|
||||
var q = this._processQueue
|
||||
this._processQueue = null
|
||||
q.forEach(function (cb) { cb() })
|
||||
})
|
||||
}
|
||||
this._processQueue.push(cb_.bind(this, er, res))
|
||||
} else {
|
||||
cb_.call(this, er, res)
|
||||
}
|
||||
}.bind(this)
|
||||
|
||||
if (this.aborted) return cb()
|
||||
|
||||
if (depth > this.maxDepth) return cb()
|
||||
|
||||
// Get the first [n] parts of pattern that are all strings.
|
||||
var n = 0
|
||||
while (typeof pattern[n] === "string") {
|
||||
n ++
|
||||
}
|
||||
// now n is the index of the first one that is *not* a string.
|
||||
|
||||
// see if there's anything else
|
||||
var prefix
|
||||
switch (n) {
|
||||
// if not, then this is rather simple
|
||||
case pattern.length:
|
||||
prefix = pattern.join("/")
|
||||
this._stat(prefix, function (exists, isDir) {
|
||||
// either it's there, or it isn't.
|
||||
// nothing more to do, either way.
|
||||
if (exists) {
|
||||
if (prefix && isAbsolute(prefix) && !this.nomount) {
|
||||
if (prefix.charAt(0) === "/") {
|
||||
prefix = path.join(this.root, prefix)
|
||||
} else {
|
||||
prefix = path.resolve(this.root, prefix)
|
||||
}
|
||||
}
|
||||
|
||||
if (process.platform === "win32")
|
||||
prefix = prefix.replace(/\\/g, "/")
|
||||
|
||||
this.matches[index] = this.matches[index] || {}
|
||||
this.matches[index][prefix] = true
|
||||
this.emitMatch(prefix)
|
||||
}
|
||||
return cb()
|
||||
})
|
||||
return
|
||||
|
||||
case 0:
|
||||
// pattern *starts* with some non-trivial item.
|
||||
// going to readdir(cwd), but not include the prefix in matches.
|
||||
prefix = null
|
||||
break
|
||||
|
||||
default:
|
||||
// pattern has some string bits in the front.
|
||||
// whatever it starts with, whether that's "absolute" like /foo/bar,
|
||||
// or "relative" like "../baz"
|
||||
prefix = pattern.slice(0, n)
|
||||
prefix = prefix.join("/")
|
||||
break
|
||||
}
|
||||
|
||||
// get the list of entries.
|
||||
var read
|
||||
if (prefix === null) read = "."
|
||||
else if (isAbsolute(prefix) || isAbsolute(pattern.join("/"))) {
|
||||
if (!prefix || !isAbsolute(prefix)) {
|
||||
prefix = path.join("/", prefix)
|
||||
}
|
||||
read = prefix = path.resolve(prefix)
|
||||
|
||||
// if (process.platform === "win32")
|
||||
// read = prefix = prefix.replace(/^[a-zA-Z]:|\\/g, "/")
|
||||
|
||||
this.log('absolute: ', prefix, this.root, pattern, read)
|
||||
} else {
|
||||
read = prefix
|
||||
}
|
||||
|
||||
this.log('readdir(%j)', read, this.cwd, this.root)
|
||||
|
||||
return this._readdir(read, function (er, entries) {
|
||||
if (er) {
|
||||
// not a directory!
|
||||
// this means that, whatever else comes after this, it can never match
|
||||
return cb()
|
||||
}
|
||||
|
||||
// globstar is special
|
||||
if (pattern[n] === minimatch.GLOBSTAR) {
|
||||
// test without the globstar, and with every child both below
|
||||
// and replacing the globstar.
|
||||
var s = [ pattern.slice(0, n).concat(pattern.slice(n + 1)) ]
|
||||
entries.forEach(function (e) {
|
||||
if (e.charAt(0) === "." && !this.dot) return
|
||||
// instead of the globstar
|
||||
s.push(pattern.slice(0, n).concat(e).concat(pattern.slice(n + 1)))
|
||||
// below the globstar
|
||||
s.push(pattern.slice(0, n).concat(e).concat(pattern.slice(n)))
|
||||
}, this)
|
||||
|
||||
s = s.filter(function (pattern) {
|
||||
var key = gsKey(pattern)
|
||||
var seen = !this._globstars[key]
|
||||
this._globstars[key] = true
|
||||
return seen
|
||||
}, this)
|
||||
|
||||
if (!s.length)
|
||||
return cb()
|
||||
|
||||
// now asyncForEach over this
|
||||
var l = s.length
|
||||
, errState = null
|
||||
s.forEach(function (gsPattern) {
|
||||
this._process(gsPattern, depth + 1, index, function (er) {
|
||||
if (errState) return
|
||||
if (er) return cb(errState = er)
|
||||
if (--l <= 0) return cb()
|
||||
})
|
||||
}, this)
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// not a globstar
|
||||
// It will only match dot entries if it starts with a dot, or if
|
||||
// dot is set. Stuff like @(.foo|.bar) isn't allowed.
|
||||
var pn = pattern[n]
|
||||
var rawGlob = pattern[n]._glob
|
||||
, dotOk = this.dot || rawGlob.charAt(0) === "."
|
||||
|
||||
entries = entries.filter(function (e) {
|
||||
return (e.charAt(0) !== "." || dotOk) &&
|
||||
e.match(pattern[n])
|
||||
})
|
||||
|
||||
// If n === pattern.length - 1, then there's no need for the extra stat
|
||||
// *unless* the user has specified "mark" or "stat" explicitly.
|
||||
// We know that they exist, since the readdir returned them.
|
||||
if (n === pattern.length - 1 &&
|
||||
!this.mark &&
|
||||
!this.stat) {
|
||||
entries.forEach(function (e) {
|
||||
if (prefix) {
|
||||
if (prefix !== "/") e = prefix + "/" + e
|
||||
else e = prefix + e
|
||||
}
|
||||
if (e.charAt(0) === "/" && !this.nomount) {
|
||||
e = path.join(this.root, e)
|
||||
}
|
||||
|
||||
if (process.platform === "win32")
|
||||
e = e.replace(/\\/g, "/")
|
||||
|
||||
this.matches[index] = this.matches[index] || {}
|
||||
this.matches[index][e] = true
|
||||
this.emitMatch(e)
|
||||
}, this)
|
||||
return cb.call(this)
|
||||
}
|
||||
|
||||
|
||||
// now test all the remaining entries as stand-ins for that part
|
||||
// of the pattern.
|
||||
var l = entries.length
|
||||
, errState = null
|
||||
if (l === 0) return cb() // no matches possible
|
||||
entries.forEach(function (e) {
|
||||
var p = pattern.slice(0, n).concat(e).concat(pattern.slice(n + 1))
|
||||
this._process(p, depth + 1, index, function (er) {
|
||||
if (errState) return
|
||||
if (er) return cb(errState = er)
|
||||
if (--l === 0) return cb.call(this)
|
||||
})
|
||||
}, this)
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
function gsKey (pattern) {
|
||||
return '**' + pattern.map(function (p) {
|
||||
return (p === minimatch.GLOBSTAR) ? '**' : (''+p)
|
||||
}).join('/')
|
||||
}
|
||||
|
||||
Glob.prototype._stat = function (f, cb) {
|
||||
assert(this instanceof Glob)
|
||||
var abs = f
|
||||
if (f.charAt(0) === "/") {
|
||||
abs = path.join(this.root, f)
|
||||
} else if (this.changedCwd) {
|
||||
abs = path.resolve(this.cwd, f)
|
||||
}
|
||||
|
||||
if (f.length > this.maxLength) {
|
||||
var er = new Error("Path name too long")
|
||||
er.code = "ENAMETOOLONG"
|
||||
er.path = f
|
||||
return this._afterStat(f, abs, cb, er)
|
||||
}
|
||||
|
||||
this.log('stat', [this.cwd, f, '=', abs])
|
||||
|
||||
if (!this.stat && this.cache.hasOwnProperty(f)) {
|
||||
var exists = this.cache[f]
|
||||
, isDir = exists && (Array.isArray(exists) || exists === 2)
|
||||
if (this.sync) return cb.call(this, !!exists, isDir)
|
||||
return process.nextTick(cb.bind(this, !!exists, isDir))
|
||||
}
|
||||
|
||||
var stat = this.statCache[abs]
|
||||
if (this.sync || stat) {
|
||||
var er
|
||||
try {
|
||||
stat = fs.statSync(abs)
|
||||
} catch (e) {
|
||||
er = e
|
||||
}
|
||||
this._afterStat(f, abs, cb, er, stat)
|
||||
} else {
|
||||
fs.stat(abs, this._afterStat.bind(this, f, abs, cb))
|
||||
}
|
||||
}
|
||||
|
||||
Glob.prototype._afterStat = function (f, abs, cb, er, stat) {
|
||||
var exists
|
||||
assert(this instanceof Glob)
|
||||
|
||||
if (abs.slice(-1) === "/" && stat && !stat.isDirectory()) {
|
||||
this.log("should be ENOTDIR, fake it")
|
||||
|
||||
er = new Error("ENOTDIR, not a directory '" + abs + "'")
|
||||
er.path = abs
|
||||
er.code = "ENOTDIR"
|
||||
stat = null
|
||||
}
|
||||
|
||||
var emit = !this.statCache[abs]
|
||||
this.statCache[abs] = stat
|
||||
|
||||
if (er || !stat) {
|
||||
exists = false
|
||||
} else {
|
||||
exists = stat.isDirectory() ? 2 : 1
|
||||
if (emit)
|
||||
this.emit('stat', f, stat)
|
||||
}
|
||||
this.cache[f] = this.cache[f] || exists
|
||||
cb.call(this, !!exists, exists === 2)
|
||||
}
|
||||
|
||||
Glob.prototype._readdir = function (f, cb) {
|
||||
assert(this instanceof Glob)
|
||||
var abs = f
|
||||
if (f.charAt(0) === "/") {
|
||||
abs = path.join(this.root, f)
|
||||
} else if (isAbsolute(f)) {
|
||||
abs = f
|
||||
} else if (this.changedCwd) {
|
||||
abs = path.resolve(this.cwd, f)
|
||||
}
|
||||
|
||||
if (f.length > this.maxLength) {
|
||||
var er = new Error("Path name too long")
|
||||
er.code = "ENAMETOOLONG"
|
||||
er.path = f
|
||||
return this._afterReaddir(f, abs, cb, er)
|
||||
}
|
||||
|
||||
this.log('readdir', [this.cwd, f, abs])
|
||||
if (this.cache.hasOwnProperty(f)) {
|
||||
var c = this.cache[f]
|
||||
if (Array.isArray(c)) {
|
||||
if (this.sync) return cb.call(this, null, c)
|
||||
return process.nextTick(cb.bind(this, null, c))
|
||||
}
|
||||
|
||||
if (!c || c === 1) {
|
||||
// either ENOENT or ENOTDIR
|
||||
var code = c ? "ENOTDIR" : "ENOENT"
|
||||
, er = new Error((c ? "Not a directory" : "Not found") + ": " + f)
|
||||
er.path = f
|
||||
er.code = code
|
||||
this.log(f, er)
|
||||
if (this.sync) return cb.call(this, er)
|
||||
return process.nextTick(cb.bind(this, er))
|
||||
}
|
||||
|
||||
// at this point, c === 2, meaning it's a dir, but we haven't
|
||||
// had to read it yet, or c === true, meaning it's *something*
|
||||
// but we don't have any idea what. Need to read it, either way.
|
||||
}
|
||||
|
||||
if (this.sync) {
|
||||
var er, entries
|
||||
try {
|
||||
entries = fs.readdirSync(abs)
|
||||
} catch (e) {
|
||||
er = e
|
||||
}
|
||||
return this._afterReaddir(f, abs, cb, er, entries)
|
||||
}
|
||||
|
||||
fs.readdir(abs, this._afterReaddir.bind(this, f, abs, cb))
|
||||
}
|
||||
|
||||
Glob.prototype._afterReaddir = function (f, abs, cb, er, entries) {
|
||||
assert(this instanceof Glob)
|
||||
if (entries && !er) {
|
||||
this.cache[f] = entries
|
||||
// if we haven't asked to stat everything for suresies, then just
|
||||
// assume that everything in there exists, so we can avoid
|
||||
// having to stat it a second time. This also gets us one step
|
||||
// further into ELOOP territory.
|
||||
if (!this.mark && !this.stat) {
|
||||
entries.forEach(function (e) {
|
||||
if (f === "/") e = f + e
|
||||
else e = f + "/" + e
|
||||
this.cache[e] = true
|
||||
}, this)
|
||||
}
|
||||
|
||||
return cb.call(this, er, entries)
|
||||
}
|
||||
|
||||
// now handle errors, and cache the information
|
||||
if (er) switch (er.code) {
|
||||
case "ENOTDIR": // totally normal. means it *does* exist.
|
||||
this.cache[f] = 1
|
||||
return cb.call(this, er)
|
||||
case "ENOENT": // not terribly unusual
|
||||
case "ELOOP":
|
||||
case "ENAMETOOLONG":
|
||||
case "UNKNOWN":
|
||||
this.cache[f] = false
|
||||
return cb.call(this, er)
|
||||
default: // some unusual error. Treat as failure.
|
||||
this.cache[f] = false
|
||||
if (this.strict) this.emit("error", er)
|
||||
if (!this.silent) console.error("glob error", er)
|
||||
return cb.call(this, er)
|
||||
}
|
||||
}
|
||||
|
||||
var isAbsolute = process.platform === "win32" ? absWin : absUnix
|
||||
|
||||
function absWin (p) {
|
||||
if (absUnix(p)) return true
|
||||
// pull off the device/UNC bit from a windows path.
|
||||
// from node's lib/path.js
|
||||
var splitDeviceRe =
|
||||
/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/
|
||||
, result = splitDeviceRe.exec(p)
|
||||
, device = result[1] || ''
|
||||
, isUnc = device && device.charAt(1) !== ':'
|
||||
, isAbsolute = !!result[2] || isUnc // UNC paths are always absolute
|
||||
|
||||
return isAbsolute
|
||||
}
|
||||
|
||||
function absUnix (p) {
|
||||
return p.charAt(0) === "/" || p === ""
|
||||
}
|
@ -0,0 +1 @@
|
||||
node_modules
|
23
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/node_modules/minimatch/LICENSE
generated
vendored
Normal file
23
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/node_modules/minimatch/LICENSE
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
Copyright 2009, 2010, 2011 Isaac Z. Schlueter.
|
||||
All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
218
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/node_modules/minimatch/README.md
generated
vendored
Normal file
218
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/node_modules/minimatch/README.md
generated
vendored
Normal file
@ -0,0 +1,218 @@
|
||||
# minimatch
|
||||
|
||||
A minimal matching utility.
|
||||
|
||||
[](http://travis-ci.org/isaacs/minimatch)
|
||||
|
||||
|
||||
This is the matching library used internally by npm.
|
||||
|
||||
Eventually, it will replace the C binding in node-glob.
|
||||
|
||||
It works by converting glob expressions into JavaScript `RegExp`
|
||||
objects.
|
||||
|
||||
## Usage
|
||||
|
||||
```javascript
|
||||
var minimatch = require("minimatch")
|
||||
|
||||
minimatch("bar.foo", "*.foo") // true!
|
||||
minimatch("bar.foo", "*.bar") // false!
|
||||
minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy!
|
||||
```
|
||||
|
||||
## Features
|
||||
|
||||
Supports these glob features:
|
||||
|
||||
* Brace Expansion
|
||||
* Extended glob matching
|
||||
* "Globstar" `**` matching
|
||||
|
||||
See:
|
||||
|
||||
* `man sh`
|
||||
* `man bash`
|
||||
* `man 3 fnmatch`
|
||||
* `man 5 gitignore`
|
||||
|
||||
## Minimatch Class
|
||||
|
||||
Create a minimatch object by instanting the `minimatch.Minimatch` class.
|
||||
|
||||
```javascript
|
||||
var Minimatch = require("minimatch").Minimatch
|
||||
var mm = new Minimatch(pattern, options)
|
||||
```
|
||||
|
||||
### Properties
|
||||
|
||||
* `pattern` The original pattern the minimatch object represents.
|
||||
* `options` The options supplied to the constructor.
|
||||
* `set` A 2-dimensional array of regexp or string expressions.
|
||||
Each row in the
|
||||
array corresponds to a brace-expanded pattern. Each item in the row
|
||||
corresponds to a single path-part. For example, the pattern
|
||||
`{a,b/c}/d` would expand to a set of patterns like:
|
||||
|
||||
[ [ a, d ]
|
||||
, [ b, c, d ] ]
|
||||
|
||||
If a portion of the pattern doesn't have any "magic" in it
|
||||
(that is, it's something like `"foo"` rather than `fo*o?`), then it
|
||||
will be left as a string rather than converted to a regular
|
||||
expression.
|
||||
|
||||
* `regexp` Created by the `makeRe` method. A single regular expression
|
||||
expressing the entire pattern. This is useful in cases where you wish
|
||||
to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled.
|
||||
* `negate` True if the pattern is negated.
|
||||
* `comment` True if the pattern is a comment.
|
||||
* `empty` True if the pattern is `""`.
|
||||
|
||||
### Methods
|
||||
|
||||
* `makeRe` Generate the `regexp` member if necessary, and return it.
|
||||
Will return `false` if the pattern is invalid.
|
||||
* `match(fname)` Return true if the filename matches the pattern, or
|
||||
false otherwise.
|
||||
* `matchOne(fileArray, patternArray, partial)` Take a `/`-split
|
||||
filename, and match it against a single row in the `regExpSet`. This
|
||||
method is mainly for internal use, but is exposed so that it can be
|
||||
used by a glob-walker that needs to avoid excessive filesystem calls.
|
||||
|
||||
All other methods are internal, and will be called as necessary.
|
||||
|
||||
## Functions
|
||||
|
||||
The top-level exported function has a `cache` property, which is an LRU
|
||||
cache set to store 100 items. So, calling these methods repeatedly
|
||||
with the same pattern and options will use the same Minimatch object,
|
||||
saving the cost of parsing it multiple times.
|
||||
|
||||
### minimatch(path, pattern, options)
|
||||
|
||||
Main export. Tests a path against the pattern using the options.
|
||||
|
||||
```javascript
|
||||
var isJS = minimatch(file, "*.js", { matchBase: true })
|
||||
```
|
||||
|
||||
### minimatch.filter(pattern, options)
|
||||
|
||||
Returns a function that tests its
|
||||
supplied argument, suitable for use with `Array.filter`. Example:
|
||||
|
||||
```javascript
|
||||
var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true}))
|
||||
```
|
||||
|
||||
### minimatch.match(list, pattern, options)
|
||||
|
||||
Match against the list of
|
||||
files, in the style of fnmatch or glob. If nothing is matched, and
|
||||
options.nonull is set, then return a list containing the pattern itself.
|
||||
|
||||
```javascript
|
||||
var javascripts = minimatch.match(fileList, "*.js", {matchBase: true}))
|
||||
```
|
||||
|
||||
### minimatch.makeRe(pattern, options)
|
||||
|
||||
Make a regular expression object from the pattern.
|
||||
|
||||
## Options
|
||||
|
||||
All options are `false` by default.
|
||||
|
||||
### debug
|
||||
|
||||
Dump a ton of stuff to stderr.
|
||||
|
||||
### nobrace
|
||||
|
||||
Do not expand `{a,b}` and `{1..3}` brace sets.
|
||||
|
||||
### noglobstar
|
||||
|
||||
Disable `**` matching against multiple folder names.
|
||||
|
||||
### dot
|
||||
|
||||
Allow patterns to match filenames starting with a period, even if
|
||||
the pattern does not explicitly have a period in that spot.
|
||||
|
||||
Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot`
|
||||
is set.
|
||||
|
||||
### noext
|
||||
|
||||
Disable "extglob" style patterns like `+(a|b)`.
|
||||
|
||||
### nocase
|
||||
|
||||
Perform a case-insensitive match.
|
||||
|
||||
### nonull
|
||||
|
||||
When a match is not found by `minimatch.match`, return a list containing
|
||||
the pattern itself if this option is set. When not set, an empty list
|
||||
is returned if there are no matches.
|
||||
|
||||
### matchBase
|
||||
|
||||
If set, then patterns without slashes will be matched
|
||||
against the basename of the path if it contains slashes. For example,
|
||||
`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.
|
||||
|
||||
### nocomment
|
||||
|
||||
Suppress the behavior of treating `#` at the start of a pattern as a
|
||||
comment.
|
||||
|
||||
### nonegate
|
||||
|
||||
Suppress the behavior of treating a leading `!` character as negation.
|
||||
|
||||
### flipNegate
|
||||
|
||||
Returns from negate expressions the same as if they were not negated.
|
||||
(Ie, true on a hit, false on a miss.)
|
||||
|
||||
|
||||
## Comparisons to other fnmatch/glob implementations
|
||||
|
||||
While strict compliance with the existing standards is a worthwhile
|
||||
goal, some discrepancies exist between minimatch and other
|
||||
implementations, and are intentional.
|
||||
|
||||
If the pattern starts with a `!` character, then it is negated. Set the
|
||||
`nonegate` flag to suppress this behavior, and treat leading `!`
|
||||
characters normally. This is perhaps relevant if you wish to start the
|
||||
pattern with a negative extglob pattern like `!(a|B)`. Multiple `!`
|
||||
characters at the start of a pattern will negate the pattern multiple
|
||||
times.
|
||||
|
||||
If a pattern starts with `#`, then it is treated as a comment, and
|
||||
will not match anything. Use `\#` to match a literal `#` at the
|
||||
start of a line, or set the `nocomment` flag to suppress this behavior.
|
||||
|
||||
The double-star character `**` is supported by default, unless the
|
||||
`noglobstar` flag is set. This is supported in the manner of bsdglob
|
||||
and bash 4.1, where `**` only has special significance if it is the only
|
||||
thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but
|
||||
`a/**b` will not.
|
||||
|
||||
If an escaped pattern has no matches, and the `nonull` flag is set,
|
||||
then minimatch.match returns the pattern as-provided, rather than
|
||||
interpreting the character escapes. For example,
|
||||
`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than
|
||||
`"*a?"`. This is akin to setting the `nullglob` option in bash, except
|
||||
that it does not resolve escaped pattern characters.
|
||||
|
||||
If brace expansion is not disabled, then it is performed before any
|
||||
other interpretation of the glob pattern. Thus, a pattern like
|
||||
`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded
|
||||
**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are
|
||||
checked for validity. Since those two are valid, matching proceeds.
|
1061
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/node_modules/minimatch/minimatch.js
generated
vendored
Normal file
1061
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/node_modules/minimatch/minimatch.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1 @@
|
||||
/node_modules
|
@ -0,0 +1,8 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- '0.8'
|
||||
- '0.10'
|
||||
- '0.12'
|
||||
- 'iojs'
|
||||
before_install:
|
||||
- npm install -g npm@latest
|
@ -0,0 +1,14 @@
|
||||
# Authors, sorted by whether or not they are me
|
||||
Isaac Z. Schlueter <i@izs.me>
|
||||
Brian Cottingham <spiffytech@gmail.com>
|
||||
Carlos Brito Lage <carlos@carloslage.net>
|
||||
Jesse Dailey <jesse.dailey@gmail.com>
|
||||
Kevin O'Hara <kevinohara80@gmail.com>
|
||||
Marco Rogers <marco.rogers@gmail.com>
|
||||
Mark Cavage <mcavage@gmail.com>
|
||||
Marko Mikulicic <marko.mikulicic@isti.cnr.it>
|
||||
Nathan Rajlich <nathan@tootallnate.net>
|
||||
Satheesh Natesan <snateshan@myspace-inc.com>
|
||||
Trent Mick <trentm@gmail.com>
|
||||
ashleybrener <ashley@starlogik.com>
|
||||
n4kz <n4kz@n4kz.com>
|
@ -0,0 +1,15 @@
|
||||
The ISC License
|
||||
|
||||
Copyright (c) Isaac Z. Schlueter and Contributors
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
||||
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
@ -0,0 +1,119 @@
|
||||
# lru cache
|
||||
|
||||
A cache object that deletes the least-recently-used items.
|
||||
|
||||
## Usage:
|
||||
|
||||
```javascript
|
||||
var LRU = require("lru-cache")
|
||||
, options = { max: 500
|
||||
, length: function (n) { return n * 2 }
|
||||
, dispose: function (key, n) { n.close() }
|
||||
, maxAge: 1000 * 60 * 60 }
|
||||
, cache = LRU(options)
|
||||
, otherCache = LRU(50) // sets just the max size
|
||||
|
||||
cache.set("key", "value")
|
||||
cache.get("key") // "value"
|
||||
|
||||
cache.reset() // empty the cache
|
||||
```
|
||||
|
||||
If you put more stuff in it, then items will fall out.
|
||||
|
||||
If you try to put an oversized thing in it, then it'll fall out right
|
||||
away.
|
||||
|
||||
## Options
|
||||
|
||||
* `max` The maximum size of the cache, checked by applying the length
|
||||
function to all values in the cache. Not setting this is kind of
|
||||
silly, since that's the whole purpose of this lib, but it defaults
|
||||
to `Infinity`.
|
||||
* `maxAge` Maximum age in ms. Items are not pro-actively pruned out
|
||||
as they age, but if you try to get an item that is too old, it'll
|
||||
drop it and return undefined instead of giving it to you.
|
||||
* `length` Function that is used to calculate the length of stored
|
||||
items. If you're storing strings or buffers, then you probably want
|
||||
to do something like `function(n){return n.length}`. The default is
|
||||
`function(n){return 1}`, which is fine if you want to store `max`
|
||||
like-sized things.
|
||||
* `dispose` Function that is called on items when they are dropped
|
||||
from the cache. This can be handy if you want to close file
|
||||
descriptors or do other cleanup tasks when items are no longer
|
||||
accessible. Called with `key, value`. It's called *before*
|
||||
actually removing the item from the internal cache, so if you want
|
||||
to immediately put it back in, you'll have to do that in a
|
||||
`nextTick` or `setTimeout` callback or it won't do anything.
|
||||
* `stale` By default, if you set a `maxAge`, it'll only actually pull
|
||||
stale items out of the cache when you `get(key)`. (That is, it's
|
||||
not pre-emptively doing a `setTimeout` or anything.) If you set
|
||||
`stale:true`, it'll return the stale value before deleting it. If
|
||||
you don't set this, then it'll return `undefined` when you try to
|
||||
get a stale entry, as if it had already been deleted.
|
||||
|
||||
## API
|
||||
|
||||
* `set(key, value, maxAge)`
|
||||
* `get(key) => value`
|
||||
|
||||
Both of these will update the "recently used"-ness of the key.
|
||||
They do what you think. `max` is optional and overrides the
|
||||
cache `max` option if provided.
|
||||
|
||||
* `peek(key)`
|
||||
|
||||
Returns the key value (or `undefined` if not found) without
|
||||
updating the "recently used"-ness of the key.
|
||||
|
||||
(If you find yourself using this a lot, you *might* be using the
|
||||
wrong sort of data structure, but there are some use cases where
|
||||
it's handy.)
|
||||
|
||||
* `del(key)`
|
||||
|
||||
Deletes a key out of the cache.
|
||||
|
||||
* `reset()`
|
||||
|
||||
Clear the cache entirely, throwing away all values.
|
||||
|
||||
* `has(key)`
|
||||
|
||||
Check if a key is in the cache, without updating the recent-ness
|
||||
or deleting it for being stale.
|
||||
|
||||
* `forEach(function(value,key,cache), [thisp])`
|
||||
|
||||
Just like `Array.prototype.forEach`. Iterates over all the keys
|
||||
in the cache, in order of recent-ness. (Ie, more recently used
|
||||
items are iterated over first.)
|
||||
|
||||
* `keys()`
|
||||
|
||||
Return an array of the keys in the cache.
|
||||
|
||||
* `values()`
|
||||
|
||||
Return an array of the values in the cache.
|
||||
|
||||
* `length()`
|
||||
|
||||
Return total length of objects in cache taking into account
|
||||
`length` options function.
|
||||
|
||||
* `itemCount`
|
||||
|
||||
Return total quantity of objects currently in cache. Note, that
|
||||
`stale` (see options) items are returned as part of this item
|
||||
count.
|
||||
|
||||
* `dump()`
|
||||
|
||||
Return an array of the cache entries ready for serialization and usage
|
||||
with 'destinationCache.load(arr)`.
|
||||
|
||||
* `load(cacheEntriesArray)`
|
||||
|
||||
Loads another cache entries array, obtained with `sourceCache.dump()`,
|
||||
into the cache. The destination cache is reset before loading new entries
|
@ -0,0 +1,318 @@
|
||||
;(function () { // closure for web browsers
|
||||
|
||||
if (typeof module === 'object' && module.exports) {
|
||||
module.exports = LRUCache
|
||||
} else {
|
||||
// just set the global for non-node platforms.
|
||||
this.LRUCache = LRUCache
|
||||
}
|
||||
|
||||
function hOP (obj, key) {
|
||||
return Object.prototype.hasOwnProperty.call(obj, key)
|
||||
}
|
||||
|
||||
function naiveLength () { return 1 }
|
||||
|
||||
function LRUCache (options) {
|
||||
if (!(this instanceof LRUCache))
|
||||
return new LRUCache(options)
|
||||
|
||||
if (typeof options === 'number')
|
||||
options = { max: options }
|
||||
|
||||
if (!options)
|
||||
options = {}
|
||||
|
||||
this._max = options.max
|
||||
// Kind of weird to have a default max of Infinity, but oh well.
|
||||
if (!this._max || !(typeof this._max === "number") || this._max <= 0 )
|
||||
this._max = Infinity
|
||||
|
||||
this._lengthCalculator = options.length || naiveLength
|
||||
if (typeof this._lengthCalculator !== "function")
|
||||
this._lengthCalculator = naiveLength
|
||||
|
||||
this._allowStale = options.stale || false
|
||||
this._maxAge = options.maxAge || null
|
||||
this._dispose = options.dispose
|
||||
this.reset()
|
||||
}
|
||||
|
||||
// resize the cache when the max changes.
|
||||
Object.defineProperty(LRUCache.prototype, "max",
|
||||
{ set : function (mL) {
|
||||
if (!mL || !(typeof mL === "number") || mL <= 0 ) mL = Infinity
|
||||
this._max = mL
|
||||
if (this._length > this._max) trim(this)
|
||||
}
|
||||
, get : function () { return this._max }
|
||||
, enumerable : true
|
||||
})
|
||||
|
||||
// resize the cache when the lengthCalculator changes.
|
||||
Object.defineProperty(LRUCache.prototype, "lengthCalculator",
|
||||
{ set : function (lC) {
|
||||
if (typeof lC !== "function") {
|
||||
this._lengthCalculator = naiveLength
|
||||
this._length = this._itemCount
|
||||
for (var key in this._cache) {
|
||||
this._cache[key].length = 1
|
||||
}
|
||||
} else {
|
||||
this._lengthCalculator = lC
|
||||
this._length = 0
|
||||
for (var key in this._cache) {
|
||||
this._cache[key].length = this._lengthCalculator(this._cache[key].value)
|
||||
this._length += this._cache[key].length
|
||||
}
|
||||
}
|
||||
|
||||
if (this._length > this._max) trim(this)
|
||||
}
|
||||
, get : function () { return this._lengthCalculator }
|
||||
, enumerable : true
|
||||
})
|
||||
|
||||
Object.defineProperty(LRUCache.prototype, "length",
|
||||
{ get : function () { return this._length }
|
||||
, enumerable : true
|
||||
})
|
||||
|
||||
|
||||
Object.defineProperty(LRUCache.prototype, "itemCount",
|
||||
{ get : function () { return this._itemCount }
|
||||
, enumerable : true
|
||||
})
|
||||
|
||||
LRUCache.prototype.forEach = function (fn, thisp) {
|
||||
thisp = thisp || this
|
||||
var i = 0
|
||||
var itemCount = this._itemCount
|
||||
|
||||
for (var k = this._mru - 1; k >= 0 && i < itemCount; k--) if (this._lruList[k]) {
|
||||
i++
|
||||
var hit = this._lruList[k]
|
||||
if (isStale(this, hit)) {
|
||||
del(this, hit)
|
||||
if (!this._allowStale) hit = undefined
|
||||
}
|
||||
if (hit) {
|
||||
fn.call(thisp, hit.value, hit.key, this)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LRUCache.prototype.keys = function () {
|
||||
var keys = new Array(this._itemCount)
|
||||
var i = 0
|
||||
for (var k = this._mru - 1; k >= 0 && i < this._itemCount; k--) if (this._lruList[k]) {
|
||||
var hit = this._lruList[k]
|
||||
keys[i++] = hit.key
|
||||
}
|
||||
return keys
|
||||
}
|
||||
|
||||
LRUCache.prototype.values = function () {
|
||||
var values = new Array(this._itemCount)
|
||||
var i = 0
|
||||
for (var k = this._mru - 1; k >= 0 && i < this._itemCount; k--) if (this._lruList[k]) {
|
||||
var hit = this._lruList[k]
|
||||
values[i++] = hit.value
|
||||
}
|
||||
return values
|
||||
}
|
||||
|
||||
LRUCache.prototype.reset = function () {
|
||||
if (this._dispose && this._cache) {
|
||||
for (var k in this._cache) {
|
||||
this._dispose(k, this._cache[k].value)
|
||||
}
|
||||
}
|
||||
|
||||
this._cache = Object.create(null) // hash of items by key
|
||||
this._lruList = Object.create(null) // list of items in order of use recency
|
||||
this._mru = 0 // most recently used
|
||||
this._lru = 0 // least recently used
|
||||
this._length = 0 // number of items in the list
|
||||
this._itemCount = 0
|
||||
}
|
||||
|
||||
LRUCache.prototype.dump = function () {
|
||||
var arr = []
|
||||
var i = 0
|
||||
|
||||
for (var k = this._mru - 1; k >= 0 && i < this._itemCount; k--) if (this._lruList[k]) {
|
||||
var hit = this._lruList[k]
|
||||
if (!isStale(this, hit)) {
|
||||
//Do not store staled hits
|
||||
++i
|
||||
arr.push({
|
||||
k: hit.key,
|
||||
v: hit.value,
|
||||
e: hit.now + (hit.maxAge || 0)
|
||||
});
|
||||
}
|
||||
}
|
||||
//arr has the most read first
|
||||
return arr
|
||||
}
|
||||
|
||||
LRUCache.prototype.dumpLru = function () {
|
||||
return this._lruList
|
||||
}
|
||||
|
||||
LRUCache.prototype.set = function (key, value, maxAge) {
|
||||
maxAge = maxAge || this._maxAge
|
||||
var now = maxAge ? Date.now() : 0
|
||||
var len = this._lengthCalculator(value)
|
||||
|
||||
if (hOP(this._cache, key)) {
|
||||
if (len > this._max) {
|
||||
del(this, this._cache[key])
|
||||
return false
|
||||
}
|
||||
// dispose of the old one before overwriting
|
||||
if (this._dispose)
|
||||
this._dispose(key, this._cache[key].value)
|
||||
|
||||
this._cache[key].now = now
|
||||
this._cache[key].maxAge = maxAge
|
||||
this._cache[key].value = value
|
||||
this._length += (len - this._cache[key].length)
|
||||
this._cache[key].length = len
|
||||
this.get(key)
|
||||
|
||||
if (this._length > this._max)
|
||||
trim(this)
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
var hit = new Entry(key, value, this._mru++, len, now, maxAge)
|
||||
|
||||
// oversized objects fall out of cache automatically.
|
||||
if (hit.length > this._max) {
|
||||
if (this._dispose) this._dispose(key, value)
|
||||
return false
|
||||
}
|
||||
|
||||
this._length += hit.length
|
||||
this._lruList[hit.lu] = this._cache[key] = hit
|
||||
this._itemCount ++
|
||||
|
||||
if (this._length > this._max)
|
||||
trim(this)
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
LRUCache.prototype.has = function (key) {
|
||||
if (!hOP(this._cache, key)) return false
|
||||
var hit = this._cache[key]
|
||||
if (isStale(this, hit)) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
LRUCache.prototype.get = function (key) {
|
||||
return get(this, key, true)
|
||||
}
|
||||
|
||||
LRUCache.prototype.peek = function (key) {
|
||||
return get(this, key, false)
|
||||
}
|
||||
|
||||
LRUCache.prototype.pop = function () {
|
||||
var hit = this._lruList[this._lru]
|
||||
del(this, hit)
|
||||
return hit || null
|
||||
}
|
||||
|
||||
LRUCache.prototype.del = function (key) {
|
||||
del(this, this._cache[key])
|
||||
}
|
||||
|
||||
LRUCache.prototype.load = function (arr) {
|
||||
//reset the cache
|
||||
this.reset();
|
||||
|
||||
var now = Date.now()
|
||||
//A previous serialized cache has the most recent items first
|
||||
for (var l = arr.length - 1; l >= 0; l-- ) {
|
||||
var hit = arr[l]
|
||||
var expiresAt = hit.e || 0
|
||||
if (expiresAt === 0) {
|
||||
//the item was created without expiration in a non aged cache
|
||||
this.set(hit.k, hit.v)
|
||||
} else {
|
||||
var maxAge = expiresAt - now
|
||||
//dont add already expired items
|
||||
if (maxAge > 0) this.set(hit.k, hit.v, maxAge)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function get (self, key, doUse) {
|
||||
var hit = self._cache[key]
|
||||
if (hit) {
|
||||
if (isStale(self, hit)) {
|
||||
del(self, hit)
|
||||
if (!self._allowStale) hit = undefined
|
||||
} else {
|
||||
if (doUse) use(self, hit)
|
||||
}
|
||||
if (hit) hit = hit.value
|
||||
}
|
||||
return hit
|
||||
}
|
||||
|
||||
function isStale(self, hit) {
|
||||
if (!hit || (!hit.maxAge && !self._maxAge)) return false
|
||||
var stale = false;
|
||||
var diff = Date.now() - hit.now
|
||||
if (hit.maxAge) {
|
||||
stale = diff > hit.maxAge
|
||||
} else {
|
||||
stale = self._maxAge && (diff > self._maxAge)
|
||||
}
|
||||
return stale;
|
||||
}
|
||||
|
||||
function use (self, hit) {
|
||||
shiftLU(self, hit)
|
||||
hit.lu = self._mru ++
|
||||
self._lruList[hit.lu] = hit
|
||||
}
|
||||
|
||||
function trim (self) {
|
||||
while (self._lru < self._mru && self._length > self._max)
|
||||
del(self, self._lruList[self._lru])
|
||||
}
|
||||
|
||||
function shiftLU (self, hit) {
|
||||
delete self._lruList[ hit.lu ]
|
||||
while (self._lru < self._mru && !self._lruList[self._lru]) self._lru ++
|
||||
}
|
||||
|
||||
function del (self, hit) {
|
||||
if (hit) {
|
||||
if (self._dispose) self._dispose(hit.key, hit.value)
|
||||
self._length -= hit.length
|
||||
self._itemCount --
|
||||
delete self._cache[ hit.key ]
|
||||
shiftLU(self, hit)
|
||||
}
|
||||
}
|
||||
|
||||
// classy, since V8 prefers predictable objects.
|
||||
function Entry (key, value, lu, length, now, maxAge) {
|
||||
this.key = key
|
||||
this.value = value
|
||||
this.lu = lu
|
||||
this.length = length
|
||||
this.now = now
|
||||
if (maxAge) this.maxAge = maxAge
|
||||
}
|
||||
|
||||
})()
|
@ -0,0 +1,58 @@
|
||||
{
|
||||
"name": "lru-cache",
|
||||
"description": "A cache object that deletes the least-recently-used items.",
|
||||
"version": "2.7.0",
|
||||
"author": {
|
||||
"name": "Isaac Z. Schlueter",
|
||||
"email": "i@izs.me"
|
||||
},
|
||||
"keywords": [
|
||||
"mru",
|
||||
"lru",
|
||||
"cache"
|
||||
],
|
||||
"scripts": {
|
||||
"test": "tap test --gc"
|
||||
},
|
||||
"main": "lib/lru-cache.js",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/isaacs/node-lru-cache.git"
|
||||
},
|
||||
"devDependencies": {
|
||||
"tap": "^1.2.0",
|
||||
"weak": ""
|
||||
},
|
||||
"license": "ISC",
|
||||
"gitHead": "fc6ee93093f4e463e5946736d4c48adc013724d1",
|
||||
"bugs": {
|
||||
"url": "https://github.com/isaacs/node-lru-cache/issues"
|
||||
},
|
||||
"homepage": "https://github.com/isaacs/node-lru-cache#readme",
|
||||
"_id": "lru-cache@2.7.0",
|
||||
"_shasum": "aaa376a4cd970f9cebf5ec1909566ec034f07ee6",
|
||||
"_from": "lru-cache@>=2.0.0 <3.0.0",
|
||||
"_npmVersion": "3.3.2",
|
||||
"_nodeVersion": "4.0.0",
|
||||
"_npmUser": {
|
||||
"name": "isaacs",
|
||||
"email": "isaacs@npmjs.com"
|
||||
},
|
||||
"dist": {
|
||||
"shasum": "aaa376a4cd970f9cebf5ec1909566ec034f07ee6",
|
||||
"tarball": "http://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "isaacs",
|
||||
"email": "isaacs@npmjs.com"
|
||||
},
|
||||
{
|
||||
"name": "othiym23",
|
||||
"email": "ogd@aoaioxxysz.net"
|
||||
}
|
||||
],
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz",
|
||||
"readme": "ERROR: No README data found!"
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
The ISC License
|
||||
|
||||
Copyright (c) Isaac Z. Schlueter and Contributors
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
||||
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
@ -0,0 +1,53 @@
|
||||
# sigmund
|
||||
|
||||
Quick and dirty signatures for Objects.
|
||||
|
||||
This is like a much faster `deepEquals` comparison, which returns a
|
||||
string key suitable for caches and the like.
|
||||
|
||||
## Usage
|
||||
|
||||
```javascript
|
||||
function doSomething (someObj) {
|
||||
var key = sigmund(someObj, maxDepth) // max depth defaults to 10
|
||||
var cached = cache.get(key)
|
||||
if (cached) return cached
|
||||
|
||||
var result = expensiveCalculation(someObj)
|
||||
cache.set(key, result)
|
||||
return result
|
||||
}
|
||||
```
|
||||
|
||||
The resulting key will be as unique and reproducible as calling
|
||||
`JSON.stringify` or `util.inspect` on the object, but is much faster.
|
||||
In order to achieve this speed, some differences are glossed over.
|
||||
For example, the object `{0:'foo'}` will be treated identically to the
|
||||
array `['foo']`.
|
||||
|
||||
Also, just as there is no way to summon the soul from the scribblings
|
||||
of a cocaine-addled psychoanalyst, there is no way to revive the object
|
||||
from the signature string that sigmund gives you. In fact, it's
|
||||
barely even readable.
|
||||
|
||||
As with `util.inspect` and `JSON.stringify`, larger objects will
|
||||
produce larger signature strings.
|
||||
|
||||
Because sigmund is a bit less strict than the more thorough
|
||||
alternatives, the strings will be shorter, and also there is a
|
||||
slightly higher chance for collisions. For example, these objects
|
||||
have the same signature:
|
||||
|
||||
var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]}
|
||||
var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']}
|
||||
|
||||
Like a good Freudian, sigmund is most effective when you already have
|
||||
some understanding of what you're looking for. It can help you help
|
||||
yourself, but you must be willing to do some work as well.
|
||||
|
||||
Cycles are handled, and cyclical objects are silently omitted (though
|
||||
the key is included in the signature output.)
|
||||
|
||||
The second argument is the maximum depth, which defaults to 10,
|
||||
because that is the maximum object traversal depth covered by most
|
||||
insurance carriers.
|
@ -0,0 +1,283 @@
|
||||
// different ways to id objects
|
||||
// use a req/res pair, since it's crazy deep and cyclical
|
||||
|
||||
// sparseFE10 and sigmund are usually pretty close, which is to be expected,
|
||||
// since they are essentially the same algorithm, except that sigmund handles
|
||||
// regular expression objects properly.
|
||||
|
||||
|
||||
var http = require('http')
|
||||
var util = require('util')
|
||||
var sigmund = require('./sigmund.js')
|
||||
var sreq, sres, creq, cres, test
|
||||
|
||||
http.createServer(function (q, s) {
|
||||
sreq = q
|
||||
sres = s
|
||||
sres.end('ok')
|
||||
this.close(function () { setTimeout(function () {
|
||||
start()
|
||||
}, 200) })
|
||||
}).listen(1337, function () {
|
||||
creq = http.get({ port: 1337 })
|
||||
creq.on('response', function (s) { cres = s })
|
||||
})
|
||||
|
||||
function start () {
|
||||
test = [sreq, sres, creq, cres]
|
||||
// test = sreq
|
||||
// sreq.sres = sres
|
||||
// sreq.creq = creq
|
||||
// sreq.cres = cres
|
||||
|
||||
for (var i in exports.compare) {
|
||||
console.log(i)
|
||||
var hash = exports.compare[i]()
|
||||
console.log(hash)
|
||||
console.log(hash.length)
|
||||
console.log('')
|
||||
}
|
||||
|
||||
require('bench').runMain()
|
||||
}
|
||||
|
||||
function customWs (obj, md, d) {
|
||||
d = d || 0
|
||||
var to = typeof obj
|
||||
if (to === 'undefined' || to === 'function' || to === null) return ''
|
||||
if (d > md || !obj || to !== 'object') return ('' + obj).replace(/[\n ]+/g, '')
|
||||
|
||||
if (Array.isArray(obj)) {
|
||||
return obj.map(function (i, _, __) {
|
||||
return customWs(i, md, d + 1)
|
||||
}).reduce(function (a, b) { return a + b }, '')
|
||||
}
|
||||
|
||||
var keys = Object.keys(obj)
|
||||
return keys.map(function (k, _, __) {
|
||||
return k + ':' + customWs(obj[k], md, d + 1)
|
||||
}).reduce(function (a, b) { return a + b }, '')
|
||||
}
|
||||
|
||||
function custom (obj, md, d) {
|
||||
d = d || 0
|
||||
var to = typeof obj
|
||||
if (to === 'undefined' || to === 'function' || to === null) return ''
|
||||
if (d > md || !obj || to !== 'object') return '' + obj
|
||||
|
||||
if (Array.isArray(obj)) {
|
||||
return obj.map(function (i, _, __) {
|
||||
return custom(i, md, d + 1)
|
||||
}).reduce(function (a, b) { return a + b }, '')
|
||||
}
|
||||
|
||||
var keys = Object.keys(obj)
|
||||
return keys.map(function (k, _, __) {
|
||||
return k + ':' + custom(obj[k], md, d + 1)
|
||||
}).reduce(function (a, b) { return a + b }, '')
|
||||
}
|
||||
|
||||
function sparseFE2 (obj, maxDepth) {
|
||||
var seen = []
|
||||
var soFar = ''
|
||||
function ch (v, depth) {
|
||||
if (depth > maxDepth) return
|
||||
if (typeof v === 'function' || typeof v === 'undefined') return
|
||||
if (typeof v !== 'object' || !v) {
|
||||
soFar += v
|
||||
return
|
||||
}
|
||||
if (seen.indexOf(v) !== -1 || depth === maxDepth) return
|
||||
seen.push(v)
|
||||
soFar += '{'
|
||||
Object.keys(v).forEach(function (k, _, __) {
|
||||
// pseudo-private values. skip those.
|
||||
if (k.charAt(0) === '_') return
|
||||
var to = typeof v[k]
|
||||
if (to === 'function' || to === 'undefined') return
|
||||
soFar += k + ':'
|
||||
ch(v[k], depth + 1)
|
||||
})
|
||||
soFar += '}'
|
||||
}
|
||||
ch(obj, 0)
|
||||
return soFar
|
||||
}
|
||||
|
||||
function sparseFE (obj, maxDepth) {
|
||||
var seen = []
|
||||
var soFar = ''
|
||||
function ch (v, depth) {
|
||||
if (depth > maxDepth) return
|
||||
if (typeof v === 'function' || typeof v === 'undefined') return
|
||||
if (typeof v !== 'object' || !v) {
|
||||
soFar += v
|
||||
return
|
||||
}
|
||||
if (seen.indexOf(v) !== -1 || depth === maxDepth) return
|
||||
seen.push(v)
|
||||
soFar += '{'
|
||||
Object.keys(v).forEach(function (k, _, __) {
|
||||
// pseudo-private values. skip those.
|
||||
if (k.charAt(0) === '_') return
|
||||
var to = typeof v[k]
|
||||
if (to === 'function' || to === 'undefined') return
|
||||
soFar += k
|
||||
ch(v[k], depth + 1)
|
||||
})
|
||||
}
|
||||
ch(obj, 0)
|
||||
return soFar
|
||||
}
|
||||
|
||||
function sparse (obj, maxDepth) {
|
||||
var seen = []
|
||||
var soFar = ''
|
||||
function ch (v, depth) {
|
||||
if (depth > maxDepth) return
|
||||
if (typeof v === 'function' || typeof v === 'undefined') return
|
||||
if (typeof v !== 'object' || !v) {
|
||||
soFar += v
|
||||
return
|
||||
}
|
||||
if (seen.indexOf(v) !== -1 || depth === maxDepth) return
|
||||
seen.push(v)
|
||||
soFar += '{'
|
||||
for (var k in v) {
|
||||
// pseudo-private values. skip those.
|
||||
if (k.charAt(0) === '_') continue
|
||||
var to = typeof v[k]
|
||||
if (to === 'function' || to === 'undefined') continue
|
||||
soFar += k
|
||||
ch(v[k], depth + 1)
|
||||
}
|
||||
}
|
||||
ch(obj, 0)
|
||||
return soFar
|
||||
}
|
||||
|
||||
function noCommas (obj, maxDepth) {
|
||||
var seen = []
|
||||
var soFar = ''
|
||||
function ch (v, depth) {
|
||||
if (depth > maxDepth) return
|
||||
if (typeof v === 'function' || typeof v === 'undefined') return
|
||||
if (typeof v !== 'object' || !v) {
|
||||
soFar += v
|
||||
return
|
||||
}
|
||||
if (seen.indexOf(v) !== -1 || depth === maxDepth) return
|
||||
seen.push(v)
|
||||
soFar += '{'
|
||||
for (var k in v) {
|
||||
// pseudo-private values. skip those.
|
||||
if (k.charAt(0) === '_') continue
|
||||
var to = typeof v[k]
|
||||
if (to === 'function' || to === 'undefined') continue
|
||||
soFar += k + ':'
|
||||
ch(v[k], depth + 1)
|
||||
}
|
||||
soFar += '}'
|
||||
}
|
||||
ch(obj, 0)
|
||||
return soFar
|
||||
}
|
||||
|
||||
|
||||
function flatten (obj, maxDepth) {
|
||||
var seen = []
|
||||
var soFar = ''
|
||||
function ch (v, depth) {
|
||||
if (depth > maxDepth) return
|
||||
if (typeof v === 'function' || typeof v === 'undefined') return
|
||||
if (typeof v !== 'object' || !v) {
|
||||
soFar += v
|
||||
return
|
||||
}
|
||||
if (seen.indexOf(v) !== -1 || depth === maxDepth) return
|
||||
seen.push(v)
|
||||
soFar += '{'
|
||||
for (var k in v) {
|
||||
// pseudo-private values. skip those.
|
||||
if (k.charAt(0) === '_') continue
|
||||
var to = typeof v[k]
|
||||
if (to === 'function' || to === 'undefined') continue
|
||||
soFar += k + ':'
|
||||
ch(v[k], depth + 1)
|
||||
soFar += ','
|
||||
}
|
||||
soFar += '}'
|
||||
}
|
||||
ch(obj, 0)
|
||||
return soFar
|
||||
}
|
||||
|
||||
exports.compare =
|
||||
{
|
||||
// 'custom 2': function () {
|
||||
// return custom(test, 2, 0)
|
||||
// },
|
||||
// 'customWs 2': function () {
|
||||
// return customWs(test, 2, 0)
|
||||
// },
|
||||
'JSON.stringify (guarded)': function () {
|
||||
var seen = []
|
||||
return JSON.stringify(test, function (k, v) {
|
||||
if (typeof v !== 'object' || !v) return v
|
||||
if (seen.indexOf(v) !== -1) return undefined
|
||||
seen.push(v)
|
||||
return v
|
||||
})
|
||||
},
|
||||
|
||||
'flatten 10': function () {
|
||||
return flatten(test, 10)
|
||||
},
|
||||
|
||||
// 'flattenFE 10': function () {
|
||||
// return flattenFE(test, 10)
|
||||
// },
|
||||
|
||||
'noCommas 10': function () {
|
||||
return noCommas(test, 10)
|
||||
},
|
||||
|
||||
'sparse 10': function () {
|
||||
return sparse(test, 10)
|
||||
},
|
||||
|
||||
'sparseFE 10': function () {
|
||||
return sparseFE(test, 10)
|
||||
},
|
||||
|
||||
'sparseFE2 10': function () {
|
||||
return sparseFE2(test, 10)
|
||||
},
|
||||
|
||||
sigmund: function() {
|
||||
return sigmund(test, 10)
|
||||
},
|
||||
|
||||
|
||||
// 'util.inspect 1': function () {
|
||||
// return util.inspect(test, false, 1, false)
|
||||
// },
|
||||
// 'util.inspect undefined': function () {
|
||||
// util.inspect(test)
|
||||
// },
|
||||
// 'util.inspect 2': function () {
|
||||
// util.inspect(test, false, 2, false)
|
||||
// },
|
||||
// 'util.inspect 3': function () {
|
||||
// util.inspect(test, false, 3, false)
|
||||
// },
|
||||
// 'util.inspect 4': function () {
|
||||
// util.inspect(test, false, 4, false)
|
||||
// },
|
||||
// 'util.inspect Infinity': function () {
|
||||
// util.inspect(test, false, Infinity, false)
|
||||
// }
|
||||
}
|
||||
|
||||
/** results
|
||||
**/
|
@ -0,0 +1,60 @@
|
||||
{
|
||||
"name": "sigmund",
|
||||
"version": "1.0.1",
|
||||
"description": "Quick and dirty signatures for Objects.",
|
||||
"main": "sigmund.js",
|
||||
"directories": {
|
||||
"test": "test"
|
||||
},
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"tap": "~0.3.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "tap test/*.js",
|
||||
"bench": "node bench.js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/isaacs/sigmund.git"
|
||||
},
|
||||
"keywords": [
|
||||
"object",
|
||||
"signature",
|
||||
"key",
|
||||
"data",
|
||||
"psychoanalysis"
|
||||
],
|
||||
"author": {
|
||||
"name": "Isaac Z. Schlueter",
|
||||
"email": "i@izs.me",
|
||||
"url": "http://blog.izs.me/"
|
||||
},
|
||||
"license": "ISC",
|
||||
"gitHead": "527f97aa5bb253d927348698c0cd3bb267d098c6",
|
||||
"bugs": {
|
||||
"url": "https://github.com/isaacs/sigmund/issues"
|
||||
},
|
||||
"homepage": "https://github.com/isaacs/sigmund#readme",
|
||||
"_id": "sigmund@1.0.1",
|
||||
"_shasum": "3ff21f198cad2175f9f3b781853fd94d0d19b590",
|
||||
"_from": "sigmund@>=1.0.0 <1.1.0",
|
||||
"_npmVersion": "2.10.0",
|
||||
"_nodeVersion": "2.0.1",
|
||||
"_npmUser": {
|
||||
"name": "isaacs",
|
||||
"email": "isaacs@npmjs.com"
|
||||
},
|
||||
"dist": {
|
||||
"shasum": "3ff21f198cad2175f9f3b781853fd94d0d19b590",
|
||||
"tarball": "http://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "isaacs",
|
||||
"email": "i@izs.me"
|
||||
}
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
|
||||
"readme": "ERROR: No README data found!"
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
module.exports = sigmund
|
||||
function sigmund (subject, maxSessions) {
|
||||
maxSessions = maxSessions || 10;
|
||||
var notes = [];
|
||||
var analysis = '';
|
||||
var RE = RegExp;
|
||||
|
||||
function psychoAnalyze (subject, session) {
|
||||
if (session > maxSessions) return;
|
||||
|
||||
if (typeof subject === 'function' ||
|
||||
typeof subject === 'undefined') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (typeof subject !== 'object' || !subject ||
|
||||
(subject instanceof RE)) {
|
||||
analysis += subject;
|
||||
return;
|
||||
}
|
||||
|
||||
if (notes.indexOf(subject) !== -1 || session === maxSessions) return;
|
||||
|
||||
notes.push(subject);
|
||||
analysis += '{';
|
||||
Object.keys(subject).forEach(function (issue, _, __) {
|
||||
// pseudo-private values. skip those.
|
||||
if (issue.charAt(0) === '_') return;
|
||||
var to = typeof subject[issue];
|
||||
if (to === 'function' || to === 'undefined') return;
|
||||
analysis += issue;
|
||||
psychoAnalyze(subject[issue], session + 1);
|
||||
});
|
||||
}
|
||||
psychoAnalyze(subject, 0);
|
||||
return analysis;
|
||||
}
|
||||
|
||||
// vim: set softtabstop=4 shiftwidth=4:
|
57
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/node_modules/minimatch/package.json
generated
vendored
Normal file
57
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/node_modules/minimatch/package.json
generated
vendored
Normal file
@ -0,0 +1,57 @@
|
||||
{
|
||||
"author": {
|
||||
"name": "Isaac Z. Schlueter",
|
||||
"email": "i@izs.me",
|
||||
"url": "http://blog.izs.me"
|
||||
},
|
||||
"name": "minimatch",
|
||||
"description": "a glob matcher in javascript",
|
||||
"version": "0.3.0",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/isaacs/minimatch.git"
|
||||
},
|
||||
"main": "minimatch.js",
|
||||
"scripts": {
|
||||
"test": "tap test/*.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": "*"
|
||||
},
|
||||
"dependencies": {
|
||||
"lru-cache": "2",
|
||||
"sigmund": "~1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"tap": ""
|
||||
},
|
||||
"license": {
|
||||
"type": "MIT",
|
||||
"url": "http://github.com/isaacs/minimatch/raw/master/LICENSE"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/isaacs/minimatch/issues"
|
||||
},
|
||||
"homepage": "https://github.com/isaacs/minimatch",
|
||||
"_id": "minimatch@0.3.0",
|
||||
"_shasum": "275d8edaac4f1bb3326472089e7949c8394699dd",
|
||||
"_from": "minimatch@>=0.3.0 <0.4.0",
|
||||
"_npmVersion": "1.4.10",
|
||||
"_npmUser": {
|
||||
"name": "isaacs",
|
||||
"email": "i@izs.me"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "isaacs",
|
||||
"email": "i@izs.me"
|
||||
}
|
||||
],
|
||||
"dist": {
|
||||
"shasum": "275d8edaac4f1bb3326472089e7949c8394699dd",
|
||||
"tarball": "http://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz"
|
||||
},
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
|
||||
"readme": "ERROR: No README data found!"
|
||||
}
|
58
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/package.json
generated
vendored
Normal file
58
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/glob/package.json
generated
vendored
Normal file
@ -0,0 +1,58 @@
|
||||
{
|
||||
"author": {
|
||||
"name": "Isaac Z. Schlueter",
|
||||
"email": "i@izs.me",
|
||||
"url": "http://blog.izs.me/"
|
||||
},
|
||||
"name": "glob",
|
||||
"description": "a little globber",
|
||||
"version": "3.2.11",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/isaacs/node-glob.git"
|
||||
},
|
||||
"main": "glob.js",
|
||||
"engines": {
|
||||
"node": "*"
|
||||
},
|
||||
"dependencies": {
|
||||
"inherits": "2",
|
||||
"minimatch": "0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"tap": "~0.4.0",
|
||||
"mkdirp": "0",
|
||||
"rimraf": "1"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "tap test/*.js",
|
||||
"test-regen": "TEST_REGEN=1 node test/00-setup.js"
|
||||
},
|
||||
"license": "BSD",
|
||||
"gitHead": "73f57e99510582b2024b762305970ebcf9b70aa2",
|
||||
"bugs": {
|
||||
"url": "https://github.com/isaacs/node-glob/issues"
|
||||
},
|
||||
"homepage": "https://github.com/isaacs/node-glob",
|
||||
"_id": "glob@3.2.11",
|
||||
"_shasum": "4a973f635b9190f715d10987d5c00fd2815ebe3d",
|
||||
"_from": "glob@>=3.2.9 <3.3.0",
|
||||
"_npmVersion": "1.4.10",
|
||||
"_npmUser": {
|
||||
"name": "isaacs",
|
||||
"email": "i@izs.me"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "isaacs",
|
||||
"email": "i@izs.me"
|
||||
}
|
||||
],
|
||||
"dist": {
|
||||
"shasum": "4a973f635b9190f715d10987d5c00fd2815ebe3d",
|
||||
"tarball": "http://registry.npmjs.org/glob/-/glob-3.2.11.tgz"
|
||||
},
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
|
||||
"readme": "ERROR: No README data found!"
|
||||
}
|
16
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/inherits/LICENSE
generated
vendored
Normal file
16
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/inherits/LICENSE
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
The ISC License
|
||||
|
||||
Copyright (c) Isaac Z. Schlueter
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
|
42
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/inherits/README.md
generated
vendored
Normal file
42
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/inherits/README.md
generated
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
Browser-friendly inheritance fully compatible with standard node.js
|
||||
[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).
|
||||
|
||||
This package exports standard `inherits` from node.js `util` module in
|
||||
node environment, but also provides alternative browser-friendly
|
||||
implementation through [browser
|
||||
field](https://gist.github.com/shtylman/4339901). Alternative
|
||||
implementation is a literal copy of standard one located in standalone
|
||||
module to avoid requiring of `util`. It also has a shim for old
|
||||
browsers with no `Object.create` support.
|
||||
|
||||
While keeping you sure you are using standard `inherits`
|
||||
implementation in node.js environment, it allows bundlers such as
|
||||
[browserify](https://github.com/substack/node-browserify) to not
|
||||
include full `util` package to your client code if all you need is
|
||||
just `inherits` function. It worth, because browser shim for `util`
|
||||
package is large and `inherits` is often the single function you need
|
||||
from it.
|
||||
|
||||
It's recommended to use this package instead of
|
||||
`require('util').inherits` for any code that has chances to be used
|
||||
not only in node.js but in browser too.
|
||||
|
||||
## usage
|
||||
|
||||
```js
|
||||
var inherits = require('inherits');
|
||||
// then use exactly as the standard one
|
||||
```
|
||||
|
||||
## note on version ~1.0
|
||||
|
||||
Version ~1.0 had completely different motivation and is not compatible
|
||||
neither with 2.0 nor with standard node.js `inherits`.
|
||||
|
||||
If you are using version ~1.0 and planning to switch to ~2.0, be
|
||||
careful:
|
||||
|
||||
* new version uses `super_` instead of `super` for referencing
|
||||
superclass
|
||||
* new version overwrites current prototype while old one preserves any
|
||||
existing fields on it
|
1
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/inherits/inherits.js
generated
vendored
Normal file
1
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/inherits/inherits.js
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
module.exports = require('util').inherits
|
23
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/inherits/inherits_browser.js
generated
vendored
Normal file
23
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/inherits/inherits_browser.js
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
if (typeof Object.create === 'function') {
|
||||
// implementation from standard node.js 'util' module
|
||||
module.exports = function inherits(ctor, superCtor) {
|
||||
ctor.super_ = superCtor
|
||||
ctor.prototype = Object.create(superCtor.prototype, {
|
||||
constructor: {
|
||||
value: ctor,
|
||||
enumerable: false,
|
||||
writable: true,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
};
|
||||
} else {
|
||||
// old school shim for old browsers
|
||||
module.exports = function inherits(ctor, superCtor) {
|
||||
ctor.super_ = superCtor
|
||||
var TempCtor = function () {}
|
||||
TempCtor.prototype = superCtor.prototype
|
||||
ctor.prototype = new TempCtor()
|
||||
ctor.prototype.constructor = ctor
|
||||
}
|
||||
}
|
50
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/inherits/package.json
generated
vendored
Normal file
50
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/inherits/package.json
generated
vendored
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"name": "inherits",
|
||||
"description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
|
||||
"version": "2.0.1",
|
||||
"keywords": [
|
||||
"inheritance",
|
||||
"class",
|
||||
"klass",
|
||||
"oop",
|
||||
"object-oriented",
|
||||
"inherits",
|
||||
"browser",
|
||||
"browserify"
|
||||
],
|
||||
"main": "./inherits.js",
|
||||
"browser": "./inherits_browser.js",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/isaacs/inherits.git"
|
||||
},
|
||||
"license": "ISC",
|
||||
"scripts": {
|
||||
"test": "node test"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/isaacs/inherits/issues"
|
||||
},
|
||||
"_id": "inherits@2.0.1",
|
||||
"dist": {
|
||||
"shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
|
||||
"tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
|
||||
},
|
||||
"_from": "inherits@>=2.0.1 <2.1.0",
|
||||
"_npmVersion": "1.3.8",
|
||||
"_npmUser": {
|
||||
"name": "isaacs",
|
||||
"email": "i@izs.me"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "isaacs",
|
||||
"email": "i@izs.me"
|
||||
}
|
||||
],
|
||||
"directories": {},
|
||||
"_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
|
||||
"_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
|
||||
"readme": "ERROR: No README data found!",
|
||||
"homepage": "https://github.com/isaacs/inherits#readme"
|
||||
}
|
25
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/inherits/test.js
generated
vendored
Normal file
25
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/inherits/test.js
generated
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
var inherits = require('./inherits.js')
|
||||
var assert = require('assert')
|
||||
|
||||
function test(c) {
|
||||
assert(c.constructor === Child)
|
||||
assert(c.constructor.super_ === Parent)
|
||||
assert(Object.getPrototypeOf(c) === Child.prototype)
|
||||
assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype)
|
||||
assert(c instanceof Child)
|
||||
assert(c instanceof Parent)
|
||||
}
|
||||
|
||||
function Child() {
|
||||
Parent.call(this)
|
||||
test(this)
|
||||
}
|
||||
|
||||
function Parent() {}
|
||||
|
||||
inherits(Child, Parent)
|
||||
|
||||
var c = new Child
|
||||
test(c)
|
||||
|
||||
console.log('ok')
|
4
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/object-inspect/.travis.yml
generated
vendored
Normal file
4
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/object-inspect/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.8"
|
||||
- "0.10"
|
18
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/object-inspect/LICENSE
generated
vendored
Normal file
18
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/object-inspect/LICENSE
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
This software is released under the MIT license:
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
127
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/object-inspect/index.js
generated
vendored
Normal file
127
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/object-inspect/index.js
generated
vendored
Normal file
@ -0,0 +1,127 @@
|
||||
module.exports = function inspect_ (obj, opts, depth, seen) {
|
||||
if (!opts) opts = {};
|
||||
|
||||
var maxDepth = opts.depth === undefined ? 5 : opts.depth;
|
||||
if (depth === undefined) depth = 0;
|
||||
if (depth > maxDepth && maxDepth > 0) return '...';
|
||||
|
||||
if (seen === undefined) seen = [];
|
||||
else if (indexOf(seen, obj) >= 0) {
|
||||
return '[Circular]';
|
||||
}
|
||||
|
||||
function inspect (value, from) {
|
||||
if (from) {
|
||||
seen = seen.slice();
|
||||
seen.push(from);
|
||||
}
|
||||
return inspect_(value, opts, depth + 1, seen);
|
||||
}
|
||||
|
||||
if (typeof obj === 'string') {
|
||||
return inspectString(obj);
|
||||
}
|
||||
else if (typeof obj === 'function') {
|
||||
var name = nameOf(obj);
|
||||
return '[Function' + (name ? ': ' + name : '') + ']';
|
||||
}
|
||||
else if (obj === null) {
|
||||
return 'null';
|
||||
}
|
||||
else if (isElement(obj)) {
|
||||
var s = '<' + String(obj.nodeName).toLowerCase();
|
||||
var attrs = obj.attributes || [];
|
||||
for (var i = 0; i < attrs.length; i++) {
|
||||
s += ' ' + attrs[i].name + '="' + quote(attrs[i].value) + '"';
|
||||
}
|
||||
s += '>';
|
||||
if (obj.childNodes && obj.childNodes.length) s += '...';
|
||||
s += '</' + String(obj.tagName).toLowerCase() + '>';
|
||||
return s;
|
||||
}
|
||||
else if (isArray(obj)) {
|
||||
if (obj.length === 0) return '[]';
|
||||
var xs = Array(obj.length);
|
||||
for (var i = 0; i < obj.length; i++) {
|
||||
xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';
|
||||
}
|
||||
return '[ ' + xs.join(', ') + ' ]';
|
||||
}
|
||||
else if (typeof obj === 'object' && typeof obj.inspect === 'function') {
|
||||
return obj.inspect();
|
||||
}
|
||||
else if (typeof obj === 'object' && !isDate(obj) && !isRegExp(obj)) {
|
||||
var xs = [], keys = [];
|
||||
for (var key in obj) {
|
||||
if (has(obj, key)) keys.push(key);
|
||||
}
|
||||
keys.sort();
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
var key = keys[i];
|
||||
if (/[^\w$]/.test(key)) {
|
||||
xs.push(inspect(key) + ': ' + inspect(obj[key], obj));
|
||||
}
|
||||
else xs.push(key + ': ' + inspect(obj[key], obj));
|
||||
}
|
||||
if (xs.length === 0) return '{}';
|
||||
return '{ ' + xs.join(', ') + ' }';
|
||||
}
|
||||
else return String(obj);
|
||||
};
|
||||
|
||||
function quote (s) {
|
||||
return String(s).replace(/"/g, '"');
|
||||
}
|
||||
|
||||
function isArray (obj) {
|
||||
return {}.toString.call(obj) === '[object Array]';
|
||||
}
|
||||
|
||||
function isDate (obj) {
|
||||
return {}.toString.call(obj) === '[object Date]';
|
||||
}
|
||||
|
||||
function isRegExp (obj) {
|
||||
return {}.toString.call(obj) === '[object RegExp]';
|
||||
}
|
||||
|
||||
function has (obj, key) {
|
||||
if (!{}.hasOwnProperty) return key in obj;
|
||||
return {}.hasOwnProperty.call(obj, key);
|
||||
}
|
||||
|
||||
function nameOf (f) {
|
||||
if (f.name) return f.name;
|
||||
var m = f.toString().match(/^function\s*([\w$]+)/);
|
||||
if (m) return m[1];
|
||||
}
|
||||
|
||||
function indexOf (xs, x) {
|
||||
if (xs.indexOf) return xs.indexOf(x);
|
||||
for (var i = 0, l = xs.length; i < l; i++) {
|
||||
if (xs[i] === x) return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
function isElement (x) {
|
||||
if (!x || typeof x !== 'object') return false;
|
||||
if (typeof HTMLElement !== 'undefined') {
|
||||
return x instanceof HTMLElement;
|
||||
}
|
||||
else return typeof x.nodeName === 'string'
|
||||
&& typeof x.getAttribute === 'function'
|
||||
;
|
||||
}
|
||||
|
||||
function inspectString (str) {
|
||||
var s = str.replace(/(['\\])/g, '\\$1').replace(/[\x00-\x1f]/g, lowbyte);
|
||||
return "'" + s + "'";
|
||||
|
||||
function lowbyte (c) {
|
||||
var n = c.charCodeAt(0);
|
||||
var x = { 8: 'b', 9: 't', 10: 'n', 12: 'f', 13: 'r' }[n];
|
||||
if (x) return '\\' + x;
|
||||
return '\\x' + (n < 0x10 ? '0' : '') + n.toString(16);
|
||||
}
|
||||
}
|
70
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/object-inspect/package.json
generated
vendored
Normal file
70
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/object-inspect/package.json
generated
vendored
Normal file
@ -0,0 +1,70 @@
|
||||
{
|
||||
"name": "object-inspect",
|
||||
"version": "0.4.0",
|
||||
"description": "string representations of objects in node and the browser",
|
||||
"main": "index.js",
|
||||
"devDependencies": {
|
||||
"tape": "~2.6.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "tape test/*.js"
|
||||
},
|
||||
"testling": {
|
||||
"files": [
|
||||
"test/*.js",
|
||||
"test/browser/*.js"
|
||||
],
|
||||
"browsers": [
|
||||
"ie/6..latest",
|
||||
"chrome/latest",
|
||||
"firefox/latest",
|
||||
"safari/latest",
|
||||
"opera/latest",
|
||||
"iphone/latest",
|
||||
"ipad/latest",
|
||||
"android/latest"
|
||||
]
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/substack/object-inspect.git"
|
||||
},
|
||||
"homepage": "https://github.com/substack/object-inspect",
|
||||
"keywords": [
|
||||
"inspect",
|
||||
"util.inspect",
|
||||
"object",
|
||||
"stringify",
|
||||
"pretty"
|
||||
],
|
||||
"author": {
|
||||
"name": "James Halliday",
|
||||
"email": "mail@substack.net",
|
||||
"url": "http://substack.net"
|
||||
},
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/substack/object-inspect/issues"
|
||||
},
|
||||
"_id": "object-inspect@0.4.0",
|
||||
"dist": {
|
||||
"shasum": "f5157c116c1455b243b06ee97703392c5ad89fec",
|
||||
"tarball": "http://registry.npmjs.org/object-inspect/-/object-inspect-0.4.0.tgz"
|
||||
},
|
||||
"_from": "object-inspect@>=0.4.0 <0.5.0",
|
||||
"_npmVersion": "1.4.4",
|
||||
"_npmUser": {
|
||||
"name": "substack",
|
||||
"email": "mail@substack.net"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "substack",
|
||||
"email": "mail@substack.net"
|
||||
}
|
||||
],
|
||||
"directories": {},
|
||||
"_shasum": "f5157c116c1455b243b06ee97703392c5ad89fec",
|
||||
"_resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-0.4.0.tgz",
|
||||
"readme": "ERROR: No README data found!"
|
||||
}
|
59
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/object-inspect/readme.markdown
generated
vendored
Normal file
59
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/object-inspect/readme.markdown
generated
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
# object-inspect
|
||||
|
||||
string representations of objects in node and the browser
|
||||
|
||||
[](https://ci.testling.com/substack/object-inspect)
|
||||
|
||||
[](http://travis-ci.org/substack/object-inspect)
|
||||
|
||||
# example
|
||||
|
||||
## circular
|
||||
|
||||
``` js
|
||||
var inspect = require('object-inspect');
|
||||
var obj = { a: 1, b: [3,4] };
|
||||
obj.c = obj;
|
||||
console.log(inspect(obj));
|
||||
```
|
||||
|
||||
## dom element
|
||||
|
||||
``` js
|
||||
var inspect = require('object-inspect');
|
||||
|
||||
var d = document.createElement('div');
|
||||
d.setAttribute('id', 'beep');
|
||||
d.innerHTML = '<b>wooo</b><i>iiiii</i>';
|
||||
|
||||
console.log(inspect([ d, { a: 3, b : 4, c: [5,6,[7,[8,[9]]]] } ]));
|
||||
```
|
||||
|
||||
output:
|
||||
|
||||
```
|
||||
[ <div id="beep">...</div>, { a: 3, b: 4, c: [ 5, 6, [ 7, [ 8, [ ... ] ] ] ] } ]
|
||||
```
|
||||
|
||||
# methods
|
||||
|
||||
``` js
|
||||
var inspect = require('object-inspect')
|
||||
```
|
||||
|
||||
## var s = inspect(obj, opts={})
|
||||
|
||||
Return a string `s` with the string representation of `obj` up to a depth of
|
||||
`opts.depth`.
|
||||
|
||||
# install
|
||||
|
||||
With [npm](https://npmjs.org) do:
|
||||
|
||||
```
|
||||
npm install object-inspect
|
||||
```
|
||||
|
||||
# license
|
||||
|
||||
MIT
|
4
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/resumer/.travis.yml
generated
vendored
Normal file
4
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/resumer/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.8"
|
||||
- "0.10"
|
18
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/resumer/LICENSE
generated
vendored
Normal file
18
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/resumer/LICENSE
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
This software is released under the MIT license:
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
29
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/resumer/index.js
generated
vendored
Normal file
29
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/resumer/index.js
generated
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
var through = require('through');
|
||||
var nextTick = typeof setImmediate !== 'undefined'
|
||||
? setImmediate
|
||||
: process.nextTick
|
||||
;
|
||||
|
||||
module.exports = function (write, end) {
|
||||
var tr = through(write, end);
|
||||
tr.pause();
|
||||
var resume = tr.resume;
|
||||
var pause = tr.pause;
|
||||
var paused = false;
|
||||
|
||||
tr.pause = function () {
|
||||
paused = true;
|
||||
return pause.apply(this, arguments);
|
||||
};
|
||||
|
||||
tr.resume = function () {
|
||||
paused = false;
|
||||
return resume.apply(this, arguments);
|
||||
};
|
||||
|
||||
nextTick(function () {
|
||||
if (!paused) tr.resume();
|
||||
});
|
||||
|
||||
return tr;
|
||||
};
|
71
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/resumer/package.json
generated
vendored
Normal file
71
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/resumer/package.json
generated
vendored
Normal file
@ -0,0 +1,71 @@
|
||||
{
|
||||
"name": "resumer",
|
||||
"version": "0.0.0",
|
||||
"description": "a through stream that starts paused and resumes on the next tick",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"through": "~2.3.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"tap": "~0.4.0",
|
||||
"tape": "~1.0.2",
|
||||
"concat-stream": "~0.1.1"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "tap test/*.js"
|
||||
},
|
||||
"testling": {
|
||||
"files": "test/*.js",
|
||||
"browsers": [
|
||||
"ie/6..latest",
|
||||
"chrome/20..latest",
|
||||
"firefox/10..latest",
|
||||
"safari/latest",
|
||||
"opera/11.0..latest",
|
||||
"iphone/6",
|
||||
"ipad/6"
|
||||
]
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/substack/resumer.git"
|
||||
},
|
||||
"homepage": "https://github.com/substack/resumer",
|
||||
"keywords": [
|
||||
"through",
|
||||
"stream",
|
||||
"pause",
|
||||
"resume"
|
||||
],
|
||||
"author": {
|
||||
"name": "James Halliday",
|
||||
"email": "mail@substack.net",
|
||||
"url": "http://substack.net"
|
||||
},
|
||||
"license": "MIT",
|
||||
"readme": "# resumer\n\nReturn a through stream that starts out paused and resumes on the next tick,\nunless somebody called `.pause()`.\n\nThis module has the same signature as\n[through](https://npmjs.com/package/through).\n\n[](http://ci.testling.com/substack/resumer)\n\n[](http://travis-ci.org/substack/resumer)\n\n# example\n\n``` js\nvar resumer = require('resumer');\nvar s = createStream();\ns.pipe(process.stdout);\n\nfunction createStream () {\n var stream = resumer();\n stream.queue('beep boop\\n');\n return stream;\n}\n```\n\n```\n$ node example/resume.js\nbeep boop\n```\n\n# methods\n\n``` js\nvar resumer = require('resumer')\n```\n\n## resumer(write, end)\n\nReturn a new through stream from `write` and `end`, which default to\npass-through `.queue()` functions if not specified.\n\nThe stream starts out paused and will be resumed on the next tick unless you\ncall `.pause()` first.\n\n`write` and `end` get passed directly through to\n[through](https://npmjs.com/package/through).\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install resumer\n```\n\n# license\n\nMIT\n",
|
||||
"readmeFilename": "readme.markdown",
|
||||
"_id": "resumer@0.0.0",
|
||||
"dist": {
|
||||
"shasum": "f1e8f461e4064ba39e82af3cdc2a8c893d076759",
|
||||
"tarball": "http://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz"
|
||||
},
|
||||
"_from": "resumer@>=0.0.0 <0.1.0",
|
||||
"_npmVersion": "1.2.2",
|
||||
"_npmUser": {
|
||||
"name": "substack",
|
||||
"email": "mail@substack.net"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "substack",
|
||||
"email": "mail@substack.net"
|
||||
}
|
||||
],
|
||||
"directories": {},
|
||||
"_shasum": "f1e8f461e4064ba39e82af3cdc2a8c893d076759",
|
||||
"_resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
|
||||
"bugs": {
|
||||
"url": "https://github.com/substack/resumer/issues"
|
||||
}
|
||||
}
|
59
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/resumer/readme.markdown
generated
vendored
Normal file
59
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/resumer/readme.markdown
generated
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
# resumer
|
||||
|
||||
Return a through stream that starts out paused and resumes on the next tick,
|
||||
unless somebody called `.pause()`.
|
||||
|
||||
This module has the same signature as
|
||||
[through](https://npmjs.com/package/through).
|
||||
|
||||
[](http://ci.testling.com/substack/resumer)
|
||||
|
||||
[](http://travis-ci.org/substack/resumer)
|
||||
|
||||
# example
|
||||
|
||||
``` js
|
||||
var resumer = require('resumer');
|
||||
var s = createStream();
|
||||
s.pipe(process.stdout);
|
||||
|
||||
function createStream () {
|
||||
var stream = resumer();
|
||||
stream.queue('beep boop\n');
|
||||
return stream;
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
$ node example/resume.js
|
||||
beep boop
|
||||
```
|
||||
|
||||
# methods
|
||||
|
||||
``` js
|
||||
var resumer = require('resumer')
|
||||
```
|
||||
|
||||
## resumer(write, end)
|
||||
|
||||
Return a new through stream from `write` and `end`, which default to
|
||||
pass-through `.queue()` functions if not specified.
|
||||
|
||||
The stream starts out paused and will be resumed on the next tick unless you
|
||||
call `.pause()` first.
|
||||
|
||||
`write` and `end` get passed directly through to
|
||||
[through](https://npmjs.com/package/through).
|
||||
|
||||
# install
|
||||
|
||||
With [npm](https://npmjs.org) do:
|
||||
|
||||
```
|
||||
npm install resumer
|
||||
```
|
||||
|
||||
# license
|
||||
|
||||
MIT
|
5
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/through/.travis.yml
generated
vendored
Normal file
5
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/through/.travis.yml
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- 0.6
|
||||
- 0.8
|
||||
- "0.10"
|
15
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/through/LICENSE.APACHE2
generated
vendored
Normal file
15
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/through/LICENSE.APACHE2
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
Apache License, Version 2.0
|
||||
|
||||
Copyright (c) 2011 Dominic Tarr
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
24
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/through/LICENSE.MIT
generated
vendored
Normal file
24
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/through/LICENSE.MIT
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
The MIT License
|
||||
|
||||
Copyright (c) 2011 Dominic Tarr
|
||||
|
||||
Permission is hereby granted, free of charge,
|
||||
to any person obtaining a copy of this software and
|
||||
associated documentation files (the "Software"), to
|
||||
deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify,
|
||||
merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom
|
||||
the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice
|
||||
shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
|
||||
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
108
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/through/index.js
generated
vendored
Normal file
108
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/through/index.js
generated
vendored
Normal file
@ -0,0 +1,108 @@
|
||||
var Stream = require('stream')
|
||||
|
||||
// through
|
||||
//
|
||||
// a stream that does nothing but re-emit the input.
|
||||
// useful for aggregating a series of changing but not ending streams into one stream)
|
||||
|
||||
exports = module.exports = through
|
||||
through.through = through
|
||||
|
||||
//create a readable writable stream.
|
||||
|
||||
function through (write, end, opts) {
|
||||
write = write || function (data) { this.queue(data) }
|
||||
end = end || function () { this.queue(null) }
|
||||
|
||||
var ended = false, destroyed = false, buffer = [], _ended = false
|
||||
var stream = new Stream()
|
||||
stream.readable = stream.writable = true
|
||||
stream.paused = false
|
||||
|
||||
// stream.autoPause = !(opts && opts.autoPause === false)
|
||||
stream.autoDestroy = !(opts && opts.autoDestroy === false)
|
||||
|
||||
stream.write = function (data) {
|
||||
write.call(this, data)
|
||||
return !stream.paused
|
||||
}
|
||||
|
||||
function drain() {
|
||||
while(buffer.length && !stream.paused) {
|
||||
var data = buffer.shift()
|
||||
if(null === data)
|
||||
return stream.emit('end')
|
||||
else
|
||||
stream.emit('data', data)
|
||||
}
|
||||
}
|
||||
|
||||
stream.queue = stream.push = function (data) {
|
||||
// console.error(ended)
|
||||
if(_ended) return stream
|
||||
if(data === null) _ended = true
|
||||
buffer.push(data)
|
||||
drain()
|
||||
return stream
|
||||
}
|
||||
|
||||
//this will be registered as the first 'end' listener
|
||||
//must call destroy next tick, to make sure we're after any
|
||||
//stream piped from here.
|
||||
//this is only a problem if end is not emitted synchronously.
|
||||
//a nicer way to do this is to make sure this is the last listener for 'end'
|
||||
|
||||
stream.on('end', function () {
|
||||
stream.readable = false
|
||||
if(!stream.writable && stream.autoDestroy)
|
||||
process.nextTick(function () {
|
||||
stream.destroy()
|
||||
})
|
||||
})
|
||||
|
||||
function _end () {
|
||||
stream.writable = false
|
||||
end.call(stream)
|
||||
if(!stream.readable && stream.autoDestroy)
|
||||
stream.destroy()
|
||||
}
|
||||
|
||||
stream.end = function (data) {
|
||||
if(ended) return
|
||||
ended = true
|
||||
if(arguments.length) stream.write(data)
|
||||
_end() // will emit or queue
|
||||
return stream
|
||||
}
|
||||
|
||||
stream.destroy = function () {
|
||||
if(destroyed) return
|
||||
destroyed = true
|
||||
ended = true
|
||||
buffer.length = 0
|
||||
stream.writable = stream.readable = false
|
||||
stream.emit('close')
|
||||
return stream
|
||||
}
|
||||
|
||||
stream.pause = function () {
|
||||
if(stream.paused) return
|
||||
stream.paused = true
|
||||
return stream
|
||||
}
|
||||
|
||||
stream.resume = function () {
|
||||
if(stream.paused) {
|
||||
stream.paused = false
|
||||
stream.emit('resume')
|
||||
}
|
||||
drain()
|
||||
//may have become paused again,
|
||||
//as drain emits 'data'.
|
||||
if(!stream.paused)
|
||||
stream.emit('drain')
|
||||
return stream
|
||||
}
|
||||
return stream
|
||||
}
|
||||
|
66
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/through/package.json
generated
vendored
Normal file
66
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/through/package.json
generated
vendored
Normal file
@ -0,0 +1,66 @@
|
||||
{
|
||||
"name": "through",
|
||||
"version": "2.3.8",
|
||||
"description": "simplified stream construction",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "set -e; for t in test/*.js; do node $t; done"
|
||||
},
|
||||
"devDependencies": {
|
||||
"stream-spec": "~0.3.5",
|
||||
"tape": "~2.3.2",
|
||||
"from": "~0.1.3"
|
||||
},
|
||||
"keywords": [
|
||||
"stream",
|
||||
"streams",
|
||||
"user-streams",
|
||||
"pipe"
|
||||
],
|
||||
"author": {
|
||||
"name": "Dominic Tarr",
|
||||
"email": "dominic.tarr@gmail.com",
|
||||
"url": "dominictarr.com"
|
||||
},
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/dominictarr/through.git"
|
||||
},
|
||||
"homepage": "https://github.com/dominictarr/through",
|
||||
"testling": {
|
||||
"browsers": [
|
||||
"ie/8..latest",
|
||||
"ff/15..latest",
|
||||
"chrome/20..latest",
|
||||
"safari/5.1..latest"
|
||||
],
|
||||
"files": "test/*.js"
|
||||
},
|
||||
"gitHead": "2c5a6f9a0cc54da759b6e10964f2081c358e49dc",
|
||||
"bugs": {
|
||||
"url": "https://github.com/dominictarr/through/issues"
|
||||
},
|
||||
"_id": "through@2.3.8",
|
||||
"_shasum": "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5",
|
||||
"_from": "through@>=2.3.4 <2.4.0",
|
||||
"_npmVersion": "2.12.0",
|
||||
"_nodeVersion": "2.3.1",
|
||||
"_npmUser": {
|
||||
"name": "dominictarr",
|
||||
"email": "dominic.tarr@gmail.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "dominictarr",
|
||||
"email": "dominic.tarr@gmail.com"
|
||||
}
|
||||
],
|
||||
"dist": {
|
||||
"shasum": "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5",
|
||||
"tarball": "http://registry.npmjs.org/through/-/through-2.3.8.tgz"
|
||||
},
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
||||
"readme": "ERROR: No README data found!"
|
||||
}
|
64
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/through/readme.markdown
generated
vendored
Normal file
64
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/node_modules/through/readme.markdown
generated
vendored
Normal file
@ -0,0 +1,64 @@
|
||||
#through
|
||||
|
||||
[](http://travis-ci.org/dominictarr/through)
|
||||
[](https://ci.testling.com/dominictarr/through)
|
||||
|
||||
Easy way to create a `Stream` that is both `readable` and `writable`.
|
||||
|
||||
* Pass in optional `write` and `end` methods.
|
||||
* `through` takes care of pause/resume logic if you use `this.queue(data)` instead of `this.emit('data', data)`.
|
||||
* Use `this.pause()` and `this.resume()` to manage flow.
|
||||
* Check `this.paused` to see current flow state. (`write` always returns `!this.paused`).
|
||||
|
||||
This function is the basis for most of the synchronous streams in
|
||||
[event-stream](http://github.com/dominictarr/event-stream).
|
||||
|
||||
``` js
|
||||
var through = require('through')
|
||||
|
||||
through(function write(data) {
|
||||
this.queue(data) //data *must* not be null
|
||||
},
|
||||
function end () { //optional
|
||||
this.queue(null)
|
||||
})
|
||||
```
|
||||
|
||||
Or, can also be used _without_ buffering on pause, use `this.emit('data', data)`,
|
||||
and this.emit('end')
|
||||
|
||||
``` js
|
||||
var through = require('through')
|
||||
|
||||
through(function write(data) {
|
||||
this.emit('data', data)
|
||||
//this.pause()
|
||||
},
|
||||
function end () { //optional
|
||||
this.emit('end')
|
||||
})
|
||||
```
|
||||
|
||||
## Extended Options
|
||||
|
||||
You will probably not need these 99% of the time.
|
||||
|
||||
### autoDestroy=false
|
||||
|
||||
By default, `through` emits close when the writable
|
||||
and readable side of the stream has ended.
|
||||
If that is not desired, set `autoDestroy=false`.
|
||||
|
||||
``` js
|
||||
var through = require('through')
|
||||
|
||||
//like this
|
||||
var ts = through(write, end, {autoDestroy: false})
|
||||
//or like this
|
||||
var ts = through(write, end)
|
||||
ts.autoDestroy = false
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT / Apache2
|
88
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/package.json
generated
vendored
Normal file
88
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/package.json
generated
vendored
Normal file
@ -0,0 +1,88 @@
|
||||
{
|
||||
"name": "tape",
|
||||
"version": "3.5.0",
|
||||
"description": "tap-producing test harness for node and browsers",
|
||||
"main": "index.js",
|
||||
"bin": {
|
||||
"tape": "./bin/tape"
|
||||
},
|
||||
"directories": {
|
||||
"example": "example",
|
||||
"test": "test"
|
||||
},
|
||||
"dependencies": {
|
||||
"deep-equal": "~0.2.0",
|
||||
"defined": "~0.0.0",
|
||||
"glob": "~3.2.9",
|
||||
"inherits": "~2.0.1",
|
||||
"object-inspect": "~0.4.0",
|
||||
"resumer": "~0.0.0",
|
||||
"through": "~2.3.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"tap": "~0.4.8",
|
||||
"falafel": "~0.3.1",
|
||||
"concat-stream": "~1.4.1"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "tap test/*.js"
|
||||
},
|
||||
"testling": {
|
||||
"files": "test/browser/*.js",
|
||||
"browsers": [
|
||||
"ie/6..latest",
|
||||
"chrome/20..latest",
|
||||
"firefox/10..latest",
|
||||
"safari/latest",
|
||||
"opera/11.0..latest",
|
||||
"iphone/6",
|
||||
"ipad/6"
|
||||
]
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/substack/tape.git"
|
||||
},
|
||||
"homepage": "https://github.com/substack/tape",
|
||||
"keywords": [
|
||||
"tap",
|
||||
"test",
|
||||
"harness",
|
||||
"assert",
|
||||
"browser"
|
||||
],
|
||||
"author": {
|
||||
"name": "James Halliday",
|
||||
"email": "mail@substack.net",
|
||||
"url": "http://substack.net"
|
||||
},
|
||||
"license": "MIT",
|
||||
"gitHead": "51f2f97d7eade23b1e23b7cfea37f449ade5b9c3",
|
||||
"bugs": {
|
||||
"url": "https://github.com/substack/tape/issues"
|
||||
},
|
||||
"_id": "tape@3.5.0",
|
||||
"_shasum": "aebb061388104ad0cb407be842782049d64624f8",
|
||||
"_from": "tape@>=3.5.0 <4.0.0",
|
||||
"_npmVersion": "1.4.28",
|
||||
"_npmUser": {
|
||||
"name": "raynos",
|
||||
"email": "raynos2@gmail.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "substack",
|
||||
"email": "mail@substack.net"
|
||||
},
|
||||
{
|
||||
"name": "raynos",
|
||||
"email": "raynos2@gmail.com"
|
||||
}
|
||||
],
|
||||
"dist": {
|
||||
"shasum": "aebb061388104ad0cb407be842782049d64624f8",
|
||||
"tarball": "http://registry.npmjs.org/tape/-/tape-3.5.0.tgz"
|
||||
},
|
||||
"_resolved": "https://registry.npmjs.org/tape/-/tape-3.5.0.tgz",
|
||||
"readme": "ERROR: No README data found!"
|
||||
}
|
317
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/readme.markdown
generated
vendored
Normal file
317
node_modules/cordova-common/node_modules/cordova-registry-mapper/node_modules/tape/readme.markdown
generated
vendored
Normal file
@ -0,0 +1,317 @@
|
||||
# tape
|
||||
|
||||
tap-producing test harness for node and browsers
|
||||
|
||||
[](http://ci.testling.com/substack/tape)
|
||||
|
||||
[](http://travis-ci.org/substack/tape)
|
||||
|
||||

|
||||
|
||||
# example
|
||||
|
||||
``` js
|
||||
var test = require('tape');
|
||||
|
||||
test('timing test', function (t) {
|
||||
t.plan(2);
|
||||
|
||||
t.equal(typeof Date.now, 'function');
|
||||
var start = Date.now();
|
||||
|
||||
setTimeout(function () {
|
||||
t.equal(Date.now() - start, 100);
|
||||
}, 100);
|
||||
});
|
||||
```
|
||||
|
||||
```
|
||||
$ node example/timing.js
|
||||
TAP version 13
|
||||
# timing test
|
||||
ok 1 should be equal
|
||||
not ok 2 should be equal
|
||||
---
|
||||
operator: equal
|
||||
expected: 100
|
||||
actual: 107
|
||||
...
|
||||
|
||||
1..2
|
||||
# tests 2
|
||||
# pass 1
|
||||
# fail 1
|
||||
```
|
||||
|
||||
# pretty reporters
|
||||
|
||||
The default TAP output is good for machines and humans that are robots.
|
||||
|
||||
If you want a more colorful / pretty output there are lots of modules on npm
|
||||
that will output something pretty if you pipe TAP into them:
|
||||
|
||||
- https://github.com/scottcorgan/tap-spec
|
||||
- https://github.com/scottcorgan/tap-dot
|
||||
- https://github.com/substack/faucet
|
||||
- https://github.com/juliangruber/tap-bail
|
||||
- https://github.com/kirbysayshi/tap-browser-color
|
||||
- https://github.com/gummesson/tap-json
|
||||
- https://github.com/gummesson/tap-min
|
||||
- https://github.com/calvinmetcalf/tap-nyan
|
||||
- https://www.npmjs.org/package/tap-pessimist
|
||||
- https://github.com/toolness/tap-prettify
|
||||
- https://github.com/shuhei/colortape
|
||||
- https://github.com/aghassemi/tap-xunit
|
||||
|
||||
To use them, try `node test/index.js | tap-spec` or pipe it into one
|
||||
of the modules of your choice!
|
||||
|
||||
# uncaught exceptions
|
||||
|
||||
By default, uncaught exceptions in your tests will not be intercepted, and will cause tape to crash. If you find this behavior undesirable, use [tape-catch](https://github.com/michaelrhodes/tape-catch) to report any exceptions as TAP errors.
|
||||
|
||||
# methods
|
||||
|
||||
The assertion methods in tape are heavily influenced or copied from the methods
|
||||
in [node-tap](https://github.com/isaacs/node-tap).
|
||||
|
||||
```
|
||||
var test = require('tape')
|
||||
```
|
||||
|
||||
## test([name], [opts], cb)
|
||||
|
||||
Create a new test with an optional `name` string and optional `opts` object.
|
||||
`cb(t)` fires with the new test object `t` once all preceeding tests have
|
||||
finished. Tests execute serially.
|
||||
|
||||
Available `opts` options are:
|
||||
- opts.skip = true/false. See test.skip.
|
||||
- opts.timeout = 500. Set a timeout for the test, after which it will fail.
|
||||
See test.timeoutAfter.
|
||||
|
||||
If you forget to `t.plan()` out how many assertions you are going to run and you
|
||||
don't call `t.end()` explicitly, your test will hang.
|
||||
|
||||
## test.skip(name, cb)
|
||||
|
||||
Generate a new test that will be skipped over.
|
||||
|
||||
## t.plan(n)
|
||||
|
||||
Declare that `n` assertions should be run. `t.end()` will be called
|
||||
automatically after the `n`th assertion. If there are any more assertions after
|
||||
the `n`th, or after `t.end()` is called, they will generate errors.
|
||||
|
||||
## t.end(err)
|
||||
|
||||
Declare the end of a test explicitly. If `err` is passed in `t.end` will assert
|
||||
that it is falsey.
|
||||
|
||||
## t.fail(msg)
|
||||
|
||||
Generate a failing assertion with a message `msg`.
|
||||
|
||||
## t.pass(msg)
|
||||
|
||||
Generate a passing assertion with a message `msg`.
|
||||
|
||||
## t.timeoutAfter(ms)
|
||||
|
||||
Automatically timeout the test after X ms.
|
||||
|
||||
## t.skip(msg)
|
||||
|
||||
Generate an assertion that will be skipped over.
|
||||
|
||||
## t.ok(value, msg)
|
||||
|
||||
Assert that `value` is truthy with an optional description message `msg`.
|
||||
|
||||
Aliases: `t.true()`, `t.assert()`
|
||||
|
||||
## t.notOk(value, msg)
|
||||
|
||||
Assert that `value` is falsy with an optional description message `msg`.
|
||||
|
||||
Aliases: `t.false()`, `t.notok()`
|
||||
|
||||
## t.error(err, msg)
|
||||
|
||||
Assert that `err` is falsy. If `err` is non-falsy, use its `err.message` as the
|
||||
description message.
|
||||
|
||||
Aliases: `t.ifError()`, `t.ifErr()`, `t.iferror()`
|
||||
|
||||
## t.equal(actual, expected, msg)
|
||||
|
||||
Assert that `actual === expected` with an optional description `msg`.
|
||||
|
||||
Aliases: `t.equals()`, `t.isEqual()`, `t.is()`, `t.strictEqual()`,
|
||||
`t.strictEquals()`
|
||||
|
||||
## t.notEqual(actual, expected, msg)
|
||||
|
||||
Assert that `actual !== expected` with an optional description `msg`.
|
||||
|
||||
Aliases: `t.notEquals()`, `t.notStrictEqual()`, `t.notStrictEquals()`,
|
||||
`t.isNotEqual()`, `t.isNot()`, `t.not()`, `t.doesNotEqual()`, `t.isInequal()`
|
||||
|
||||
## t.deepEqual(actual, expected, msg)
|
||||
|
||||
Assert that `actual` and `bexpected` have the same structure and nested values using
|
||||
[node's deepEqual() algorithm](https://github.com/substack/node-deep-equal)
|
||||
with strict comparisons (`===`) on leaf nodes and an optional description
|
||||
`msg`.
|
||||
|
||||
Aliases: `t.deepEquals()`, `t.isEquivalent()`, `t.same()`
|
||||
|
||||
## t.notDeepEqual(actual, expected, msg)
|
||||
|
||||
Assert that `actual` and `expected` do not have the same structure and nested values using
|
||||
[node's deepEqual() algorithm](https://github.com/substack/node-deep-equal)
|
||||
with strict comparisons (`===`) on leaf nodes and an optional description
|
||||
`msg`.
|
||||
|
||||
Aliases: `t.notEquivalent()`, `t.notDeeply()`, `t.notSame()`,
|
||||
`t.isNotDeepEqual()`, `t.isNotDeeply()`, `t.isNotEquivalent()`,
|
||||
`t.isInequivalent()`
|
||||
|
||||
## t.deepLooseEqual(actual, expected, msg)
|
||||
|
||||
Assert that `actual` and `expected` have the same structure and nested values using
|
||||
[node's deepEqual() algorithm](https://github.com/substack/node-deep-equal)
|
||||
with loose comparisons (`==`) on leaf nodes and an optional description `msg`.
|
||||
|
||||
Aliases: `t.looseEqual()`, `t.looseEquals()`
|
||||
|
||||
## t.notDeepLooseEqual(actual, expected, msg)
|
||||
|
||||
Assert that `actual` and `expected` do not have the same structure and nested values using
|
||||
[node's deepEqual() algorithm](https://github.com/substack/node-deep-equal)
|
||||
with loose comparisons (`==`) on leaf nodes and an optional description `msg`.
|
||||
|
||||
Aliases: `t.notLooseEqual()`, `t.notLooseEquals()`
|
||||
|
||||
## t.throws(fn, expected, msg)
|
||||
|
||||
Assert that the function call `fn()` throws an exception. `expected`, if present, must be a `RegExp` or `Function`.
|
||||
|
||||
## t.doesNotThrow(fn, expected, msg)
|
||||
|
||||
Assert that the function call `fn()` does not throw an exception.
|
||||
|
||||
## t.test(name, cb)
|
||||
|
||||
Create a subtest with a new test handle `st` from `cb(st)` inside the current
|
||||
test `t`. `cb(st)` will only fire when `t` finishes. Additional tests queued up
|
||||
after `t` will not be run until all subtests finish.
|
||||
|
||||
## var htest = test.createHarness()
|
||||
|
||||
Create a new test harness instance, which is a function like `test()`, but with
|
||||
a new pending stack and test state.
|
||||
|
||||
By default the TAP output goes to `console.log()`. You can pipe the output to
|
||||
someplace else if you `htest.createStream().pipe()` to a destination stream on
|
||||
the first tick.
|
||||
|
||||
## test.only(name, cb)
|
||||
|
||||
Like `test(name, cb)` except if you use `.only` this is the only test case
|
||||
that will run for the entire process, all other test cases using tape will
|
||||
be ignored
|
||||
|
||||
## var stream = test.createStream(opts)
|
||||
|
||||
Create a stream of output, bypassing the default output stream that writes
|
||||
messages to `console.log()`. By default `stream` will be a text stream of TAP
|
||||
output, but you can get an object stream instead by setting `opts.objectMode` to
|
||||
`true`.
|
||||
|
||||
### tap stream reporter
|
||||
|
||||
You can create your own custom test reporter using this `createStream()` api:
|
||||
|
||||
``` js
|
||||
var test = require('tape');
|
||||
var path = require('path');
|
||||
|
||||
test.createStream().pipe(process.stdout);
|
||||
|
||||
process.argv.slice(2).forEach(function (file) {
|
||||
require(path.resolve(file));
|
||||
});
|
||||
```
|
||||
|
||||
You could substitute `process.stdout` for whatever other output stream you want,
|
||||
like a network connection or a file.
|
||||
|
||||
Pass in test files to run as arguments:
|
||||
|
||||
```
|
||||
$ node tap.js test/x.js test/y.js
|
||||
TAP version 13
|
||||
# (anonymous)
|
||||
not ok 1 should be equal
|
||||
---
|
||||
operator: equal
|
||||
expected: "boop"
|
||||
actual: "beep"
|
||||
...
|
||||
# (anonymous)
|
||||
ok 2 should be equal
|
||||
ok 3 (unnamed assert)
|
||||
# wheee
|
||||
ok 4 (unnamed assert)
|
||||
|
||||
1..4
|
||||
# tests 4
|
||||
# pass 3
|
||||
# fail 1
|
||||
```
|
||||
|
||||
### object stream reporter
|
||||
|
||||
Here's how you can render an object stream instead of TAP:
|
||||
|
||||
``` js
|
||||
var test = require('tape');
|
||||
var path = require('path');
|
||||
|
||||
test.createStream({ objectMode: true }).on('data', function (row) {
|
||||
console.log(JSON.stringify(row))
|
||||
});
|
||||
|
||||
process.argv.slice(2).forEach(function (file) {
|
||||
require(path.resolve(file));
|
||||
});
|
||||
```
|
||||
|
||||
The output for this runner is:
|
||||
|
||||
```
|
||||
$ node object.js test/x.js test/y.js
|
||||
{"type":"test","name":"(anonymous)","id":0}
|
||||
{"id":0,"ok":false,"name":"should be equal","operator":"equal","actual":"beep","expected":"boop","error":{},"test":0,"type":"assert"}
|
||||
{"type":"end","test":0}
|
||||
{"type":"test","name":"(anonymous)","id":1}
|
||||
{"id":0,"ok":true,"name":"should be equal","operator":"equal","actual":2,"expected":2,"test":1,"type":"assert"}
|
||||
{"id":1,"ok":true,"name":"(unnamed assert)","operator":"ok","actual":true,"expected":true,"test":1,"type":"assert"}
|
||||
{"type":"end","test":1}
|
||||
{"type":"test","name":"wheee","id":2}
|
||||
{"id":0,"ok":true,"name":"(unnamed assert)","operator":"ok","actual":true,"expected":true,"test":2,"type":"assert"}
|
||||
{"type":"end","test":2}
|
||||
```
|
||||
|
||||
# install
|
||||
|
||||
With [npm](https://npmjs.org) do:
|
||||
|
||||
```
|
||||
npm install tape
|
||||
```
|
||||
|
||||
# license
|
||||
|
||||
MIT
|
51
node_modules/cordova-common/node_modules/cordova-registry-mapper/package.json
generated
vendored
Normal file
51
node_modules/cordova-common/node_modules/cordova-registry-mapper/package.json
generated
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
{
|
||||
"name": "cordova-registry-mapper",
|
||||
"version": "1.1.12",
|
||||
"description": "Maps old plugin ids to new plugin names for fetching from npm",
|
||||
"main": "index.js",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/stevengill/cordova-registry-mapper.git"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "node tests/test.js"
|
||||
},
|
||||
"keywords": [
|
||||
"cordova",
|
||||
"plugins"
|
||||
],
|
||||
"author": {
|
||||
"name": "Steve Gill"
|
||||
},
|
||||
"license": "Apache version 2.0",
|
||||
"dependencies": {
|
||||
"tape": "^3.5.0"
|
||||
},
|
||||
"gitHead": "b20b1953ea792366334cbb55595f4bd3fe5d24f0",
|
||||
"bugs": {
|
||||
"url": "https://github.com/stevengill/cordova-registry-mapper/issues"
|
||||
},
|
||||
"homepage": "https://github.com/stevengill/cordova-registry-mapper#readme",
|
||||
"_id": "cordova-registry-mapper@1.1.12",
|
||||
"_shasum": "f0b4f95239a4328766643877e90a95a53815cef1",
|
||||
"_from": "cordova-registry-mapper@>=1.1.8 <2.0.0",
|
||||
"_npmVersion": "2.14.2",
|
||||
"_nodeVersion": "0.10.36",
|
||||
"_npmUser": {
|
||||
"name": "stevegill",
|
||||
"email": "stevengill97@gmail.com"
|
||||
},
|
||||
"dist": {
|
||||
"shasum": "f0b4f95239a4328766643877e90a95a53815cef1",
|
||||
"tarball": "http://registry.npmjs.org/cordova-registry-mapper/-/cordova-registry-mapper-1.1.12.tgz"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "stevegill",
|
||||
"email": "stevengill97@gmail.com"
|
||||
}
|
||||
],
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/cordova-registry-mapper/-/cordova-registry-mapper-1.1.12.tgz",
|
||||
"readme": "ERROR: No README data found!"
|
||||
}
|
15
node_modules/cordova-common/node_modules/glob/LICENSE
generated
vendored
Normal file
15
node_modules/cordova-common/node_modules/glob/LICENSE
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
The ISC License
|
||||
|
||||
Copyright (c) Isaac Z. Schlueter and Contributors
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
||||
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
377
node_modules/cordova-common/node_modules/glob/README.md
generated
vendored
Normal file
377
node_modules/cordova-common/node_modules/glob/README.md
generated
vendored
Normal file
@ -0,0 +1,377 @@
|
||||
[](https://travis-ci.org/isaacs/node-glob/) [](https://david-dm.org/isaacs/node-glob) [](https://david-dm.org/isaacs/node-glob#info=devDependencies) [](https://david-dm.org/isaacs/node-glob#info=optionalDependencies)
|
||||
|
||||
# Glob
|
||||
|
||||
Match files using the patterns the shell uses, like stars and stuff.
|
||||
|
||||
This is a glob implementation in JavaScript. It uses the `minimatch`
|
||||
library to do its matching.
|
||||
|
||||

|
||||
|
||||
## Usage
|
||||
|
||||
```javascript
|
||||
var glob = require("glob")
|
||||
|
||||
// options is optional
|
||||
glob("**/*.js", options, function (er, files) {
|
||||
// files is an array of filenames.
|
||||
// If the `nonull` option is set, and nothing
|
||||
// was found, then files is ["**/*.js"]
|
||||
// er is an error object or null.
|
||||
})
|
||||
```
|
||||
|
||||
## Glob Primer
|
||||
|
||||
"Globs" are the patterns you type when you do stuff like `ls *.js` on
|
||||
the command line, or put `build/*` in a `.gitignore` file.
|
||||
|
||||
Before parsing the path part patterns, braced sections are expanded
|
||||
into a set. Braced sections start with `{` and end with `}`, with any
|
||||
number of comma-delimited sections within. Braced sections may contain
|
||||
slash characters, so `a{/b/c,bcd}` would expand into `a/b/c` and `abcd`.
|
||||
|
||||
The following characters have special magic meaning when used in a
|
||||
path portion:
|
||||
|
||||
* `*` Matches 0 or more characters in a single path portion
|
||||
* `?` Matches 1 character
|
||||
* `[...]` Matches a range of characters, similar to a RegExp range.
|
||||
If the first character of the range is `!` or `^` then it matches
|
||||
any character not in the range.
|
||||
* `!(pattern|pattern|pattern)` Matches anything that does not match
|
||||
any of the patterns provided.
|
||||
* `?(pattern|pattern|pattern)` Matches zero or one occurrence of the
|
||||
patterns provided.
|
||||
* `+(pattern|pattern|pattern)` Matches one or more occurrences of the
|
||||
patterns provided.
|
||||
* `*(a|b|c)` Matches zero or more occurrences of the patterns provided
|
||||
* `@(pattern|pat*|pat?erN)` Matches exactly one of the patterns
|
||||
provided
|
||||
* `**` If a "globstar" is alone in a path portion, then it matches
|
||||
zero or more directories and subdirectories searching for matches.
|
||||
It does not crawl symlinked directories.
|
||||
|
||||
### Dots
|
||||
|
||||
If a file or directory path portion has a `.` as the first character,
|
||||
then it will not match any glob pattern unless that pattern's
|
||||
corresponding path part also has a `.` as its first character.
|
||||
|
||||
For example, the pattern `a/.*/c` would match the file at `a/.b/c`.
|
||||
However the pattern `a/*/c` would not, because `*` does not start with
|
||||
a dot character.
|
||||
|
||||
You can make glob treat dots as normal characters by setting
|
||||
`dot:true` in the options.
|
||||
|
||||
### Basename Matching
|
||||
|
||||
If you set `matchBase:true` in the options, and the pattern has no
|
||||
slashes in it, then it will seek for any file anywhere in the tree
|
||||
with a matching basename. For example, `*.js` would match
|
||||
`test/simple/basic.js`.
|
||||
|
||||
### Negation
|
||||
|
||||
The intent for negation would be for a pattern starting with `!` to
|
||||
match everything that *doesn't* match the supplied pattern. However,
|
||||
the implementation is weird, and for the time being, this should be
|
||||
avoided. The behavior is deprecated in version 5, and will be removed
|
||||
entirely in version 6.
|
||||
|
||||
### Empty Sets
|
||||
|
||||
If no matching files are found, then an empty array is returned. This
|
||||
differs from the shell, where the pattern itself is returned. For
|
||||
example:
|
||||
|
||||
$ echo a*s*d*f
|
||||
a*s*d*f
|
||||
|
||||
To get the bash-style behavior, set the `nonull:true` in the options.
|
||||
|
||||
### See Also:
|
||||
|
||||
* `man sh`
|
||||
* `man bash` (Search for "Pattern Matching")
|
||||
* `man 3 fnmatch`
|
||||
* `man 5 gitignore`
|
||||
* [minimatch documentation](https://github.com/isaacs/minimatch)
|
||||
|
||||
## glob.hasMagic(pattern, [options])
|
||||
|
||||
Returns `true` if there are any special characters in the pattern, and
|
||||
`false` otherwise.
|
||||
|
||||
Note that the options affect the results. If `noext:true` is set in
|
||||
the options object, then `+(a|b)` will not be considered a magic
|
||||
pattern. If the pattern has a brace expansion, like `a/{b/c,x/y}`
|
||||
then that is considered magical, unless `nobrace:true` is set in the
|
||||
options.
|
||||
|
||||
## glob(pattern, [options], cb)
|
||||
|
||||
* `pattern` {String} Pattern to be matched
|
||||
* `options` {Object}
|
||||
* `cb` {Function}
|
||||
* `err` {Error | null}
|
||||
* `matches` {Array<String>} filenames found matching the pattern
|
||||
|
||||
Perform an asynchronous glob search.
|
||||
|
||||
## glob.sync(pattern, [options])
|
||||
|
||||
* `pattern` {String} Pattern to be matched
|
||||
* `options` {Object}
|
||||
* return: {Array<String>} filenames found matching the pattern
|
||||
|
||||
Perform a synchronous glob search.
|
||||
|
||||
## Class: glob.Glob
|
||||
|
||||
Create a Glob object by instantiating the `glob.Glob` class.
|
||||
|
||||
```javascript
|
||||
var Glob = require("glob").Glob
|
||||
var mg = new Glob(pattern, options, cb)
|
||||
```
|
||||
|
||||
It's an EventEmitter, and starts walking the filesystem to find matches
|
||||
immediately.
|
||||
|
||||
### new glob.Glob(pattern, [options], [cb])
|
||||
|
||||
* `pattern` {String} pattern to search for
|
||||
* `options` {Object}
|
||||
* `cb` {Function} Called when an error occurs, or matches are found
|
||||
* `err` {Error | null}
|
||||
* `matches` {Array<String>} filenames found matching the pattern
|
||||
|
||||
Note that if the `sync` flag is set in the options, then matches will
|
||||
be immediately available on the `g.found` member.
|
||||
|
||||
### Properties
|
||||
|
||||
* `minimatch` The minimatch object that the glob uses.
|
||||
* `options` The options object passed in.
|
||||
* `aborted` Boolean which is set to true when calling `abort()`. There
|
||||
is no way at this time to continue a glob search after aborting, but
|
||||
you can re-use the statCache to avoid having to duplicate syscalls.
|
||||
* `cache` Convenience object. Each field has the following possible
|
||||
values:
|
||||
* `false` - Path does not exist
|
||||
* `true` - Path exists
|
||||
* `'DIR'` - Path exists, and is not a directory
|
||||
* `'FILE'` - Path exists, and is a directory
|
||||
* `[file, entries, ...]` - Path exists, is a directory, and the
|
||||
array value is the results of `fs.readdir`
|
||||
* `statCache` Cache of `fs.stat` results, to prevent statting the same
|
||||
path multiple times.
|
||||
* `symlinks` A record of which paths are symbolic links, which is
|
||||
relevant in resolving `**` patterns.
|
||||
* `realpathCache` An optional object which is passed to `fs.realpath`
|
||||
to minimize unnecessary syscalls. It is stored on the instantiated
|
||||
Glob object, and may be re-used.
|
||||
|
||||
### Events
|
||||
|
||||
* `end` When the matching is finished, this is emitted with all the
|
||||
matches found. If the `nonull` option is set, and no match was found,
|
||||
then the `matches` list contains the original pattern. The matches
|
||||
are sorted, unless the `nosort` flag is set.
|
||||
* `match` Every time a match is found, this is emitted with the matched.
|
||||
* `error` Emitted when an unexpected error is encountered, or whenever
|
||||
any fs error occurs if `options.strict` is set.
|
||||
* `abort` When `abort()` is called, this event is raised.
|
||||
|
||||
### Methods
|
||||
|
||||
* `pause` Temporarily stop the search
|
||||
* `resume` Resume the search
|
||||
* `abort` Stop the search forever
|
||||
|
||||
### Options
|
||||
|
||||
All the options that can be passed to Minimatch can also be passed to
|
||||
Glob to change pattern matching behavior. Also, some have been added,
|
||||
or have glob-specific ramifications.
|
||||
|
||||
All options are false by default, unless otherwise noted.
|
||||
|
||||
All options are added to the Glob object, as well.
|
||||
|
||||
If you are running many `glob` operations, you can pass a Glob object
|
||||
as the `options` argument to a subsequent operation to shortcut some
|
||||
`stat` and `readdir` calls. At the very least, you may pass in shared
|
||||
`symlinks`, `statCache`, `realpathCache`, and `cache` options, so that
|
||||
parallel glob operations will be sped up by sharing information about
|
||||
the filesystem.
|
||||
|
||||
* `cwd` The current working directory in which to search. Defaults
|
||||
to `process.cwd()`.
|
||||
* `root` The place where patterns starting with `/` will be mounted
|
||||
onto. Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix
|
||||
systems, and `C:\` or some such on Windows.)
|
||||
* `dot` Include `.dot` files in normal matches and `globstar` matches.
|
||||
Note that an explicit dot in a portion of the pattern will always
|
||||
match dot files.
|
||||
* `nomount` By default, a pattern starting with a forward-slash will be
|
||||
"mounted" onto the root setting, so that a valid filesystem path is
|
||||
returned. Set this flag to disable that behavior.
|
||||
* `mark` Add a `/` character to directory matches. Note that this
|
||||
requires additional stat calls.
|
||||
* `nosort` Don't sort the results.
|
||||
* `stat` Set to true to stat *all* results. This reduces performance
|
||||
somewhat, and is completely unnecessary, unless `readdir` is presumed
|
||||
to be an untrustworthy indicator of file existence.
|
||||
* `silent` When an unusual error is encountered when attempting to
|
||||
read a directory, a warning will be printed to stderr. Set the
|
||||
`silent` option to true to suppress these warnings.
|
||||
* `strict` When an unusual error is encountered when attempting to
|
||||
read a directory, the process will just continue on in search of
|
||||
other matches. Set the `strict` option to raise an error in these
|
||||
cases.
|
||||
* `cache` See `cache` property above. Pass in a previously generated
|
||||
cache object to save some fs calls.
|
||||
* `statCache` A cache of results of filesystem information, to prevent
|
||||
unnecessary stat calls. While it should not normally be necessary
|
||||
to set this, you may pass the statCache from one glob() call to the
|
||||
options object of another, if you know that the filesystem will not
|
||||
change between calls. (See "Race Conditions" below.)
|
||||
* `symlinks` A cache of known symbolic links. You may pass in a
|
||||
previously generated `symlinks` object to save `lstat` calls when
|
||||
resolving `**` matches.
|
||||
* `sync` DEPRECATED: use `glob.sync(pattern, opts)` instead.
|
||||
* `nounique` In some cases, brace-expanded patterns can result in the
|
||||
same file showing up multiple times in the result set. By default,
|
||||
this implementation prevents duplicates in the result set. Set this
|
||||
flag to disable that behavior.
|
||||
* `nonull` Set to never return an empty set, instead returning a set
|
||||
containing the pattern itself. This is the default in glob(3).
|
||||
* `debug` Set to enable debug logging in minimatch and glob.
|
||||
* `nobrace` Do not expand `{a,b}` and `{1..3}` brace sets.
|
||||
* `noglobstar` Do not match `**` against multiple filenames. (Ie,
|
||||
treat it as a normal `*` instead.)
|
||||
* `noext` Do not match `+(a|b)` "extglob" patterns.
|
||||
* `nocase` Perform a case-insensitive match. Note: on
|
||||
case-insensitive filesystems, non-magic patterns will match by
|
||||
default, since `stat` and `readdir` will not raise errors.
|
||||
* `matchBase` Perform a basename-only match if the pattern does not
|
||||
contain any slash characters. That is, `*.js` would be treated as
|
||||
equivalent to `**/*.js`, matching all js files in all directories.
|
||||
* `nodir` Do not match directories, only files. (Note: to match
|
||||
*only* directories, simply put a `/` at the end of the pattern.)
|
||||
* `ignore` Add a pattern or an array of patterns to exclude matches.
|
||||
* `follow` Follow symlinked directories when expanding `**` patterns.
|
||||
Note that this can result in a lot of duplicate references in the
|
||||
presence of cyclic links.
|
||||
* `realpath` Set to true to call `fs.realpath` on all of the results.
|
||||
In the case of a symlink that cannot be resolved, the full absolute
|
||||
path to the matched entry is returned (though it will usually be a
|
||||
broken symlink)
|
||||
* `nonegate` Suppress deprecated `negate` behavior. (See below.)
|
||||
Default=true
|
||||
* `nocomment` Suppress deprecated `comment` behavior. (See below.)
|
||||
Default=true
|
||||
|
||||
## Comparisons to other fnmatch/glob implementations
|
||||
|
||||
While strict compliance with the existing standards is a worthwhile
|
||||
goal, some discrepancies exist between node-glob and other
|
||||
implementations, and are intentional.
|
||||
|
||||
The double-star character `**` is supported by default, unless the
|
||||
`noglobstar` flag is set. This is supported in the manner of bsdglob
|
||||
and bash 4.3, where `**` only has special significance if it is the only
|
||||
thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but
|
||||
`a/**b` will not.
|
||||
|
||||
Note that symlinked directories are not crawled as part of a `**`,
|
||||
though their contents may match against subsequent portions of the
|
||||
pattern. This prevents infinite loops and duplicates and the like.
|
||||
|
||||
If an escaped pattern has no matches, and the `nonull` flag is set,
|
||||
then glob returns the pattern as-provided, rather than
|
||||
interpreting the character escapes. For example,
|
||||
`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than
|
||||
`"*a?"`. This is akin to setting the `nullglob` option in bash, except
|
||||
that it does not resolve escaped pattern characters.
|
||||
|
||||
If brace expansion is not disabled, then it is performed before any
|
||||
other interpretation of the glob pattern. Thus, a pattern like
|
||||
`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded
|
||||
**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are
|
||||
checked for validity. Since those two are valid, matching proceeds.
|
||||
|
||||
### Comments and Negation
|
||||
|
||||
**Note**: In version 5 of this module, negation and comments are
|
||||
**disabled** by default. You can explicitly set `nonegate:false` or
|
||||
`nocomment:false` to re-enable them. They are going away entirely in
|
||||
version 6.
|
||||
|
||||
The intent for negation would be for a pattern starting with `!` to
|
||||
match everything that *doesn't* match the supplied pattern. However,
|
||||
the implementation is weird. It is better to use the `ignore` option
|
||||
to set a pattern or set of patterns to exclude from matches. If you
|
||||
want the "everything except *x*" type of behavior, you can use `**` as
|
||||
the main pattern, and set an `ignore` for the things to exclude.
|
||||
|
||||
The comments feature is added in minimatch, primarily to more easily
|
||||
support use cases like ignore files, where a `#` at the start of a
|
||||
line makes the pattern "empty". However, in the context of a
|
||||
straightforward filesystem globber, "comments" don't make much sense.
|
||||
|
||||
## Windows
|
||||
|
||||
**Please only use forward-slashes in glob expressions.**
|
||||
|
||||
Though windows uses either `/` or `\` as its path separator, only `/`
|
||||
characters are used by this glob implementation. You must use
|
||||
forward-slashes **only** in glob expressions. Back-slashes will always
|
||||
be interpreted as escape characters, not path separators.
|
||||
|
||||
Results from absolute patterns such as `/foo/*` are mounted onto the
|
||||
root setting using `path.join`. On windows, this will by default result
|
||||
in `/foo/*` matching `C:\foo\bar.txt`.
|
||||
|
||||
## Race Conditions
|
||||
|
||||
Glob searching, by its very nature, is susceptible to race conditions,
|
||||
since it relies on directory walking and such.
|
||||
|
||||
As a result, it is possible that a file that exists when glob looks for
|
||||
it may have been deleted or modified by the time it returns the result.
|
||||
|
||||
As part of its internal implementation, this program caches all stat
|
||||
and readdir calls that it makes, in order to cut down on system
|
||||
overhead. However, this also makes it even more susceptible to races,
|
||||
especially if the cache or statCache objects are reused between glob
|
||||
calls.
|
||||
|
||||
Users are thus advised not to use a glob result as a guarantee of
|
||||
filesystem state in the face of rapid changes. For the vast majority
|
||||
of operations, this is never a problem.
|
||||
|
||||
## Contributing
|
||||
|
||||
Any change to behavior (including bugfixes) must come with a test.
|
||||
|
||||
Patches that fail tests or reduce performance will be rejected.
|
||||
|
||||
```
|
||||
# to run tests
|
||||
npm test
|
||||
|
||||
# to re-generate test fixtures
|
||||
npm run test-regen
|
||||
|
||||
# to benchmark against bash/zsh
|
||||
npm run bench
|
||||
|
||||
# to profile javascript
|
||||
npm run prof
|
||||
```
|
245
node_modules/cordova-common/node_modules/glob/common.js
generated
vendored
Normal file
245
node_modules/cordova-common/node_modules/glob/common.js
generated
vendored
Normal file
@ -0,0 +1,245 @@
|
||||
exports.alphasort = alphasort
|
||||
exports.alphasorti = alphasorti
|
||||
exports.setopts = setopts
|
||||
exports.ownProp = ownProp
|
||||
exports.makeAbs = makeAbs
|
||||
exports.finish = finish
|
||||
exports.mark = mark
|
||||
exports.isIgnored = isIgnored
|
||||
exports.childrenIgnored = childrenIgnored
|
||||
|
||||
function ownProp (obj, field) {
|
||||
return Object.prototype.hasOwnProperty.call(obj, field)
|
||||
}
|
||||
|
||||
var path = require("path")
|
||||
var minimatch = require("minimatch")
|
||||
var isAbsolute = require("path-is-absolute")
|
||||
var Minimatch = minimatch.Minimatch
|
||||
|
||||
function alphasorti (a, b) {
|
||||
return a.toLowerCase().localeCompare(b.toLowerCase())
|
||||
}
|
||||
|
||||
function alphasort (a, b) {
|
||||
return a.localeCompare(b)
|
||||
}
|
||||
|
||||
function setupIgnores (self, options) {
|
||||
self.ignore = options.ignore || []
|
||||
|
||||
if (!Array.isArray(self.ignore))
|
||||
self.ignore = [self.ignore]
|
||||
|
||||
if (self.ignore.length) {
|
||||
self.ignore = self.ignore.map(ignoreMap)
|
||||
}
|
||||
}
|
||||
|
||||
function ignoreMap (pattern) {
|
||||
var gmatcher = null
|
||||
if (pattern.slice(-3) === '/**') {
|
||||
var gpattern = pattern.replace(/(\/\*\*)+$/, '')
|
||||
gmatcher = new Minimatch(gpattern)
|
||||
}
|
||||
|
||||
return {
|
||||
matcher: new Minimatch(pattern),
|
||||
gmatcher: gmatcher
|
||||
}
|
||||
}
|
||||
|
||||
function setopts (self, pattern, options) {
|
||||
if (!options)
|
||||
options = {}
|
||||
|
||||
// base-matching: just use globstar for that.
|
||||
if (options.matchBase && -1 === pattern.indexOf("/")) {
|
||||
if (options.noglobstar) {
|
||||
throw new Error("base matching requires globstar")
|
||||
}
|
||||
pattern = "**/" + pattern
|
||||
}
|
||||
|
||||
self.silent = !!options.silent
|
||||
self.pattern = pattern
|
||||
self.strict = options.strict !== false
|
||||
self.realpath = !!options.realpath
|
||||
self.realpathCache = options.realpathCache || Object.create(null)
|
||||
self.follow = !!options.follow
|
||||
self.dot = !!options.dot
|
||||
self.mark = !!options.mark
|
||||
self.nodir = !!options.nodir
|
||||
if (self.nodir)
|
||||
self.mark = true
|
||||
self.sync = !!options.sync
|
||||
self.nounique = !!options.nounique
|
||||
self.nonull = !!options.nonull
|
||||
self.nosort = !!options.nosort
|
||||
self.nocase = !!options.nocase
|
||||
self.stat = !!options.stat
|
||||
self.noprocess = !!options.noprocess
|
||||
|
||||
self.maxLength = options.maxLength || Infinity
|
||||
self.cache = options.cache || Object.create(null)
|
||||
self.statCache = options.statCache || Object.create(null)
|
||||
self.symlinks = options.symlinks || Object.create(null)
|
||||
|
||||
setupIgnores(self, options)
|
||||
|
||||
self.changedCwd = false
|
||||
var cwd = process.cwd()
|
||||
if (!ownProp(options, "cwd"))
|
||||
self.cwd = cwd
|
||||
else {
|
||||
self.cwd = options.cwd
|
||||
self.changedCwd = path.resolve(options.cwd) !== cwd
|
||||
}
|
||||
|
||||
self.root = options.root || path.resolve(self.cwd, "/")
|
||||
self.root = path.resolve(self.root)
|
||||
if (process.platform === "win32")
|
||||
self.root = self.root.replace(/\\/g, "/")
|
||||
|
||||
self.nomount = !!options.nomount
|
||||
|
||||
// disable comments and negation unless the user explicitly
|
||||
// passes in false as the option.
|
||||
options.nonegate = options.nonegate === false ? false : true
|
||||
options.nocomment = options.nocomment === false ? false : true
|
||||
deprecationWarning(options)
|
||||
|
||||
self.minimatch = new Minimatch(pattern, options)
|
||||
self.options = self.minimatch.options
|
||||
}
|
||||
|
||||
// TODO(isaacs): remove entirely in v6
|
||||
// exported to reset in tests
|
||||
exports.deprecationWarned
|
||||
function deprecationWarning(options) {
|
||||
if (!options.nonegate || !options.nocomment) {
|
||||
if (process.noDeprecation !== true && !exports.deprecationWarned) {
|
||||
var msg = 'glob WARNING: comments and negation will be disabled in v6'
|
||||
if (process.throwDeprecation)
|
||||
throw new Error(msg)
|
||||
else if (process.traceDeprecation)
|
||||
console.trace(msg)
|
||||
else
|
||||
console.error(msg)
|
||||
|
||||
exports.deprecationWarned = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function finish (self) {
|
||||
var nou = self.nounique
|
||||
var all = nou ? [] : Object.create(null)
|
||||
|
||||
for (var i = 0, l = self.matches.length; i < l; i ++) {
|
||||
var matches = self.matches[i]
|
||||
if (!matches || Object.keys(matches).length === 0) {
|
||||
if (self.nonull) {
|
||||
// do like the shell, and spit out the literal glob
|
||||
var literal = self.minimatch.globSet[i]
|
||||
if (nou)
|
||||
all.push(literal)
|
||||
else
|
||||
all[literal] = true
|
||||
}
|
||||
} else {
|
||||
// had matches
|
||||
var m = Object.keys(matches)
|
||||
if (nou)
|
||||
all.push.apply(all, m)
|
||||
else
|
||||
m.forEach(function (m) {
|
||||
all[m] = true
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if (!nou)
|
||||
all = Object.keys(all)
|
||||
|
||||
if (!self.nosort)
|
||||
all = all.sort(self.nocase ? alphasorti : alphasort)
|
||||
|
||||
// at *some* point we statted all of these
|
||||
if (self.mark) {
|
||||
for (var i = 0; i < all.length; i++) {
|
||||
all[i] = self._mark(all[i])
|
||||
}
|
||||
if (self.nodir) {
|
||||
all = all.filter(function (e) {
|
||||
return !(/\/$/.test(e))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if (self.ignore.length)
|
||||
all = all.filter(function(m) {
|
||||
return !isIgnored(self, m)
|
||||
})
|
||||
|
||||
self.found = all
|
||||
}
|
||||
|
||||
function mark (self, p) {
|
||||
var abs = makeAbs(self, p)
|
||||
var c = self.cache[abs]
|
||||
var m = p
|
||||
if (c) {
|
||||
var isDir = c === 'DIR' || Array.isArray(c)
|
||||
var slash = p.slice(-1) === '/'
|
||||
|
||||
if (isDir && !slash)
|
||||
m += '/'
|
||||
else if (!isDir && slash)
|
||||
m = m.slice(0, -1)
|
||||
|
||||
if (m !== p) {
|
||||
var mabs = makeAbs(self, m)
|
||||
self.statCache[mabs] = self.statCache[abs]
|
||||
self.cache[mabs] = self.cache[abs]
|
||||
}
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
// lotta situps...
|
||||
function makeAbs (self, f) {
|
||||
var abs = f
|
||||
if (f.charAt(0) === '/') {
|
||||
abs = path.join(self.root, f)
|
||||
} else if (isAbsolute(f) || f === '') {
|
||||
abs = f
|
||||
} else if (self.changedCwd) {
|
||||
abs = path.resolve(self.cwd, f)
|
||||
} else {
|
||||
abs = path.resolve(f)
|
||||
}
|
||||
return abs
|
||||
}
|
||||
|
||||
|
||||
// Return true, if pattern ends with globstar '**', for the accompanying parent directory.
|
||||
// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents
|
||||
function isIgnored (self, path) {
|
||||
if (!self.ignore.length)
|
||||
return false
|
||||
|
||||
return self.ignore.some(function(item) {
|
||||
return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))
|
||||
})
|
||||
}
|
||||
|
||||
function childrenIgnored (self, path) {
|
||||
if (!self.ignore.length)
|
||||
return false
|
||||
|
||||
return self.ignore.some(function(item) {
|
||||
return !!(item.gmatcher && item.gmatcher.match(path))
|
||||
})
|
||||
}
|
752
node_modules/cordova-common/node_modules/glob/glob.js
generated
vendored
Normal file
752
node_modules/cordova-common/node_modules/glob/glob.js
generated
vendored
Normal file
@ -0,0 +1,752 @@
|
||||
// Approach:
|
||||
//
|
||||
// 1. Get the minimatch set
|
||||
// 2. For each pattern in the set, PROCESS(pattern, false)
|
||||
// 3. Store matches per-set, then uniq them
|
||||
//
|
||||
// PROCESS(pattern, inGlobStar)
|
||||
// Get the first [n] items from pattern that are all strings
|
||||
// Join these together. This is PREFIX.
|
||||
// If there is no more remaining, then stat(PREFIX) and
|
||||
// add to matches if it succeeds. END.
|
||||
//
|
||||
// If inGlobStar and PREFIX is symlink and points to dir
|
||||
// set ENTRIES = []
|
||||
// else readdir(PREFIX) as ENTRIES
|
||||
// If fail, END
|
||||
//
|
||||
// with ENTRIES
|
||||
// If pattern[n] is GLOBSTAR
|
||||
// // handle the case where the globstar match is empty
|
||||
// // by pruning it out, and testing the resulting pattern
|
||||
// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)
|
||||
// // handle other cases.
|
||||
// for ENTRY in ENTRIES (not dotfiles)
|
||||
// // attach globstar + tail onto the entry
|
||||
// // Mark that this entry is a globstar match
|
||||
// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)
|
||||
//
|
||||
// else // not globstar
|
||||
// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)
|
||||
// Test ENTRY against pattern[n]
|
||||
// If fails, continue
|
||||
// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])
|
||||
//
|
||||
// Caveat:
|
||||
// Cache all stats and readdirs results to minimize syscall. Since all
|
||||
// we ever care about is existence and directory-ness, we can just keep
|
||||
// `true` for files, and [children,...] for directories, or `false` for
|
||||
// things that don't exist.
|
||||
|
||||
module.exports = glob
|
||||
|
||||
var fs = require('fs')
|
||||
var minimatch = require('minimatch')
|
||||
var Minimatch = minimatch.Minimatch
|
||||
var inherits = require('inherits')
|
||||
var EE = require('events').EventEmitter
|
||||
var path = require('path')
|
||||
var assert = require('assert')
|
||||
var isAbsolute = require('path-is-absolute')
|
||||
var globSync = require('./sync.js')
|
||||
var common = require('./common.js')
|
||||
var alphasort = common.alphasort
|
||||
var alphasorti = common.alphasorti
|
||||
var setopts = common.setopts
|
||||
var ownProp = common.ownProp
|
||||
var inflight = require('inflight')
|
||||
var util = require('util')
|
||||
var childrenIgnored = common.childrenIgnored
|
||||
var isIgnored = common.isIgnored
|
||||
|
||||
var once = require('once')
|
||||
|
||||
function glob (pattern, options, cb) {
|
||||
if (typeof options === 'function') cb = options, options = {}
|
||||
if (!options) options = {}
|
||||
|
||||
if (options.sync) {
|
||||
if (cb)
|
||||
throw new TypeError('callback provided to sync glob')
|
||||
return globSync(pattern, options)
|
||||
}
|
||||
|
||||
return new Glob(pattern, options, cb)
|
||||
}
|
||||
|
||||
glob.sync = globSync
|
||||
var GlobSync = glob.GlobSync = globSync.GlobSync
|
||||
|
||||
// old api surface
|
||||
glob.glob = glob
|
||||
|
||||
glob.hasMagic = function (pattern, options_) {
|
||||
var options = util._extend({}, options_)
|
||||
options.noprocess = true
|
||||
|
||||
var g = new Glob(pattern, options)
|
||||
var set = g.minimatch.set
|
||||
if (set.length > 1)
|
||||
return true
|
||||
|
||||
for (var j = 0; j < set[0].length; j++) {
|
||||
if (typeof set[0][j] !== 'string')
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
glob.Glob = Glob
|
||||
inherits(Glob, EE)
|
||||
function Glob (pattern, options, cb) {
|
||||
if (typeof options === 'function') {
|
||||
cb = options
|
||||
options = null
|
||||
}
|
||||
|
||||
if (options && options.sync) {
|
||||
if (cb)
|
||||
throw new TypeError('callback provided to sync glob')
|
||||
return new GlobSync(pattern, options)
|
||||
}
|
||||
|
||||
if (!(this instanceof Glob))
|
||||
return new Glob(pattern, options, cb)
|
||||
|
||||
setopts(this, pattern, options)
|
||||
this._didRealPath = false
|
||||
|
||||
// process each pattern in the minimatch set
|
||||
var n = this.minimatch.set.length
|
||||
|
||||
// The matches are stored as {<filename>: true,...} so that
|
||||
// duplicates are automagically pruned.
|
||||
// Later, we do an Object.keys() on these.
|
||||
// Keep them as a list so we can fill in when nonull is set.
|
||||
this.matches = new Array(n)
|
||||
|
||||
if (typeof cb === 'function') {
|
||||
cb = once(cb)
|
||||
this.on('error', cb)
|
||||
this.on('end', function (matches) {
|
||||
cb(null, matches)
|
||||
})
|
||||
}
|
||||
|
||||
var self = this
|
||||
var n = this.minimatch.set.length
|
||||
this._processing = 0
|
||||
this.matches = new Array(n)
|
||||
|
||||
this._emitQueue = []
|
||||
this._processQueue = []
|
||||
this.paused = false
|
||||
|
||||
if (this.noprocess)
|
||||
return this
|
||||
|
||||
if (n === 0)
|
||||
return done()
|
||||
|
||||
for (var i = 0; i < n; i ++) {
|
||||
this._process(this.minimatch.set[i], i, false, done)
|
||||
}
|
||||
|
||||
function done () {
|
||||
--self._processing
|
||||
if (self._processing <= 0)
|
||||
self._finish()
|
||||
}
|
||||
}
|
||||
|
||||
Glob.prototype._finish = function () {
|
||||
assert(this instanceof Glob)
|
||||
if (this.aborted)
|
||||
return
|
||||
|
||||
if (this.realpath && !this._didRealpath)
|
||||
return this._realpath()
|
||||
|
||||
common.finish(this)
|
||||
this.emit('end', this.found)
|
||||
}
|
||||
|
||||
Glob.prototype._realpath = function () {
|
||||
if (this._didRealpath)
|
||||
return
|
||||
|
||||
this._didRealpath = true
|
||||
|
||||
var n = this.matches.length
|
||||
if (n === 0)
|
||||
return this._finish()
|
||||
|
||||
var self = this
|
||||
for (var i = 0; i < this.matches.length; i++)
|
||||
this._realpathSet(i, next)
|
||||
|
||||
function next () {
|
||||
if (--n === 0)
|
||||
self._finish()
|
||||
}
|
||||
}
|
||||
|
||||
Glob.prototype._realpathSet = function (index, cb) {
|
||||
var matchset = this.matches[index]
|
||||
if (!matchset)
|
||||
return cb()
|
||||
|
||||
var found = Object.keys(matchset)
|
||||
var self = this
|
||||
var n = found.length
|
||||
|
||||
if (n === 0)
|
||||
return cb()
|
||||
|
||||
var set = this.matches[index] = Object.create(null)
|
||||
found.forEach(function (p, i) {
|
||||
// If there's a problem with the stat, then it means that
|
||||
// one or more of the links in the realpath couldn't be
|
||||
// resolved. just return the abs value in that case.
|
||||
p = self._makeAbs(p)
|
||||
fs.realpath(p, self.realpathCache, function (er, real) {
|
||||
if (!er)
|
||||
set[real] = true
|
||||
else if (er.syscall === 'stat')
|
||||
set[p] = true
|
||||
else
|
||||
self.emit('error', er) // srsly wtf right here
|
||||
|
||||
if (--n === 0) {
|
||||
self.matches[index] = set
|
||||
cb()
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
Glob.prototype._mark = function (p) {
|
||||
return common.mark(this, p)
|
||||
}
|
||||
|
||||
Glob.prototype._makeAbs = function (f) {
|
||||
return common.makeAbs(this, f)
|
||||
}
|
||||
|
||||
Glob.prototype.abort = function () {
|
||||
this.aborted = true
|
||||
this.emit('abort')
|
||||
}
|
||||
|
||||
Glob.prototype.pause = function () {
|
||||
if (!this.paused) {
|
||||
this.paused = true
|
||||
this.emit('pause')
|
||||
}
|
||||
}
|
||||
|
||||
Glob.prototype.resume = function () {
|
||||
if (this.paused) {
|
||||
this.emit('resume')
|
||||
this.paused = false
|
||||
if (this._emitQueue.length) {
|
||||
var eq = this._emitQueue.slice(0)
|
||||
this._emitQueue.length = 0
|
||||
for (var i = 0; i < eq.length; i ++) {
|
||||
var e = eq[i]
|
||||
this._emitMatch(e[0], e[1])
|
||||
}
|
||||
}
|
||||
if (this._processQueue.length) {
|
||||
var pq = this._processQueue.slice(0)
|
||||
this._processQueue.length = 0
|
||||
for (var i = 0; i < pq.length; i ++) {
|
||||
var p = pq[i]
|
||||
this._processing--
|
||||
this._process(p[0], p[1], p[2], p[3])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Glob.prototype._process = function (pattern, index, inGlobStar, cb) {
|
||||
assert(this instanceof Glob)
|
||||
assert(typeof cb === 'function')
|
||||
|
||||
if (this.aborted)
|
||||
return
|
||||
|
||||
this._processing++
|
||||
if (this.paused) {
|
||||
this._processQueue.push([pattern, index, inGlobStar, cb])
|
||||
return
|
||||
}
|
||||
|
||||
//console.error('PROCESS %d', this._processing, pattern)
|
||||
|
||||
// Get the first [n] parts of pattern that are all strings.
|
||||
var n = 0
|
||||
while (typeof pattern[n] === 'string') {
|
||||
n ++
|
||||
}
|
||||
// now n is the index of the first one that is *not* a string.
|
||||
|
||||
// see if there's anything else
|
||||
var prefix
|
||||
switch (n) {
|
||||
// if not, then this is rather simple
|
||||
case pattern.length:
|
||||
this._processSimple(pattern.join('/'), index, cb)
|
||||
return
|
||||
|
||||
case 0:
|
||||
// pattern *starts* with some non-trivial item.
|
||||
// going to readdir(cwd), but not include the prefix in matches.
|
||||
prefix = null
|
||||
break
|
||||
|
||||
default:
|
||||
// pattern has some string bits in the front.
|
||||
// whatever it starts with, whether that's 'absolute' like /foo/bar,
|
||||
// or 'relative' like '../baz'
|
||||
prefix = pattern.slice(0, n).join('/')
|
||||
break
|
||||
}
|
||||
|
||||
var remain = pattern.slice(n)
|
||||
|
||||
// get the list of entries.
|
||||
var read
|
||||
if (prefix === null)
|
||||
read = '.'
|
||||
else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {
|
||||
if (!prefix || !isAbsolute(prefix))
|
||||
prefix = '/' + prefix
|
||||
read = prefix
|
||||
} else
|
||||
read = prefix
|
||||
|
||||
var abs = this._makeAbs(read)
|
||||
|
||||
//if ignored, skip _processing
|
||||
if (childrenIgnored(this, read))
|
||||
return cb()
|
||||
|
||||
var isGlobStar = remain[0] === minimatch.GLOBSTAR
|
||||
if (isGlobStar)
|
||||
this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)
|
||||
else
|
||||
this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)
|
||||
}
|
||||
|
||||
Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {
|
||||
var self = this
|
||||
this._readdir(abs, inGlobStar, function (er, entries) {
|
||||
return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)
|
||||
})
|
||||
}
|
||||
|
||||
Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
|
||||
|
||||
// if the abs isn't a dir, then nothing can match!
|
||||
if (!entries)
|
||||
return cb()
|
||||
|
||||
// It will only match dot entries if it starts with a dot, or if
|
||||
// dot is set. Stuff like @(.foo|.bar) isn't allowed.
|
||||
var pn = remain[0]
|
||||
var negate = !!this.minimatch.negate
|
||||
var rawGlob = pn._glob
|
||||
var dotOk = this.dot || rawGlob.charAt(0) === '.'
|
||||
|
||||
var matchedEntries = []
|
||||
for (var i = 0; i < entries.length; i++) {
|
||||
var e = entries[i]
|
||||
if (e.charAt(0) !== '.' || dotOk) {
|
||||
var m
|
||||
if (negate && !prefix) {
|
||||
m = !e.match(pn)
|
||||
} else {
|
||||
m = e.match(pn)
|
||||
}
|
||||
if (m)
|
||||
matchedEntries.push(e)
|
||||
}
|
||||
}
|
||||
|
||||
//console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)
|
||||
|
||||
var len = matchedEntries.length
|
||||
// If there are no matched entries, then nothing matches.
|
||||
if (len === 0)
|
||||
return cb()
|
||||
|
||||
// if this is the last remaining pattern bit, then no need for
|
||||
// an additional stat *unless* the user has specified mark or
|
||||
// stat explicitly. We know they exist, since readdir returned
|
||||
// them.
|
||||
|
||||
if (remain.length === 1 && !this.mark && !this.stat) {
|
||||
if (!this.matches[index])
|
||||
this.matches[index] = Object.create(null)
|
||||
|
||||
for (var i = 0; i < len; i ++) {
|
||||
var e = matchedEntries[i]
|
||||
if (prefix) {
|
||||
if (prefix !== '/')
|
||||
e = prefix + '/' + e
|
||||
else
|
||||
e = prefix + e
|
||||
}
|
||||
|
||||
if (e.charAt(0) === '/' && !this.nomount) {
|
||||
e = path.join(this.root, e)
|
||||
}
|
||||
this._emitMatch(index, e)
|
||||
}
|
||||
// This was the last one, and no stats were needed
|
||||
return cb()
|
||||
}
|
||||
|
||||
// now test all matched entries as stand-ins for that part
|
||||
// of the pattern.
|
||||
remain.shift()
|
||||
for (var i = 0; i < len; i ++) {
|
||||
var e = matchedEntries[i]
|
||||
var newPattern
|
||||
if (prefix) {
|
||||
if (prefix !== '/')
|
||||
e = prefix + '/' + e
|
||||
else
|
||||
e = prefix + e
|
||||
}
|
||||
this._process([e].concat(remain), index, inGlobStar, cb)
|
||||
}
|
||||
cb()
|
||||
}
|
||||
|
||||
Glob.prototype._emitMatch = function (index, e) {
|
||||
if (this.aborted)
|
||||
return
|
||||
|
||||
if (this.matches[index][e])
|
||||
return
|
||||
|
||||
if (isIgnored(this, e))
|
||||
return
|
||||
|
||||
if (this.paused) {
|
||||
this._emitQueue.push([index, e])
|
||||
return
|
||||
}
|
||||
|
||||
var abs = this._makeAbs(e)
|
||||
|
||||
if (this.nodir) {
|
||||
var c = this.cache[abs]
|
||||
if (c === 'DIR' || Array.isArray(c))
|
||||
return
|
||||
}
|
||||
|
||||
if (this.mark)
|
||||
e = this._mark(e)
|
||||
|
||||
this.matches[index][e] = true
|
||||
|
||||
var st = this.statCache[abs]
|
||||
if (st)
|
||||
this.emit('stat', e, st)
|
||||
|
||||
this.emit('match', e)
|
||||
}
|
||||
|
||||
Glob.prototype._readdirInGlobStar = function (abs, cb) {
|
||||
if (this.aborted)
|
||||
return
|
||||
|
||||
// follow all symlinked directories forever
|
||||
// just proceed as if this is a non-globstar situation
|
||||
if (this.follow)
|
||||
return this._readdir(abs, false, cb)
|
||||
|
||||
var lstatkey = 'lstat\0' + abs
|
||||
var self = this
|
||||
var lstatcb = inflight(lstatkey, lstatcb_)
|
||||
|
||||
if (lstatcb)
|
||||
fs.lstat(abs, lstatcb)
|
||||
|
||||
function lstatcb_ (er, lstat) {
|
||||
if (er)
|
||||
return cb()
|
||||
|
||||
var isSym = lstat.isSymbolicLink()
|
||||
self.symlinks[abs] = isSym
|
||||
|
||||
// If it's not a symlink or a dir, then it's definitely a regular file.
|
||||
// don't bother doing a readdir in that case.
|
||||
if (!isSym && !lstat.isDirectory()) {
|
||||
self.cache[abs] = 'FILE'
|
||||
cb()
|
||||
} else
|
||||
self._readdir(abs, false, cb)
|
||||
}
|
||||
}
|
||||
|
||||
Glob.prototype._readdir = function (abs, inGlobStar, cb) {
|
||||
if (this.aborted)
|
||||
return
|
||||
|
||||
cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb)
|
||||
if (!cb)
|
||||
return
|
||||
|
||||
//console.error('RD %j %j', +inGlobStar, abs)
|
||||
if (inGlobStar && !ownProp(this.symlinks, abs))
|
||||
return this._readdirInGlobStar(abs, cb)
|
||||
|
||||
if (ownProp(this.cache, abs)) {
|
||||
var c = this.cache[abs]
|
||||
if (!c || c === 'FILE')
|
||||
return cb()
|
||||
|
||||
if (Array.isArray(c))
|
||||
return cb(null, c)
|
||||
}
|
||||
|
||||
var self = this
|
||||
fs.readdir(abs, readdirCb(this, abs, cb))
|
||||
}
|
||||
|
||||
function readdirCb (self, abs, cb) {
|
||||
return function (er, entries) {
|
||||
if (er)
|
||||
self._readdirError(abs, er, cb)
|
||||
else
|
||||
self._readdirEntries(abs, entries, cb)
|
||||
}
|
||||
}
|
||||
|
||||
Glob.prototype._readdirEntries = function (abs, entries, cb) {
|
||||
if (this.aborted)
|
||||
return
|
||||
|
||||
// if we haven't asked to stat everything, then just
|
||||
// assume that everything in there exists, so we can avoid
|
||||
// having to stat it a second time.
|
||||
if (!this.mark && !this.stat) {
|
||||
for (var i = 0; i < entries.length; i ++) {
|
||||
var e = entries[i]
|
||||
if (abs === '/')
|
||||
e = abs + e
|
||||
else
|
||||
e = abs + '/' + e
|
||||
this.cache[e] = true
|
||||
}
|
||||
}
|
||||
|
||||
this.cache[abs] = entries
|
||||
return cb(null, entries)
|
||||
}
|
||||
|
||||
Glob.prototype._readdirError = function (f, er, cb) {
|
||||
if (this.aborted)
|
||||
return
|
||||
|
||||
// handle errors, and cache the information
|
||||
switch (er.code) {
|
||||
case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205
|
||||
case 'ENOTDIR': // totally normal. means it *does* exist.
|
||||
this.cache[this._makeAbs(f)] = 'FILE'
|
||||
break
|
||||
|
||||
case 'ENOENT': // not terribly unusual
|
||||
case 'ELOOP':
|
||||
case 'ENAMETOOLONG':
|
||||
case 'UNKNOWN':
|
||||
this.cache[this._makeAbs(f)] = false
|
||||
break
|
||||
|
||||
default: // some unusual error. Treat as failure.
|
||||
this.cache[this._makeAbs(f)] = false
|
||||
if (this.strict) {
|
||||
this.emit('error', er)
|
||||
// If the error is handled, then we abort
|
||||
// if not, we threw out of here
|
||||
this.abort()
|
||||
}
|
||||
if (!this.silent)
|
||||
console.error('glob error', er)
|
||||
break
|
||||
}
|
||||
|
||||
return cb()
|
||||
}
|
||||
|
||||
Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {
|
||||
var self = this
|
||||
this._readdir(abs, inGlobStar, function (er, entries) {
|
||||
self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
|
||||
//console.error('pgs2', prefix, remain[0], entries)
|
||||
|
||||
// no entries means not a dir, so it can never have matches
|
||||
// foo.txt/** doesn't match foo.txt
|
||||
if (!entries)
|
||||
return cb()
|
||||
|
||||
// test without the globstar, and with every child both below
|
||||
// and replacing the globstar.
|
||||
var remainWithoutGlobStar = remain.slice(1)
|
||||
var gspref = prefix ? [ prefix ] : []
|
||||
var noGlobStar = gspref.concat(remainWithoutGlobStar)
|
||||
|
||||
// the noGlobStar pattern exits the inGlobStar state
|
||||
this._process(noGlobStar, index, false, cb)
|
||||
|
||||
var isSym = this.symlinks[abs]
|
||||
var len = entries.length
|
||||
|
||||
// If it's a symlink, and we're in a globstar, then stop
|
||||
if (isSym && inGlobStar)
|
||||
return cb()
|
||||
|
||||
for (var i = 0; i < len; i++) {
|
||||
var e = entries[i]
|
||||
if (e.charAt(0) === '.' && !this.dot)
|
||||
continue
|
||||
|
||||
// these two cases enter the inGlobStar state
|
||||
var instead = gspref.concat(entries[i], remainWithoutGlobStar)
|
||||
this._process(instead, index, true, cb)
|
||||
|
||||
var below = gspref.concat(entries[i], remain)
|
||||
this._process(below, index, true, cb)
|
||||
}
|
||||
|
||||
cb()
|
||||
}
|
||||
|
||||
Glob.prototype._processSimple = function (prefix, index, cb) {
|
||||
// XXX review this. Shouldn't it be doing the mounting etc
|
||||
// before doing stat? kinda weird?
|
||||
var self = this
|
||||
this._stat(prefix, function (er, exists) {
|
||||
self._processSimple2(prefix, index, er, exists, cb)
|
||||
})
|
||||
}
|
||||
Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {
|
||||
|
||||
//console.error('ps2', prefix, exists)
|
||||
|
||||
if (!this.matches[index])
|
||||
this.matches[index] = Object.create(null)
|
||||
|
||||
// If it doesn't exist, then just mark the lack of results
|
||||
if (!exists)
|
||||
return cb()
|
||||
|
||||
if (prefix && isAbsolute(prefix) && !this.nomount) {
|
||||
var trail = /[\/\\]$/.test(prefix)
|
||||
if (prefix.charAt(0) === '/') {
|
||||
prefix = path.join(this.root, prefix)
|
||||
} else {
|
||||
prefix = path.resolve(this.root, prefix)
|
||||
if (trail)
|
||||
prefix += '/'
|
||||
}
|
||||
}
|
||||
|
||||
if (process.platform === 'win32')
|
||||
prefix = prefix.replace(/\\/g, '/')
|
||||
|
||||
// Mark this as a match
|
||||
this._emitMatch(index, prefix)
|
||||
cb()
|
||||
}
|
||||
|
||||
// Returns either 'DIR', 'FILE', or false
|
||||
Glob.prototype._stat = function (f, cb) {
|
||||
var abs = this._makeAbs(f)
|
||||
var needDir = f.slice(-1) === '/'
|
||||
|
||||
if (f.length > this.maxLength)
|
||||
return cb()
|
||||
|
||||
if (!this.stat && ownProp(this.cache, abs)) {
|
||||
var c = this.cache[abs]
|
||||
|
||||
if (Array.isArray(c))
|
||||
c = 'DIR'
|
||||
|
||||
// It exists, but maybe not how we need it
|
||||
if (!needDir || c === 'DIR')
|
||||
return cb(null, c)
|
||||
|
||||
if (needDir && c === 'FILE')
|
||||
return cb()
|
||||
|
||||
// otherwise we have to stat, because maybe c=true
|
||||
// if we know it exists, but not what it is.
|
||||
}
|
||||
|
||||
var exists
|
||||
var stat = this.statCache[abs]
|
||||
if (stat !== undefined) {
|
||||
if (stat === false)
|
||||
return cb(null, stat)
|
||||
else {
|
||||
var type = stat.isDirectory() ? 'DIR' : 'FILE'
|
||||
if (needDir && type === 'FILE')
|
||||
return cb()
|
||||
else
|
||||
return cb(null, type, stat)
|
||||
}
|
||||
}
|
||||
|
||||
var self = this
|
||||
var statcb = inflight('stat\0' + abs, lstatcb_)
|
||||
if (statcb)
|
||||
fs.lstat(abs, statcb)
|
||||
|
||||
function lstatcb_ (er, lstat) {
|
||||
if (lstat && lstat.isSymbolicLink()) {
|
||||
// If it's a symlink, then treat it as the target, unless
|
||||
// the target does not exist, then treat it as a file.
|
||||
return fs.stat(abs, function (er, stat) {
|
||||
if (er)
|
||||
self._stat2(f, abs, null, lstat, cb)
|
||||
else
|
||||
self._stat2(f, abs, er, stat, cb)
|
||||
})
|
||||
} else {
|
||||
self._stat2(f, abs, er, lstat, cb)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Glob.prototype._stat2 = function (f, abs, er, stat, cb) {
|
||||
if (er) {
|
||||
this.statCache[abs] = false
|
||||
return cb()
|
||||
}
|
||||
|
||||
var needDir = f.slice(-1) === '/'
|
||||
this.statCache[abs] = stat
|
||||
|
||||
if (abs.slice(-1) === '/' && !stat.isDirectory())
|
||||
return cb(null, false, stat)
|
||||
|
||||
var c = stat.isDirectory() ? 'DIR' : 'FILE'
|
||||
this.cache[abs] = this.cache[abs] || c
|
||||
|
||||
if (needDir && c !== 'DIR')
|
||||
return cb()
|
||||
|
||||
return cb(null, c, stat)
|
||||
}
|
17
node_modules/cordova-common/node_modules/glob/node_modules/inflight/.eslintrc
generated
vendored
Normal file
17
node_modules/cordova-common/node_modules/glob/node_modules/inflight/.eslintrc
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"env" : {
|
||||
"node" : true
|
||||
},
|
||||
"rules" : {
|
||||
"semi": [2, "never"],
|
||||
"strict": 0,
|
||||
"quotes": [1, "single", "avoid-escape"],
|
||||
"no-use-before-define": 0,
|
||||
"curly": 0,
|
||||
"no-underscore-dangle": 0,
|
||||
"no-lonely-if": 1,
|
||||
"no-unused-vars": [2, {"vars" : "all", "args" : "after-used"}],
|
||||
"no-mixed-requires": 0,
|
||||
"space-infix-ops": 0
|
||||
}
|
||||
}
|
15
node_modules/cordova-common/node_modules/glob/node_modules/inflight/LICENSE
generated
vendored
Normal file
15
node_modules/cordova-common/node_modules/glob/node_modules/inflight/LICENSE
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
The ISC License
|
||||
|
||||
Copyright (c) Isaac Z. Schlueter
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
||||
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
37
node_modules/cordova-common/node_modules/glob/node_modules/inflight/README.md
generated
vendored
Normal file
37
node_modules/cordova-common/node_modules/glob/node_modules/inflight/README.md
generated
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
# inflight
|
||||
|
||||
Add callbacks to requests in flight to avoid async duplication
|
||||
|
||||
## USAGE
|
||||
|
||||
```javascript
|
||||
var inflight = require('inflight')
|
||||
|
||||
// some request that does some stuff
|
||||
function req(key, callback) {
|
||||
// key is any random string. like a url or filename or whatever.
|
||||
//
|
||||
// will return either a falsey value, indicating that the
|
||||
// request for this key is already in flight, or a new callback
|
||||
// which when called will call all callbacks passed to inflightk
|
||||
// with the same key
|
||||
callback = inflight(key, callback)
|
||||
|
||||
// If we got a falsey value back, then there's already a req going
|
||||
if (!callback) return
|
||||
|
||||
// this is where you'd fetch the url or whatever
|
||||
// callback is also once()-ified, so it can safely be assigned
|
||||
// to multiple events etc. First call wins.
|
||||
setTimeout(function() {
|
||||
callback(null, key)
|
||||
}, 100)
|
||||
}
|
||||
|
||||
// only assigns a single setTimeout
|
||||
// when it dings, all cbs get called
|
||||
req('foo', cb1)
|
||||
req('foo', cb2)
|
||||
req('foo', cb3)
|
||||
req('foo', cb4)
|
||||
```
|
44
node_modules/cordova-common/node_modules/glob/node_modules/inflight/inflight.js
generated
vendored
Normal file
44
node_modules/cordova-common/node_modules/glob/node_modules/inflight/inflight.js
generated
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
var wrappy = require('wrappy')
|
||||
var reqs = Object.create(null)
|
||||
var once = require('once')
|
||||
|
||||
module.exports = wrappy(inflight)
|
||||
|
||||
function inflight (key, cb) {
|
||||
if (reqs[key]) {
|
||||
reqs[key].push(cb)
|
||||
return null
|
||||
} else {
|
||||
reqs[key] = [cb]
|
||||
return makeres(key)
|
||||
}
|
||||
}
|
||||
|
||||
function makeres (key) {
|
||||
return once(function RES () {
|
||||
var cbs = reqs[key]
|
||||
var len = cbs.length
|
||||
var args = slice(arguments)
|
||||
for (var i = 0; i < len; i++) {
|
||||
cbs[i].apply(null, args)
|
||||
}
|
||||
if (cbs.length > len) {
|
||||
// added more in the interim.
|
||||
// de-zalgo, just in case, but don't call again.
|
||||
cbs.splice(0, len)
|
||||
process.nextTick(function () {
|
||||
RES.apply(null, args)
|
||||
})
|
||||
} else {
|
||||
delete reqs[key]
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function slice (args) {
|
||||
var length = args.length
|
||||
var array = []
|
||||
|
||||
for (var i = 0; i < length; i++) array[i] = args[i]
|
||||
return array
|
||||
}
|
61
node_modules/cordova-common/node_modules/glob/node_modules/inflight/package.json
generated
vendored
Normal file
61
node_modules/cordova-common/node_modules/glob/node_modules/inflight/package.json
generated
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
{
|
||||
"name": "inflight",
|
||||
"version": "1.0.4",
|
||||
"description": "Add callbacks to requests in flight to avoid async duplication",
|
||||
"main": "inflight.js",
|
||||
"dependencies": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"tap": "^0.4.10"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "tap test.js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/isaacs/inflight.git"
|
||||
},
|
||||
"author": {
|
||||
"name": "Isaac Z. Schlueter",
|
||||
"email": "i@izs.me",
|
||||
"url": "http://blog.izs.me/"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/isaacs/inflight/issues"
|
||||
},
|
||||
"homepage": "https://github.com/isaacs/inflight",
|
||||
"license": "ISC",
|
||||
"gitHead": "c7b5531d572a867064d4a1da9e013e8910b7d1ba",
|
||||
"_id": "inflight@1.0.4",
|
||||
"_shasum": "6cbb4521ebd51ce0ec0a936bfd7657ef7e9b172a",
|
||||
"_from": "inflight@>=1.0.4 <2.0.0",
|
||||
"_npmVersion": "2.1.3",
|
||||
"_nodeVersion": "0.10.32",
|
||||
"_npmUser": {
|
||||
"name": "othiym23",
|
||||
"email": "ogd@aoaioxxysz.net"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "isaacs",
|
||||
"email": "i@izs.me"
|
||||
},
|
||||
{
|
||||
"name": "othiym23",
|
||||
"email": "ogd@aoaioxxysz.net"
|
||||
},
|
||||
{
|
||||
"name": "iarna",
|
||||
"email": "me@re-becca.org"
|
||||
}
|
||||
],
|
||||
"dist": {
|
||||
"shasum": "6cbb4521ebd51ce0ec0a936bfd7657ef7e9b172a",
|
||||
"tarball": "http://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz"
|
||||
},
|
||||
"directories": {},
|
||||
"_resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz",
|
||||
"readme": "ERROR: No README data found!"
|
||||
}
|
97
node_modules/cordova-common/node_modules/glob/node_modules/inflight/test.js
generated
vendored
Normal file
97
node_modules/cordova-common/node_modules/glob/node_modules/inflight/test.js
generated
vendored
Normal file
@ -0,0 +1,97 @@
|
||||
var test = require('tap').test
|
||||
var inf = require('./inflight.js')
|
||||
|
||||
|
||||
function req (key, cb) {
|
||||
cb = inf(key, cb)
|
||||
if (cb) setTimeout(function () {
|
||||
cb(key)
|
||||
cb(key)
|
||||
})
|
||||
return cb
|
||||
}
|
||||
|
||||
test('basic', function (t) {
|
||||
var calleda = false
|
||||
var a = req('key', function (k) {
|
||||
t.notOk(calleda)
|
||||
calleda = true
|
||||
t.equal(k, 'key')
|
||||
if (calledb) t.end()
|
||||
})
|
||||
t.ok(a, 'first returned cb function')
|
||||
|
||||
var calledb = false
|
||||
var b = req('key', function (k) {
|
||||
t.notOk(calledb)
|
||||
calledb = true
|
||||
t.equal(k, 'key')
|
||||
if (calleda) t.end()
|
||||
})
|
||||
|
||||
t.notOk(b, 'second should get falsey inflight response')
|
||||
})
|
||||
|
||||
test('timing', function (t) {
|
||||
var expect = [
|
||||
'method one',
|
||||
'start one',
|
||||
'end one',
|
||||
'two',
|
||||
'tick',
|
||||
'three'
|
||||
]
|
||||
var i = 0
|
||||
|
||||
function log (m) {
|
||||
t.equal(m, expect[i], m + ' === ' + expect[i])
|
||||
++i
|
||||
if (i === expect.length)
|
||||
t.end()
|
||||
}
|
||||
|
||||
function method (name, cb) {
|
||||
log('method ' + name)
|
||||
process.nextTick(cb)
|
||||
}
|
||||
|
||||
var one = inf('foo', function () {
|
||||
log('start one')
|
||||
var three = inf('foo', function () {
|
||||
log('three')
|
||||
})
|
||||
if (three) method('three', three)
|
||||
log('end one')
|
||||
})
|
||||
|
||||
method('one', one)
|
||||
|
||||
var two = inf('foo', function () {
|
||||
log('two')
|
||||
})
|
||||
if (two) method('one', two)
|
||||
|
||||
process.nextTick(log.bind(null, 'tick'))
|
||||
})
|
||||
|
||||
test('parameters', function (t) {
|
||||
t.plan(8)
|
||||
|
||||
var a = inf('key', function (first, second, third) {
|
||||
t.equal(first, 1)
|
||||
t.equal(second, 2)
|
||||
t.equal(third, 3)
|
||||
})
|
||||
t.ok(a, 'first returned cb function')
|
||||
|
||||
var b = inf('key', function (first, second, third) {
|
||||
t.equal(first, 1)
|
||||
t.equal(second, 2)
|
||||
t.equal(third, 3)
|
||||
})
|
||||
t.notOk(b, 'second should get falsey inflight response')
|
||||
|
||||
setTimeout(function () {
|
||||
a(1, 2, 3)
|
||||
})
|
||||
})
|
16
node_modules/cordova-common/node_modules/glob/node_modules/inherits/LICENSE
generated
vendored
Normal file
16
node_modules/cordova-common/node_modules/glob/node_modules/inherits/LICENSE
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
The ISC License
|
||||
|
||||
Copyright (c) Isaac Z. Schlueter
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
|
42
node_modules/cordova-common/node_modules/glob/node_modules/inherits/README.md
generated
vendored
Normal file
42
node_modules/cordova-common/node_modules/glob/node_modules/inherits/README.md
generated
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
Browser-friendly inheritance fully compatible with standard node.js
|
||||
[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).
|
||||
|
||||
This package exports standard `inherits` from node.js `util` module in
|
||||
node environment, but also provides alternative browser-friendly
|
||||
implementation through [browser
|
||||
field](https://gist.github.com/shtylman/4339901). Alternative
|
||||
implementation is a literal copy of standard one located in standalone
|
||||
module to avoid requiring of `util`. It also has a shim for old
|
||||
browsers with no `Object.create` support.
|
||||
|
||||
While keeping you sure you are using standard `inherits`
|
||||
implementation in node.js environment, it allows bundlers such as
|
||||
[browserify](https://github.com/substack/node-browserify) to not
|
||||
include full `util` package to your client code if all you need is
|
||||
just `inherits` function. It worth, because browser shim for `util`
|
||||
package is large and `inherits` is often the single function you need
|
||||
from it.
|
||||
|
||||
It's recommended to use this package instead of
|
||||
`require('util').inherits` for any code that has chances to be used
|
||||
not only in node.js but in browser too.
|
||||
|
||||
## usage
|
||||
|
||||
```js
|
||||
var inherits = require('inherits');
|
||||
// then use exactly as the standard one
|
||||
```
|
||||
|
||||
## note on version ~1.0
|
||||
|
||||
Version ~1.0 had completely different motivation and is not compatible
|
||||
neither with 2.0 nor with standard node.js `inherits`.
|
||||
|
||||
If you are using version ~1.0 and planning to switch to ~2.0, be
|
||||
careful:
|
||||
|
||||
* new version uses `super_` instead of `super` for referencing
|
||||
superclass
|
||||
* new version overwrites current prototype while old one preserves any
|
||||
existing fields on it
|
1
node_modules/cordova-common/node_modules/glob/node_modules/inherits/inherits.js
generated
vendored
Normal file
1
node_modules/cordova-common/node_modules/glob/node_modules/inherits/inherits.js
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
module.exports = require('util').inherits
|
23
node_modules/cordova-common/node_modules/glob/node_modules/inherits/inherits_browser.js
generated
vendored
Normal file
23
node_modules/cordova-common/node_modules/glob/node_modules/inherits/inherits_browser.js
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
if (typeof Object.create === 'function') {
|
||||
// implementation from standard node.js 'util' module
|
||||
module.exports = function inherits(ctor, superCtor) {
|
||||
ctor.super_ = superCtor
|
||||
ctor.prototype = Object.create(superCtor.prototype, {
|
||||
constructor: {
|
||||
value: ctor,
|
||||
enumerable: false,
|
||||
writable: true,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
};
|
||||
} else {
|
||||
// old school shim for old browsers
|
||||
module.exports = function inherits(ctor, superCtor) {
|
||||
ctor.super_ = superCtor
|
||||
var TempCtor = function () {}
|
||||
TempCtor.prototype = superCtor.prototype
|
||||
ctor.prototype = new TempCtor()
|
||||
ctor.prototype.constructor = ctor
|
||||
}
|
||||
}
|
50
node_modules/cordova-common/node_modules/glob/node_modules/inherits/package.json
generated
vendored
Normal file
50
node_modules/cordova-common/node_modules/glob/node_modules/inherits/package.json
generated
vendored
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"name": "inherits",
|
||||
"description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
|
||||
"version": "2.0.1",
|
||||
"keywords": [
|
||||
"inheritance",
|
||||
"class",
|
||||
"klass",
|
||||
"oop",
|
||||
"object-oriented",
|
||||
"inherits",
|
||||
"browser",
|
||||
"browserify"
|
||||
],
|
||||
"main": "./inherits.js",
|
||||
"browser": "./inherits_browser.js",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/isaacs/inherits.git"
|
||||
},
|
||||
"license": "ISC",
|
||||
"scripts": {
|
||||
"test": "node test"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/isaacs/inherits/issues"
|
||||
},
|
||||
"_id": "inherits@2.0.1",
|
||||
"dist": {
|
||||
"shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
|
||||
"tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
|
||||
},
|
||||
"_from": "inherits@>=2.0.0 <3.0.0",
|
||||
"_npmVersion": "1.3.8",
|
||||
"_npmUser": {
|
||||
"name": "isaacs",
|
||||
"email": "i@izs.me"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "isaacs",
|
||||
"email": "i@izs.me"
|
||||
}
|
||||
],
|
||||
"directories": {},
|
||||
"_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
|
||||
"_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
|
||||
"readme": "ERROR: No README data found!",
|
||||
"homepage": "https://github.com/isaacs/inherits#readme"
|
||||
}
|
25
node_modules/cordova-common/node_modules/glob/node_modules/inherits/test.js
generated
vendored
Normal file
25
node_modules/cordova-common/node_modules/glob/node_modules/inherits/test.js
generated
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
var inherits = require('./inherits.js')
|
||||
var assert = require('assert')
|
||||
|
||||
function test(c) {
|
||||
assert(c.constructor === Child)
|
||||
assert(c.constructor.super_ === Parent)
|
||||
assert(Object.getPrototypeOf(c) === Child.prototype)
|
||||
assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype)
|
||||
assert(c instanceof Child)
|
||||
assert(c instanceof Parent)
|
||||
}
|
||||
|
||||
function Child() {
|
||||
Parent.call(this)
|
||||
test(this)
|
||||
}
|
||||
|
||||
function Parent() {}
|
||||
|
||||
inherits(Child, Parent)
|
||||
|
||||
var c = new Child
|
||||
test(c)
|
||||
|
||||
console.log('ok')
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user