cordova-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From shaz...@apache.org
Subject [03/15] ios commit: Update bundled ios-sim to 6.0.0
Date Sun, 18 Jun 2017 22:32:14 GMT
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLNode.js
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLNode.js b/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLNode.js
new file mode 100644
index 0000000..1b3b456
--- /dev/null
+++ b/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLNode.js
@@ -0,0 +1,432 @@
+// Generated by CoffeeScript 1.10.0
+(function() {
+  var XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLElement, XMLNode, XMLProcessingInstruction, XMLRaw, XMLText, isEmpty, isFunction, isObject, ref,
+    hasProp = {}.hasOwnProperty;
+
+  ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isEmpty = ref.isEmpty;
+
+  XMLElement = null;
+
+  XMLCData = null;
+
+  XMLComment = null;
+
+  XMLDeclaration = null;
+
+  XMLDocType = null;
+
+  XMLRaw = null;
+
+  XMLText = null;
+
+  XMLProcessingInstruction = null;
+
+  module.exports = XMLNode = (function() {
+    function XMLNode(parent) {
+      this.parent = parent;
+      if (this.parent) {
+        this.options = this.parent.options;
+        this.stringify = this.parent.stringify;
+      }
+      this.children = [];
+      if (!XMLElement) {
+        XMLElement = require('./XMLElement');
+        XMLCData = require('./XMLCData');
+        XMLComment = require('./XMLComment');
+        XMLDeclaration = require('./XMLDeclaration');
+        XMLDocType = require('./XMLDocType');
+        XMLRaw = require('./XMLRaw');
+        XMLText = require('./XMLText');
+        XMLProcessingInstruction = require('./XMLProcessingInstruction');
+      }
+    }
+
+    XMLNode.prototype.element = function(name, attributes, text) {
+      var childNode, item, j, k, key, lastChild, len, len1, ref1, val;
+      lastChild = null;
+      if (attributes == null) {
+        attributes = {};
+      }
+      attributes = attributes.valueOf();
+      if (!isObject(attributes)) {
+        ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];
+      }
+      if (name != null) {
+        name = name.valueOf();
+      }
+      if (Array.isArray(name)) {
+        for (j = 0, len = name.length; j < len; j++) {
+          item = name[j];
+          lastChild = this.element(item);
+        }
+      } else if (isFunction(name)) {
+        lastChild = this.element(name.apply());
+      } else if (isObject(name)) {
+        for (key in name) {
+          if (!hasProp.call(name, key)) continue;
+          val = name[key];
+          if (isFunction(val)) {
+            val = val.apply();
+          }
+          if ((isObject(val)) && (isEmpty(val))) {
+            val = null;
+          }
+          if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) {
+            lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val);
+          } else if (!this.options.separateArrayItems && Array.isArray(val)) {
+            for (k = 0, len1 = val.length; k < len1; k++) {
+              item = val[k];
+              childNode = {};
+              childNode[key] = item;
+              lastChild = this.element(childNode);
+            }
+          } else if (isObject(val)) {
+            lastChild = this.element(key);
+            lastChild.element(val);
+          } else {
+            lastChild = this.element(key, val);
+          }
+        }
+      } else {
+        if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) {
+          lastChild = this.text(text);
+        } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) {
+          lastChild = this.cdata(text);
+        } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) {
+          lastChild = this.comment(text);
+        } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) {
+          lastChild = this.raw(text);
+        } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && name.indexOf(this.stringify.convertPIKey) === 0) {
+          lastChild = this.instruction(name.substr(this.stringify.convertPIKey.length), text);
+        } else {
+          lastChild = this.node(name, attributes, text);
+        }
+      }
+      if (lastChild == null) {
+        throw new Error("Could not create any elements with: " + name);
+      }
+      return lastChild;
+    };
+
+    XMLNode.prototype.insertBefore = function(name, attributes, text) {
+      var child, i, removed;
+      if (this.isRoot) {
+        throw new Error("Cannot insert elements at root level");
+      }
+      i = this.parent.children.indexOf(this);
+      removed = this.parent.children.splice(i);
+      child = this.parent.element(name, attributes, text);
+      Array.prototype.push.apply(this.parent.children, removed);
+      return child;
+    };
+
+    XMLNode.prototype.insertAfter = function(name, attributes, text) {
+      var child, i, removed;
+      if (this.isRoot) {
+        throw new Error("Cannot insert elements at root level");
+      }
+      i = this.parent.children.indexOf(this);
+      removed = this.parent.children.splice(i + 1);
+      child = this.parent.element(name, attributes, text);
+      Array.prototype.push.apply(this.parent.children, removed);
+      return child;
+    };
+
+    XMLNode.prototype.remove = function() {
+      var i, ref1;
+      if (this.isRoot) {
+        throw new Error("Cannot remove the root element");
+      }
+      i = this.parent.children.indexOf(this);
+      [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref1 = [])), ref1;
+      return this.parent;
+    };
+
+    XMLNode.prototype.node = function(name, attributes, text) {
+      var child, ref1;
+      if (name != null) {
+        name = name.valueOf();
+      }
+      attributes || (attributes = {});
+      attributes = attributes.valueOf();
+      if (!isObject(attributes)) {
+        ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];
+      }
+      child = new XMLElement(this, name, attributes);
+      if (text != null) {
+        child.text(text);
+      }
+      this.children.push(child);
+      return child;
+    };
+
+    XMLNode.prototype.text = function(value) {
+      var child;
+      child = new XMLText(this, value);
+      this.children.push(child);
+      return this;
+    };
+
+    XMLNode.prototype.cdata = function(value) {
+      var child;
+      child = new XMLCData(this, value);
+      this.children.push(child);
+      return this;
+    };
+
+    XMLNode.prototype.comment = function(value) {
+      var child;
+      child = new XMLComment(this, value);
+      this.children.push(child);
+      return this;
+    };
+
+    XMLNode.prototype.commentBefore = function(value) {
+      var child, i, removed;
+      i = this.parent.children.indexOf(this);
+      removed = this.parent.children.splice(i);
+      child = this.parent.comment(value);
+      Array.prototype.push.apply(this.parent.children, removed);
+      return this;
+    };
+
+    XMLNode.prototype.commentAfter = function(value) {
+      var child, i, removed;
+      i = this.parent.children.indexOf(this);
+      removed = this.parent.children.splice(i + 1);
+      child = this.parent.comment(value);
+      Array.prototype.push.apply(this.parent.children, removed);
+      return this;
+    };
+
+    XMLNode.prototype.raw = function(value) {
+      var child;
+      child = new XMLRaw(this, value);
+      this.children.push(child);
+      return this;
+    };
+
+    XMLNode.prototype.instruction = function(target, value) {
+      var insTarget, insValue, instruction, j, len;
+      if (target != null) {
+        target = target.valueOf();
+      }
+      if (value != null) {
+        value = value.valueOf();
+      }
+      if (Array.isArray(target)) {
+        for (j = 0, len = target.length; j < len; j++) {
+          insTarget = target[j];
+          this.instruction(insTarget);
+        }
+      } else if (isObject(target)) {
+        for (insTarget in target) {
+          if (!hasProp.call(target, insTarget)) continue;
+          insValue = target[insTarget];
+          this.instruction(insTarget, insValue);
+        }
+      } else {
+        if (isFunction(value)) {
+          value = value.apply();
+        }
+        instruction = new XMLProcessingInstruction(this, target, value);
+        this.children.push(instruction);
+      }
+      return this;
+    };
+
+    XMLNode.prototype.instructionBefore = function(target, value) {
+      var child, i, removed;
+      i = this.parent.children.indexOf(this);
+      removed = this.parent.children.splice(i);
+      child = this.parent.instruction(target, value);
+      Array.prototype.push.apply(this.parent.children, removed);
+      return this;
+    };
+
+    XMLNode.prototype.instructionAfter = function(target, value) {
+      var child, i, removed;
+      i = this.parent.children.indexOf(this);
+      removed = this.parent.children.splice(i + 1);
+      child = this.parent.instruction(target, value);
+      Array.prototype.push.apply(this.parent.children, removed);
+      return this;
+    };
+
+    XMLNode.prototype.declaration = function(version, encoding, standalone) {
+      var doc, xmldec;
+      doc = this.document();
+      xmldec = new XMLDeclaration(doc, version, encoding, standalone);
+      if (doc.children[0] instanceof XMLDeclaration) {
+        doc.children[0] = xmldec;
+      } else {
+        doc.children.unshift(xmldec);
+      }
+      return doc.root() || doc;
+    };
+
+    XMLNode.prototype.doctype = function(pubID, sysID) {
+      var child, doc, doctype, i, j, k, len, len1, ref1, ref2;
+      doc = this.document();
+      doctype = new XMLDocType(doc, pubID, sysID);
+      ref1 = doc.children;
+      for (i = j = 0, len = ref1.length; j < len; i = ++j) {
+        child = ref1[i];
+        if (child instanceof XMLDocType) {
+          doc.children[i] = doctype;
+          return doctype;
+        }
+      }
+      ref2 = doc.children;
+      for (i = k = 0, len1 = ref2.length; k < len1; i = ++k) {
+        child = ref2[i];
+        if (child.isRoot) {
+          doc.children.splice(i, 0, doctype);
+          return doctype;
+        }
+      }
+      doc.children.push(doctype);
+      return doctype;
+    };
+
+    XMLNode.prototype.up = function() {
+      if (this.isRoot) {
+        throw new Error("The root node has no parent. Use doc() if you need to get the document object.");
+      }
+      return this.parent;
+    };
+
+    XMLNode.prototype.root = function() {
+      var node;
+      node = this;
+      while (node) {
+        if (node.isDocument) {
+          return node.rootObject;
+        } else if (node.isRoot) {
+          return node;
+        } else {
+          node = node.parent;
+        }
+      }
+    };
+
+    XMLNode.prototype.document = function() {
+      var node;
+      node = this;
+      while (node) {
+        if (node.isDocument) {
+          return node;
+        } else {
+          node = node.parent;
+        }
+      }
+    };
+
+    XMLNode.prototype.end = function(options) {
+      return this.document().end(options);
+    };
+
+    XMLNode.prototype.prev = function() {
+      var i;
+      i = this.parent.children.indexOf(this);
+      if (i < 1) {
+        throw new Error("Already at the first node");
+      }
+      return this.parent.children[i - 1];
+    };
+
+    XMLNode.prototype.next = function() {
+      var i;
+      i = this.parent.children.indexOf(this);
+      if (i === -1 || i === this.parent.children.length - 1) {
+        throw new Error("Already at the last node");
+      }
+      return this.parent.children[i + 1];
+    };
+
+    XMLNode.prototype.importDocument = function(doc) {
+      var clonedRoot;
+      clonedRoot = doc.root().clone();
+      clonedRoot.parent = this;
+      clonedRoot.isRoot = false;
+      this.children.push(clonedRoot);
+      return this;
+    };
+
+    XMLNode.prototype.ele = function(name, attributes, text) {
+      return this.element(name, attributes, text);
+    };
+
+    XMLNode.prototype.nod = function(name, attributes, text) {
+      return this.node(name, attributes, text);
+    };
+
+    XMLNode.prototype.txt = function(value) {
+      return this.text(value);
+    };
+
+    XMLNode.prototype.dat = function(value) {
+      return this.cdata(value);
+    };
+
+    XMLNode.prototype.com = function(value) {
+      return this.comment(value);
+    };
+
+    XMLNode.prototype.ins = function(target, value) {
+      return this.instruction(target, value);
+    };
+
+    XMLNode.prototype.doc = function() {
+      return this.document();
+    };
+
+    XMLNode.prototype.dec = function(version, encoding, standalone) {
+      return this.declaration(version, encoding, standalone);
+    };
+
+    XMLNode.prototype.dtd = function(pubID, sysID) {
+      return this.doctype(pubID, sysID);
+    };
+
+    XMLNode.prototype.e = function(name, attributes, text) {
+      return this.element(name, attributes, text);
+    };
+
+    XMLNode.prototype.n = function(name, attributes, text) {
+      return this.node(name, attributes, text);
+    };
+
+    XMLNode.prototype.t = function(value) {
+      return this.text(value);
+    };
+
+    XMLNode.prototype.d = function(value) {
+      return this.cdata(value);
+    };
+
+    XMLNode.prototype.c = function(value) {
+      return this.comment(value);
+    };
+
+    XMLNode.prototype.r = function(value) {
+      return this.raw(value);
+    };
+
+    XMLNode.prototype.i = function(target, value) {
+      return this.instruction(target, value);
+    };
+
+    XMLNode.prototype.u = function() {
+      return this.up();
+    };
+
+    XMLNode.prototype.importXMLBuilder = function(doc) {
+      return this.importDocument(doc);
+    };
+
+    return XMLNode;
+
+  })();
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js b/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js
new file mode 100644
index 0000000..a15be34
--- /dev/null
+++ b/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js
@@ -0,0 +1,35 @@
+// Generated by CoffeeScript 1.10.0
+(function() {
+  var XMLNode, XMLProcessingInstruction,
+    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+    hasProp = {}.hasOwnProperty;
+
+  XMLNode = require('./XMLNode');
+
+  module.exports = XMLProcessingInstruction = (function(superClass) {
+    extend(XMLProcessingInstruction, superClass);
+
+    function XMLProcessingInstruction(parent, target, value) {
+      XMLProcessingInstruction.__super__.constructor.call(this, parent);
+      if (target == null) {
+        throw new Error("Missing instruction target");
+      }
+      this.target = this.stringify.insTarget(target);
+      if (value) {
+        this.value = this.stringify.insValue(value);
+      }
+    }
+
+    XMLProcessingInstruction.prototype.clone = function() {
+      return Object.create(this);
+    };
+
+    XMLProcessingInstruction.prototype.toString = function(options) {
+      return this.options.writer.set(options).processingInstruction(this);
+    };
+
+    return XMLProcessingInstruction;
+
+  })(XMLNode);
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLRaw.js
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLRaw.js b/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLRaw.js
new file mode 100644
index 0000000..152f83b
--- /dev/null
+++ b/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLRaw.js
@@ -0,0 +1,32 @@
+// Generated by CoffeeScript 1.10.0
+(function() {
+  var XMLNode, XMLRaw,
+    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+    hasProp = {}.hasOwnProperty;
+
+  XMLNode = require('./XMLNode');
+
+  module.exports = XMLRaw = (function(superClass) {
+    extend(XMLRaw, superClass);
+
+    function XMLRaw(parent, text) {
+      XMLRaw.__super__.constructor.call(this, parent);
+      if (text == null) {
+        throw new Error("Missing raw text");
+      }
+      this.value = this.stringify.raw(text);
+    }
+
+    XMLRaw.prototype.clone = function() {
+      return Object.create(this);
+    };
+
+    XMLRaw.prototype.toString = function(options) {
+      return this.options.writer.set(options).raw(this);
+    };
+
+    return XMLRaw;
+
+  })(XMLNode);
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStreamWriter.js
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStreamWriter.js b/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStreamWriter.js
new file mode 100644
index 0000000..10a0926
--- /dev/null
+++ b/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStreamWriter.js
@@ -0,0 +1,278 @@
+// Generated by CoffeeScript 1.10.0
+(function() {
+  var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStreamWriter, XMLText, XMLWriterBase,
+    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+    hasProp = {}.hasOwnProperty;
+
+  XMLDeclaration = require('./XMLDeclaration');
+
+  XMLDocType = require('./XMLDocType');
+
+  XMLCData = require('./XMLCData');
+
+  XMLComment = require('./XMLComment');
+
+  XMLElement = require('./XMLElement');
+
+  XMLRaw = require('./XMLRaw');
+
+  XMLText = require('./XMLText');
+
+  XMLProcessingInstruction = require('./XMLProcessingInstruction');
+
+  XMLDTDAttList = require('./XMLDTDAttList');
+
+  XMLDTDElement = require('./XMLDTDElement');
+
+  XMLDTDEntity = require('./XMLDTDEntity');
+
+  XMLDTDNotation = require('./XMLDTDNotation');
+
+  XMLWriterBase = require('./XMLWriterBase');
+
+  module.exports = XMLStreamWriter = (function(superClass) {
+    extend(XMLStreamWriter, superClass);
+
+    function XMLStreamWriter(stream, options) {
+      this.stream = stream;
+      XMLStreamWriter.__super__.constructor.call(this, options);
+    }
+
+    XMLStreamWriter.prototype.document = function(doc) {
+      var child, i, j, len, len1, ref, ref1, results;
+      ref = doc.children;
+      for (i = 0, len = ref.length; i < len; i++) {
+        child = ref[i];
+        child.isLastRootNode = false;
+      }
+      doc.children[doc.children.length - 1].isLastRootNode = true;
+      ref1 = doc.children;
+      results = [];
+      for (j = 0, len1 = ref1.length; j < len1; j++) {
+        child = ref1[j];
+        switch (false) {
+          case !(child instanceof XMLDeclaration):
+            results.push(this.declaration(child));
+            break;
+          case !(child instanceof XMLDocType):
+            results.push(this.docType(child));
+            break;
+          case !(child instanceof XMLComment):
+            results.push(this.comment(child));
+            break;
+          case !(child instanceof XMLProcessingInstruction):
+            results.push(this.processingInstruction(child));
+            break;
+          default:
+            results.push(this.element(child));
+        }
+      }
+      return results;
+    };
+
+    XMLStreamWriter.prototype.attribute = function(att) {
+      return this.stream.write(' ' + att.name + '="' + att.value + '"');
+    };
+
+    XMLStreamWriter.prototype.cdata = function(node, level) {
+      return this.stream.write(this.space(level) + '<![CDATA[' + node.text + ']]>' + this.endline(node));
+    };
+
+    XMLStreamWriter.prototype.comment = function(node, level) {
+      return this.stream.write(this.space(level) + '<!-- ' + node.text + ' -->' + this.endline(node));
+    };
+
+    XMLStreamWriter.prototype.declaration = function(node, level) {
+      this.stream.write(this.space(level));
+      this.stream.write('<?xml version="' + node.version + '"');
+      if (node.encoding != null) {
+        this.stream.write(' encoding="' + node.encoding + '"');
+      }
+      if (node.standalone != null) {
+        this.stream.write(' standalone="' + node.standalone + '"');
+      }
+      this.stream.write('?>');
+      return this.stream.write(this.endline(node));
+    };
+
+    XMLStreamWriter.prototype.docType = function(node, level) {
+      var child, i, len, ref;
+      level || (level = 0);
+      this.stream.write(this.space(level));
+      this.stream.write('<!DOCTYPE ' + node.root().name);
+      if (node.pubID && node.sysID) {
+        this.stream.write(' PUBLIC "' + node.pubID + '" "' + node.sysID + '"');
+      } else if (node.sysID) {
+        this.stream.write(' SYSTEM "' + node.sysID + '"');
+      }
+      if (node.children.length > 0) {
+        this.stream.write(' [');
+        this.stream.write(this.endline(node));
+        ref = node.children;
+        for (i = 0, len = ref.length; i < len; i++) {
+          child = ref[i];
+          switch (false) {
+            case !(child instanceof XMLDTDAttList):
+              this.dtdAttList(child, level + 1);
+              break;
+            case !(child instanceof XMLDTDElement):
+              this.dtdElement(child, level + 1);
+              break;
+            case !(child instanceof XMLDTDEntity):
+              this.dtdEntity(child, level + 1);
+              break;
+            case !(child instanceof XMLDTDNotation):
+              this.dtdNotation(child, level + 1);
+              break;
+            case !(child instanceof XMLCData):
+              this.cdata(child, level + 1);
+              break;
+            case !(child instanceof XMLComment):
+              this.comment(child, level + 1);
+              break;
+            case !(child instanceof XMLProcessingInstruction):
+              this.processingInstruction(child, level + 1);
+              break;
+            default:
+              throw new Error("Unknown DTD node type: " + child.constructor.name);
+          }
+        }
+        this.stream.write(']');
+      }
+      this.stream.write('>');
+      return this.stream.write(this.endline(node));
+    };
+
+    XMLStreamWriter.prototype.element = function(node, level) {
+      var att, child, i, len, name, ref, ref1, space;
+      level || (level = 0);
+      space = this.space(level);
+      this.stream.write(space + '<' + node.name);
+      ref = node.attributes;
+      for (name in ref) {
+        if (!hasProp.call(ref, name)) continue;
+        att = ref[name];
+        this.attribute(att);
+      }
+      if (node.children.length === 0 || node.children.every(function(e) {
+        return e.value === '';
+      })) {
+        if (this.allowEmpty) {
+          this.stream.write('></' + node.name + '>');
+        } else {
+          this.stream.write('/>');
+        }
+      } else if (this.pretty && node.children.length === 1 && (node.children[0].value != null)) {
+        this.stream.write('>');
+        this.stream.write(node.children[0].value);
+        this.stream.write('</' + node.name + '>');
+      } else {
+        this.stream.write('>' + this.newline);
+        ref1 = node.children;
+        for (i = 0, len = ref1.length; i < len; i++) {
+          child = ref1[i];
+          switch (false) {
+            case !(child instanceof XMLCData):
+              this.cdata(child, level + 1);
+              break;
+            case !(child instanceof XMLComment):
+              this.comment(child, level + 1);
+              break;
+            case !(child instanceof XMLElement):
+              this.element(child, level + 1);
+              break;
+            case !(child instanceof XMLRaw):
+              this.raw(child, level + 1);
+              break;
+            case !(child instanceof XMLText):
+              this.text(child, level + 1);
+              break;
+            case !(child instanceof XMLProcessingInstruction):
+              this.processingInstruction(child, level + 1);
+              break;
+            default:
+              throw new Error("Unknown XML node type: " + child.constructor.name);
+          }
+        }
+        this.stream.write(space + '</' + node.name + '>');
+      }
+      return this.stream.write(this.endline(node));
+    };
+
+    XMLStreamWriter.prototype.processingInstruction = function(node, level) {
+      this.stream.write(this.space(level) + '<?' + node.target);
+      if (node.value) {
+        this.stream.write(' ' + node.value);
+      }
+      return this.stream.write('?>' + this.endline(node));
+    };
+
+    XMLStreamWriter.prototype.raw = function(node, level) {
+      return this.stream.write(this.space(level) + node.value + this.endline(node));
+    };
+
+    XMLStreamWriter.prototype.text = function(node, level) {
+      return this.stream.write(this.space(level) + node.value + this.endline(node));
+    };
+
+    XMLStreamWriter.prototype.dtdAttList = function(node, level) {
+      this.stream.write(this.space(level) + '<!ATTLIST ' + node.elementName + ' ' + node.attributeName + ' ' + node.attributeType);
+      if (node.defaultValueType !== '#DEFAULT') {
+        this.stream.write(' ' + node.defaultValueType);
+      }
+      if (node.defaultValue) {
+        this.stream.write(' "' + node.defaultValue + '"');
+      }
+      return this.stream.write('>' + this.endline(node));
+    };
+
+    XMLStreamWriter.prototype.dtdElement = function(node, level) {
+      return this.stream.write(this.space(level) + '<!ELEMENT ' + node.name + ' ' + node.value + '>' + this.endline(node));
+    };
+
+    XMLStreamWriter.prototype.dtdEntity = function(node, level) {
+      this.stream.write(this.space(level) + '<!ENTITY');
+      if (node.pe) {
+        this.stream.write(' %');
+      }
+      this.stream.write(' ' + node.name);
+      if (node.value) {
+        this.stream.write(' "' + node.value + '"');
+      } else {
+        if (node.pubID && node.sysID) {
+          this.stream.write(' PUBLIC "' + node.pubID + '" "' + node.sysID + '"');
+        } else if (node.sysID) {
+          this.stream.write(' SYSTEM "' + node.sysID + '"');
+        }
+        if (node.nData) {
+          this.stream.write(' NDATA ' + node.nData);
+        }
+      }
+      return this.stream.write('>' + this.endline(node));
+    };
+
+    XMLStreamWriter.prototype.dtdNotation = function(node, level) {
+      this.stream.write(this.space(level) + '<!NOTATION ' + node.name);
+      if (node.pubID && node.sysID) {
+        this.stream.write(' PUBLIC "' + node.pubID + '" "' + node.sysID + '"');
+      } else if (node.pubID) {
+        this.stream.write(' PUBLIC "' + node.pubID + '"');
+      } else if (node.sysID) {
+        this.stream.write(' SYSTEM "' + node.sysID + '"');
+      }
+      return this.stream.write('>' + this.endline(node));
+    };
+
+    XMLStreamWriter.prototype.endline = function(node) {
+      if (!node.isLastRootNode) {
+        return this.newline;
+      } else {
+        return '';
+      }
+    };
+
+    return XMLStreamWriter;
+
+  })(XMLWriterBase);
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStringWriter.js
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStringWriter.js b/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStringWriter.js
new file mode 100644
index 0000000..3164006
--- /dev/null
+++ b/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStringWriter.js
@@ -0,0 +1,302 @@
+// Generated by CoffeeScript 1.10.0
+(function() {
+  var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLText, XMLWriterBase,
+    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+    hasProp = {}.hasOwnProperty;
+
+  XMLDeclaration = require('./XMLDeclaration');
+
+  XMLDocType = require('./XMLDocType');
+
+  XMLCData = require('./XMLCData');
+
+  XMLComment = require('./XMLComment');
+
+  XMLElement = require('./XMLElement');
+
+  XMLRaw = require('./XMLRaw');
+
+  XMLText = require('./XMLText');
+
+  XMLProcessingInstruction = require('./XMLProcessingInstruction');
+
+  XMLDTDAttList = require('./XMLDTDAttList');
+
+  XMLDTDElement = require('./XMLDTDElement');
+
+  XMLDTDEntity = require('./XMLDTDEntity');
+
+  XMLDTDNotation = require('./XMLDTDNotation');
+
+  XMLWriterBase = require('./XMLWriterBase');
+
+  module.exports = XMLStringWriter = (function(superClass) {
+    extend(XMLStringWriter, superClass);
+
+    function XMLStringWriter(options) {
+      XMLStringWriter.__super__.constructor.call(this, options);
+    }
+
+    XMLStringWriter.prototype.document = function(doc) {
+      var child, i, len, r, ref;
+      r = '';
+      ref = doc.children;
+      for (i = 0, len = ref.length; i < len; i++) {
+        child = ref[i];
+        r += (function() {
+          switch (false) {
+            case !(child instanceof XMLDeclaration):
+              return this.declaration(child);
+            case !(child instanceof XMLDocType):
+              return this.docType(child);
+            case !(child instanceof XMLComment):
+              return this.comment(child);
+            case !(child instanceof XMLProcessingInstruction):
+              return this.processingInstruction(child);
+            default:
+              return this.element(child, 0);
+          }
+        }).call(this);
+      }
+      if (this.pretty && r.slice(-this.newline.length) === this.newline) {
+        r = r.slice(0, -this.newline.length);
+      }
+      return r;
+    };
+
+    XMLStringWriter.prototype.attribute = function(att) {
+      return ' ' + att.name + '="' + att.value + '"';
+    };
+
+    XMLStringWriter.prototype.cdata = function(node, level) {
+      return this.space(level) + '<![CDATA[' + node.text + ']]>' + this.newline;
+    };
+
+    XMLStringWriter.prototype.comment = function(node, level) {
+      return this.space(level) + '<!-- ' + node.text + ' -->' + this.newline;
+    };
+
+    XMLStringWriter.prototype.declaration = function(node, level) {
+      var r;
+      r = this.space(level);
+      r += '<?xml version="' + node.version + '"';
+      if (node.encoding != null) {
+        r += ' encoding="' + node.encoding + '"';
+      }
+      if (node.standalone != null) {
+        r += ' standalone="' + node.standalone + '"';
+      }
+      r += '?>';
+      r += this.newline;
+      return r;
+    };
+
+    XMLStringWriter.prototype.docType = function(node, level) {
+      var child, i, len, r, ref;
+      level || (level = 0);
+      r = this.space(level);
+      r += '<!DOCTYPE ' + node.root().name;
+      if (node.pubID && node.sysID) {
+        r += ' PUBLIC "' + node.pubID + '" "' + node.sysID + '"';
+      } else if (node.sysID) {
+        r += ' SYSTEM "' + node.sysID + '"';
+      }
+      if (node.children.length > 0) {
+        r += ' [';
+        r += this.newline;
+        ref = node.children;
+        for (i = 0, len = ref.length; i < len; i++) {
+          child = ref[i];
+          r += (function() {
+            switch (false) {
+              case !(child instanceof XMLDTDAttList):
+                return this.dtdAttList(child, level + 1);
+              case !(child instanceof XMLDTDElement):
+                return this.dtdElement(child, level + 1);
+              case !(child instanceof XMLDTDEntity):
+                return this.dtdEntity(child, level + 1);
+              case !(child instanceof XMLDTDNotation):
+                return this.dtdNotation(child, level + 1);
+              case !(child instanceof XMLCData):
+                return this.cdata(child, level + 1);
+              case !(child instanceof XMLComment):
+                return this.comment(child, level + 1);
+              case !(child instanceof XMLProcessingInstruction):
+                return this.processingInstruction(child, level + 1);
+              default:
+                throw new Error("Unknown DTD node type: " + child.constructor.name);
+            }
+          }).call(this);
+        }
+        r += ']';
+      }
+      r += '>';
+      r += this.newline;
+      return r;
+    };
+
+    XMLStringWriter.prototype.element = function(node, level) {
+      var att, child, i, len, name, r, ref, ref1, space;
+      level || (level = 0);
+      space = this.space(level);
+      r = '';
+      r += space + '<' + node.name;
+      ref = node.attributes;
+      for (name in ref) {
+        if (!hasProp.call(ref, name)) continue;
+        att = ref[name];
+        r += this.attribute(att);
+      }
+      if (node.children.length === 0 || node.children.every(function(e) {
+        return e.value === '';
+      })) {
+        if (this.allowEmpty) {
+          r += '></' + node.name + '>' + this.newline;
+        } else {
+          r += '/>' + this.newline;
+        }
+      } else if (this.pretty && node.children.length === 1 && (node.children[0].value != null)) {
+        r += '>';
+        r += node.children[0].value;
+        r += '</' + node.name + '>' + this.newline;
+      } else {
+        r += '>' + this.newline;
+        ref1 = node.children;
+        for (i = 0, len = ref1.length; i < len; i++) {
+          child = ref1[i];
+          r += (function() {
+            switch (false) {
+              case !(child instanceof XMLCData):
+                return this.cdata(child, level + 1);
+              case !(child instanceof XMLComment):
+                return this.comment(child, level + 1);
+              case !(child instanceof XMLElement):
+                return this.element(child, level + 1);
+              case !(child instanceof XMLRaw):
+                return this.raw(child, level + 1);
+              case !(child instanceof XMLText):
+                return this.text(child, level + 1);
+              case !(child instanceof XMLProcessingInstruction):
+                return this.processingInstruction(child, level + 1);
+              default:
+                throw new Error("Unknown XML node type: " + child.constructor.name);
+            }
+          }).call(this);
+        }
+        r += space + '</' + node.name + '>' + this.newline;
+      }
+      return r;
+    };
+
+    XMLStringWriter.prototype.processingInstruction = function(node, level) {
+      var r;
+      r = this.space(level) + '<?' + node.target;
+      if (node.value) {
+        r += ' ' + node.value;
+      }
+      r += '?>' + this.newline;
+      return r;
+    };
+
+    XMLStringWriter.prototype.raw = function(node, level) {
+      return this.space(level) + node.value + this.newline;
+    };
+
+    XMLStringWriter.prototype.text = function(node, level) {
+      return this.space(level) + node.value + this.newline;
+    };
+
+    XMLStringWriter.prototype.dtdAttList = function(node, level) {
+      var r;
+      r = this.space(level) + '<!ATTLIST ' + node.elementName + ' ' + node.attributeName + ' ' + node.attributeType;
+      if (node.defaultValueType !== '#DEFAULT') {
+        r += ' ' + node.defaultValueType;
+      }
+      if (node.defaultValue) {
+        r += ' "' + node.defaultValue + '"';
+      }
+      r += '>' + this.newline;
+      return r;
+    };
+
+    XMLStringWriter.prototype.dtdElement = function(node, level) {
+      return this.space(level) + '<!ELEMENT ' + node.name + ' ' + node.value + '>' + this.newline;
+    };
+
+    XMLStringWriter.prototype.dtdEntity = function(node, level) {
+      var r;
+      r = this.space(level) + '<!ENTITY';
+      if (node.pe) {
+        r += ' %';
+      }
+      r += ' ' + node.name;
+      if (node.value) {
+        r += ' "' + node.value + '"';
+      } else {
+        if (node.pubID && node.sysID) {
+          r += ' PUBLIC "' + node.pubID + '" "' + node.sysID + '"';
+        } else if (node.sysID) {
+          r += ' SYSTEM "' + node.sysID + '"';
+        }
+        if (node.nData) {
+          r += ' NDATA ' + node.nData;
+        }
+      }
+      r += '>' + this.newline;
+      return r;
+    };
+
+    XMLStringWriter.prototype.dtdNotation = function(node, level) {
+      var r;
+      r = this.space(level) + '<!NOTATION ' + node.name;
+      if (node.pubID && node.sysID) {
+        r += ' PUBLIC "' + node.pubID + '" "' + node.sysID + '"';
+      } else if (node.pubID) {
+        r += ' PUBLIC "' + node.pubID + '"';
+      } else if (node.sysID) {
+        r += ' SYSTEM "' + node.sysID + '"';
+      }
+      r += '>' + this.newline;
+      return r;
+    };
+
+    XMLStringWriter.prototype.openNode = function(node, level) {
+      var att, name, r, ref;
+      level || (level = 0);
+      if (node instanceof XMLElement) {
+        r = this.space(level) + '<' + node.name;
+        ref = node.attributes;
+        for (name in ref) {
+          if (!hasProp.call(ref, name)) continue;
+          att = ref[name];
+          r += this.attribute(att);
+        }
+        r += (node.children ? '>' : '/>') + this.newline;
+        return r;
+      } else {
+        r = this.space(level) + '<!DOCTYPE ' + node.rootNodeName;
+        if (node.pubID && node.sysID) {
+          r += ' PUBLIC "' + node.pubID + '" "' + node.sysID + '"';
+        } else if (node.sysID) {
+          r += ' SYSTEM "' + node.sysID + '"';
+        }
+        r += (node.children ? ' [' : '>') + this.newline;
+        return r;
+      }
+    };
+
+    XMLStringWriter.prototype.closeNode = function(node, level) {
+      level || (level = 0);
+      switch (false) {
+        case !(node instanceof XMLElement):
+          return this.space(level) + '</' + node.name + '>' + this.newline;
+        case !(node instanceof XMLDocType):
+          return this.space(level) + ']>' + this.newline;
+      }
+    };
+
+    return XMLStringWriter;
+
+  })(XMLWriterBase);
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStringifier.js
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStringifier.js b/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStringifier.js
new file mode 100644
index 0000000..f549461
--- /dev/null
+++ b/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStringifier.js
@@ -0,0 +1,192 @@
+// Generated by CoffeeScript 1.10.0
+(function() {
+  var XMLStringifier, camelCase, kebabCase, ref, snakeCase, titleCase,
+    bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
+    hasProp = {}.hasOwnProperty;
+
+  ref = require('./Utility'), camelCase = ref.camelCase, titleCase = ref.titleCase, kebabCase = ref.kebabCase, snakeCase = ref.snakeCase;
+
+  module.exports = XMLStringifier = (function() {
+    function XMLStringifier(options) {
+      this.assertLegalChar = bind(this.assertLegalChar, this);
+      var key, ref1, value;
+      options || (options = {});
+      this.allowSurrogateChars = options.allowSurrogateChars;
+      this.noDoubleEncoding = options.noDoubleEncoding;
+      this.textCase = options.textCase;
+      ref1 = options.stringify || {};
+      for (key in ref1) {
+        if (!hasProp.call(ref1, key)) continue;
+        value = ref1[key];
+        this[key] = value;
+      }
+    }
+
+    XMLStringifier.prototype.eleName = function(val) {
+      val = '' + val || '';
+      val = this.applyCase(val);
+      return this.assertLegalChar(val);
+    };
+
+    XMLStringifier.prototype.eleText = function(val) {
+      val = '' + val || '';
+      return this.assertLegalChar(this.elEscape(val));
+    };
+
+    XMLStringifier.prototype.cdata = function(val) {
+      val = '' + val || '';
+      val = val.replace(']]>', ']]]]><![CDATA[>');
+      return this.assertLegalChar(val);
+    };
+
+    XMLStringifier.prototype.comment = function(val) {
+      val = '' + val || '';
+      if (val.match(/--/)) {
+        throw new Error("Comment text cannot contain double-hypen: " + val);
+      }
+      return this.assertLegalChar(val);
+    };
+
+    XMLStringifier.prototype.raw = function(val) {
+      return '' + val || '';
+    };
+
+    XMLStringifier.prototype.attName = function(val) {
+      val = '' + val || '';
+      return val = this.applyCase(val);
+    };
+
+    XMLStringifier.prototype.attValue = function(val) {
+      val = '' + val || '';
+      return this.attEscape(val);
+    };
+
+    XMLStringifier.prototype.insTarget = function(val) {
+      return '' + val || '';
+    };
+
+    XMLStringifier.prototype.insValue = function(val) {
+      val = '' + val || '';
+      if (val.match(/\?>/)) {
+        throw new Error("Invalid processing instruction value: " + val);
+      }
+      return val;
+    };
+
+    XMLStringifier.prototype.xmlVersion = function(val) {
+      val = '' + val || '';
+      if (!val.match(/1\.[0-9]+/)) {
+        throw new Error("Invalid version number: " + val);
+      }
+      return val;
+    };
+
+    XMLStringifier.prototype.xmlEncoding = function(val) {
+      val = '' + val || '';
+      if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-]|-)*$/)) {
+        throw new Error("Invalid encoding: " + val);
+      }
+      return val;
+    };
+
+    XMLStringifier.prototype.xmlStandalone = function(val) {
+      if (val) {
+        return "yes";
+      } else {
+        return "no";
+      }
+    };
+
+    XMLStringifier.prototype.dtdPubID = function(val) {
+      return '' + val || '';
+    };
+
+    XMLStringifier.prototype.dtdSysID = function(val) {
+      return '' + val || '';
+    };
+
+    XMLStringifier.prototype.dtdElementValue = function(val) {
+      return '' + val || '';
+    };
+
+    XMLStringifier.prototype.dtdAttType = function(val) {
+      return '' + val || '';
+    };
+
+    XMLStringifier.prototype.dtdAttDefault = function(val) {
+      if (val != null) {
+        return '' + val || '';
+      } else {
+        return val;
+      }
+    };
+
+    XMLStringifier.prototype.dtdEntityValue = function(val) {
+      return '' + val || '';
+    };
+
+    XMLStringifier.prototype.dtdNData = function(val) {
+      return '' + val || '';
+    };
+
+    XMLStringifier.prototype.convertAttKey = '@';
+
+    XMLStringifier.prototype.convertPIKey = '?';
+
+    XMLStringifier.prototype.convertTextKey = '#text';
+
+    XMLStringifier.prototype.convertCDataKey = '#cdata';
+
+    XMLStringifier.prototype.convertCommentKey = '#comment';
+
+    XMLStringifier.prototype.convertRawKey = '#raw';
+
+    XMLStringifier.prototype.assertLegalChar = function(str) {
+      var chars, chr;
+      if (this.allowSurrogateChars) {
+        chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uFFFE-\uFFFF]/;
+      } else {
+        chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uD800-\uDFFF\uFFFE-\uFFFF]/;
+      }
+      chr = str.match(chars);
+      if (chr) {
+        throw new Error("Invalid character (" + chr + ") in string: " + str + " at index " + chr.index);
+      }
+      return str;
+    };
+
+    XMLStringifier.prototype.applyCase = function(str) {
+      switch (this.textCase) {
+        case "camel":
+          return camelCase(str);
+        case "title":
+          return titleCase(str);
+        case "kebab":
+        case "lower":
+          return kebabCase(str);
+        case "snake":
+          return snakeCase(str);
+        case "upper":
+          return kebabCase(str).toUpperCase();
+        default:
+          return str;
+      }
+    };
+
+    XMLStringifier.prototype.elEscape = function(str) {
+      var ampregex;
+      ampregex = this.noDoubleEncoding ? /(?!&\S+;)&/g : /&/g;
+      return str.replace(ampregex, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\r/g, '&#xD;');
+    };
+
+    XMLStringifier.prototype.attEscape = function(str) {
+      var ampregex;
+      ampregex = this.noDoubleEncoding ? /(?!&\S+;)&/g : /&/g;
+      return str.replace(ampregex, '&amp;').replace(/</g, '&lt;').replace(/"/g, '&quot;').replace(/\t/g, '&#x9;').replace(/\n/g, '&#xA;').replace(/\r/g, '&#xD;');
+    };
+
+    return XMLStringifier;
+
+  })();
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLText.js
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLText.js b/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLText.js
new file mode 100644
index 0000000..8241581
--- /dev/null
+++ b/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLText.js
@@ -0,0 +1,32 @@
+// Generated by CoffeeScript 1.10.0
+(function() {
+  var XMLNode, XMLText,
+    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
+    hasProp = {}.hasOwnProperty;
+
+  XMLNode = require('./XMLNode');
+
+  module.exports = XMLText = (function(superClass) {
+    extend(XMLText, superClass);
+
+    function XMLText(parent, text) {
+      XMLText.__super__.constructor.call(this, parent);
+      if (text == null) {
+        throw new Error("Missing element text");
+      }
+      this.value = this.stringify.eleText(text);
+    }
+
+    XMLText.prototype.clone = function() {
+      return Object.create(this);
+    };
+
+    XMLText.prototype.toString = function(options) {
+      return this.options.writer.set(options).text(this);
+    };
+
+    return XMLText;
+
+  })(XMLNode);
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLWriterBase.js
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLWriterBase.js b/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLWriterBase.js
new file mode 100644
index 0000000..0b28662
--- /dev/null
+++ b/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLWriterBase.js
@@ -0,0 +1,68 @@
+// Generated by CoffeeScript 1.10.0
+(function() {
+  var XMLWriterBase,
+    hasProp = {}.hasOwnProperty;
+
+  module.exports = XMLWriterBase = (function() {
+    function XMLWriterBase(options) {
+      var key, ref, ref1, ref2, ref3, ref4, value;
+      options || (options = {});
+      this.pretty = options.pretty || false;
+      this.allowEmpty = (ref = options.allowEmpty) != null ? ref : false;
+      if (this.pretty) {
+        this.indent = (ref1 = options.indent) != null ? ref1 : '  ';
+        this.newline = (ref2 = options.newline) != null ? ref2 : '\n';
+        this.offset = (ref3 = options.offset) != null ? ref3 : 0;
+      } else {
+        this.indent = '';
+        this.newline = '';
+        this.offset = 0;
+      }
+      ref4 = options.writer || {};
+      for (key in ref4) {
+        if (!hasProp.call(ref4, key)) continue;
+        value = ref4[key];
+        this[key] = value;
+      }
+    }
+
+    XMLWriterBase.prototype.set = function(options) {
+      var key, ref, value;
+      options || (options = {});
+      if ("pretty" in options) {
+        this.pretty = options.pretty;
+      }
+      if ("allowEmpty" in options) {
+        this.allowEmpty = options.allowEmpty;
+      }
+      if (this.pretty) {
+        this.indent = "indent" in options ? options.indent : '  ';
+        this.newline = "newline" in options ? options.newline : '\n';
+        this.offset = "offset" in options ? options.offset : 0;
+      } else {
+        this.indent = '';
+        this.newline = '';
+        this.offset = 0;
+      }
+      ref = options.writer || {};
+      for (key in ref) {
+        if (!hasProp.call(ref, key)) continue;
+        value = ref[key];
+        this[key] = value;
+      }
+      return this;
+    };
+
+    XMLWriterBase.prototype.space = function(level) {
+      if (this.pretty) {
+        return new Array((level || 0) + this.offset + 1).join(this.indent);
+      } else {
+        return '';
+      }
+    };
+
+    return XMLWriterBase;
+
+  })();
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/simple-plist/node_modules/xmlbuilder/lib/index.js
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/node_modules/xmlbuilder/lib/index.js b/node_modules/simple-plist/node_modules/xmlbuilder/lib/index.js
new file mode 100644
index 0000000..de7ee8f
--- /dev/null
+++ b/node_modules/simple-plist/node_modules/xmlbuilder/lib/index.js
@@ -0,0 +1,53 @@
+// Generated by CoffeeScript 1.10.0
+(function() {
+  var XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction, ref;
+
+  ref = require('./Utility'), assign = ref.assign, isFunction = ref.isFunction;
+
+  XMLDocument = require('./XMLDocument');
+
+  XMLDocumentCB = require('./XMLDocumentCB');
+
+  XMLStringWriter = require('./XMLStringWriter');
+
+  XMLStreamWriter = require('./XMLStreamWriter');
+
+  module.exports.create = function(name, xmldec, doctype, options) {
+    var doc, root;
+    if (name == null) {
+      throw new Error("Root element needs a name");
+    }
+    options = assign({}, xmldec, doctype, options);
+    doc = new XMLDocument(options);
+    root = doc.element(name);
+    if (!options.headless) {
+      doc.declaration(options);
+      if ((options.pubID != null) || (options.sysID != null)) {
+        doc.doctype(options);
+      }
+    }
+    return root;
+  };
+
+  module.exports.begin = function(options, onData, onEnd) {
+    var ref1;
+    if (isFunction(options)) {
+      ref1 = [options, onData], onData = ref1[0], onEnd = ref1[1];
+      options = {};
+    }
+    if (onData) {
+      return new XMLDocumentCB(options, onData, onEnd);
+    } else {
+      return new XMLDocument(options);
+    }
+  };
+
+  module.exports.stringWriter = function(options) {
+    return new XMLStringWriter(options);
+  };
+
+  module.exports.streamWriter = function(stream, options) {
+    return new XMLStreamWriter(stream, options);
+  };
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/simple-plist/node_modules/xmlbuilder/package.json
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/node_modules/xmlbuilder/package.json b/node_modules/simple-plist/node_modules/xmlbuilder/package.json
new file mode 100644
index 0000000..b19c56e
--- /dev/null
+++ b/node_modules/simple-plist/node_modules/xmlbuilder/package.json
@@ -0,0 +1,100 @@
+{
+  "_args": [
+    [
+      {
+        "raw": "xmlbuilder@8.2.2",
+        "scope": null,
+        "escapedName": "xmlbuilder",
+        "name": "xmlbuilder",
+        "rawSpec": "8.2.2",
+        "spec": "8.2.2",
+        "type": "version"
+      },
+      "/Users/shazron/Documents/git/apache/cordova-ios/node_modules/simple-plist/node_modules/plist"
+    ]
+  ],
+  "_from": "xmlbuilder@8.2.2",
+  "_id": "xmlbuilder@8.2.2",
+  "_inCache": true,
+  "_location": "/simple-plist/xmlbuilder",
+  "_nodeVersion": "4.4.0",
+  "_npmOperationalInternal": {
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/xmlbuilder-8.2.2.tgz_1460102388901_0.18738110782578588"
+  },
+  "_npmUser": {
+    "name": "oozcitak",
+    "email": "oozcitak@gmail.com"
+  },
+  "_npmVersion": "2.14.20",
+  "_phantomChildren": {},
+  "_requested": {
+    "raw": "xmlbuilder@8.2.2",
+    "scope": null,
+    "escapedName": "xmlbuilder",
+    "name": "xmlbuilder",
+    "rawSpec": "8.2.2",
+    "spec": "8.2.2",
+    "type": "version"
+  },
+  "_requiredBy": [
+    "/simple-plist/plist"
+  ],
+  "_resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz",
+  "_shasum": "69248673410b4ba42e1a6136551d2922335aa773",
+  "_shrinkwrap": null,
+  "_spec": "xmlbuilder@8.2.2",
+  "_where": "/Users/shazron/Documents/git/apache/cordova-ios/node_modules/simple-plist/node_modules/plist",
+  "author": {
+    "name": "Ozgur Ozcitak",
+    "email": "oozcitak@gmail.com"
+  },
+  "bugs": {
+    "url": "http://github.com/oozcitak/xmlbuilder-js/issues"
+  },
+  "contributors": [],
+  "dependencies": {},
+  "description": "An XML builder for node.js",
+  "devDependencies": {
+    "coffee-coverage": "*",
+    "coffee-script": "*",
+    "coveralls": "*",
+    "istanbul": "*",
+    "mocha": "*"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "69248673410b4ba42e1a6136551d2922335aa773",
+    "tarball": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz"
+  },
+  "engines": {
+    "node": ">=4.0"
+  },
+  "gitHead": "ab5987b12bc06e4da8c37cd7fec8f93085d96d28",
+  "homepage": "http://github.com/oozcitak/xmlbuilder-js",
+  "keywords": [
+    "xml",
+    "xmlbuilder"
+  ],
+  "license": "MIT",
+  "main": "./lib/index",
+  "maintainers": [
+    {
+      "name": "oozcitak",
+      "email": "oozcitak@gmail.com"
+    }
+  ],
+  "name": "xmlbuilder",
+  "optionalDependencies": {},
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/oozcitak/xmlbuilder-js.git"
+  },
+  "scripts": {
+    "postpublish": "rm -rf lib",
+    "prepublish": "coffee -co lib src",
+    "test": "mocha && istanbul report text lcov"
+  },
+  "version": "8.2.2"
+}

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/simple-plist/package.json
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/package.json b/node_modules/simple-plist/package.json
index 2d5e8bf..9abb228 100644
--- a/node_modules/simple-plist/package.json
+++ b/node_modules/simple-plist/package.json
@@ -2,48 +2,50 @@
   "_args": [
     [
       {
-        "raw": "simple-plist@0.1.4",
+        "raw": "simple-plist@^0.2.1",
         "scope": null,
         "escapedName": "simple-plist",
         "name": "simple-plist",
-        "rawSpec": "0.1.4",
-        "spec": "0.1.4",
-        "type": "version"
+        "rawSpec": "^0.2.1",
+        "spec": ">=0.2.1 <0.3.0",
+        "type": "range"
       },
       "/Users/shazron/Documents/git/apache/cordova-ios/node_modules/xcode"
     ]
   ],
-  "_from": "simple-plist@0.1.4",
-  "_id": "simple-plist@0.1.4",
+  "_from": "simple-plist@>=0.2.1 <0.3.0",
+  "_id": "simple-plist@0.2.1",
   "_inCache": true,
   "_location": "/simple-plist",
-  "_nodeVersion": "0.12.7",
+  "_nodeVersion": "4.4.7",
   "_npmOperationalInternal": {
-    "host": "packages-16-east.internal.npmjs.com",
-    "tmp": "tmp/simple-plist-0.1.4.tgz_1462930930371_0.9155550985597074"
+    "host": "packages-18-east.internal.npmjs.com",
+    "tmp": "tmp/simple-plist-0.2.1.tgz_1477979624873_0.24517794768325984"
   },
   "_npmUser": {
     "name": "wollardj",
     "email": "joe.wollard@gmail.com"
   },
-  "_npmVersion": "2.11.3",
-  "_phantomChildren": {},
+  "_npmVersion": "2.15.8",
+  "_phantomChildren": {
+    "xmldom": "0.1.27"
+  },
   "_requested": {
-    "raw": "simple-plist@0.1.4",
+    "raw": "simple-plist@^0.2.1",
     "scope": null,
     "escapedName": "simple-plist",
     "name": "simple-plist",
-    "rawSpec": "0.1.4",
-    "spec": "0.1.4",
-    "type": "version"
+    "rawSpec": "^0.2.1",
+    "spec": ">=0.2.1 <0.3.0",
+    "type": "range"
   },
   "_requiredBy": [
     "/xcode"
   ],
-  "_resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-0.1.4.tgz",
-  "_shasum": "10eb51b47e33c556eb8ec46d5ee64d64e717db5d",
+  "_resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-0.2.1.tgz",
+  "_shasum": "71766db352326928cf3a807242ba762322636723",
   "_shrinkwrap": null,
-  "_spec": "simple-plist@0.1.4",
+  "_spec": "simple-plist@^0.2.1",
   "_where": "/Users/shazron/Documents/git/apache/cordova-ios/node_modules/xcode",
   "author": {
     "name": "Joe Wollard"
@@ -52,18 +54,24 @@
     "url": "https://github.com/wollardj/node-simple-plist/issues"
   },
   "dependencies": {
-    "bplist-creator": "0.0.4",
-    "bplist-parser": "0.0.6",
-    "plist": "1.2.0"
+    "bplist-creator": "0.0.7",
+    "bplist-parser": "0.1.1",
+    "plist": "2.0.1"
   },
   "description": "A wrapper utility for interacting with plist data.",
-  "devDependencies": {},
+  "devDependencies": {
+    "coffee-script": "^1.11.1",
+    "jest": "^16.0.2"
+  },
   "directories": {},
   "dist": {
-    "shasum": "10eb51b47e33c556eb8ec46d5ee64d64e717db5d",
-    "tarball": "https://registry.npmjs.org/simple-plist/-/simple-plist-0.1.4.tgz"
+    "shasum": "71766db352326928cf3a807242ba762322636723",
+    "tarball": "https://registry.npmjs.org/simple-plist/-/simple-plist-0.2.1.tgz"
   },
-  "gitHead": "a01406ab0d347b5a1a9a0f59395fe6d464b0f962",
+  "files": [
+    "simple-plist.js"
+  ],
+  "gitHead": "977f4a2fdadefc53c27db370b292b4d2de68ca71",
   "homepage": "https://github.com/wollardj/node-simple-plist.git",
   "keywords": [
     "plist",
@@ -90,6 +98,10 @@
     "type": "git",
     "url": "git+https://github.com/wollardj/node-simple-plist.git"
   },
-  "scripts": {},
-  "version": "0.1.4"
+  "scripts": {
+    "clean": "rm -rf *.js __tests__/*.js __tests__/write-test* coverage",
+    "prepublish": "npm test",
+    "test": "npm run-script clean && ./node_modules/.bin/coffee -c . && ./node_modules/.bin/jest --coverage"
+  },
+  "version": "0.2.1"
 }

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/simple-plist/simple-plist.js
----------------------------------------------------------------------
diff --git a/node_modules/simple-plist/simple-plist.js b/node_modules/simple-plist/simple-plist.js
index 850b3e8..a54bedd 100644
--- a/node_modules/simple-plist/simple-plist.js
+++ b/node_modules/simple-plist/simple-plist.js
@@ -1,102 +1,104 @@
-var bplistParser = require('bplist-parser'),
-    bplistCreator = require('bplist-creator'),
-    plist = require('plist'),
-    fs = require('fs');
-
-// reveal the underlying modules
-exports.plist = plist;
-exports.bplistCreator = bplistCreator;
-exports.bplistParser = bplistParser;
-
-
-// Parses the given file and returns its contents as a native JavaScript
-// object.
-exports.readFileSync = function(aFile) {
-  var contents = fs.readFileSync(aFile);
-
-  if (contents.length === 0) {
-    console.error("Unable to read file '%s'", aFile);
-    return {};
-  }
-  return exports.parse(contents, aFile);
-};
-
-exports.readFile = function(aFile, callback) {
-  var results;
-
-  fs.readFile(aFile, function(err, contents){
-    if (err) {
-      callback(err);
+// Generated by CoffeeScript 1.11.1
+(function() {
+  var bplistCreator, bplistParser, fs, plist;
+
+  bplistParser = require('bplist-parser');
+
+  bplistCreator = require('bplist-creator');
+
+  plist = require('plist');
+
+  fs = require('fs');
+
+  exports.plist = plist;
+
+  exports.bplistCreator = bplistCreator;
+
+  exports.bplistParser = bplistParser;
+
+  exports.readFileSync = function(aFile) {
+    var contents;
+    contents = fs.readFileSync(aFile);
+    if (contents.length === 0) {
+      return {};
     }
-    else {
-      try {
-        results = exports.parse(contents, aFile);
-        callback(null,results);
-      }
-      catch(err) {
-        callback(err);
+    return exports.parse(contents, aFile);
+  };
+
+  exports.readFile = function(aFile, callback) {
+    return fs.readFile(aFile, function(err, contents) {
+      var results;
+      if (err) {
+        return callback(err);
+      } else {
+        try {
+          results = exports.parse(contents, aFile);
+          return callback(null, results);
+        } catch (error) {
+          err = error;
+          return callback(err);
+        }
       }
+    });
+  };
+
+  exports.writeFileSync = function(aFile, anObject, options) {
+    var data;
+    data = plist.build(anObject);
+    return fs.writeFileSync(aFile, data, options);
+  };
+
+  exports.writeFile = function(aFile, anObject, options, callback) {
+    var data;
+    if (arguments.length === 3 && typeof options === 'function') {
+      callback = options;
+      options = void 0;
     }
-  });
-}
-
-exports.writeFileSync = function(aFile, anObject, options) {
-  var data = plist.build(anObject);
-  fs.writeFileSync(aFile, data, options);
-};
-
-exports.writeFile = function(aFile, anObject, options, callback) {
-  if (arguments.length === 3 && typeof options === 'function') {
-    callback = options;
-    options = undefined;
-  }
-  var data = plist.build(anObject);
-  fs.writeFile(aFile, data, options, callback);
-};
-
-exports.writeBinaryFileSync = function(aFile, anObject, options) {
-  var data = bplistCreator(anObject);
-  fs.writeFileSync(aFile, data, options);
-};
-
-exports.writeBinaryFile = function(aFile, anObject, options, callback) {
-  if (arguments.length === 3 && typeof options === 'function') {
-    callback = options;
-    options = undefined;
-  }
-
-  var data = bplistCreator(anObject);
-  fs.writeFile(aFile, data, options, callback);
-};
-
-exports.stringify = function(anObject) {
-  return plist.build(anObject);
-};
-
-
-
-exports.parse = function(aStringOrBuffer, aFile) {
-  var results,
-      firstByte = aStringOrBuffer[0];
-  try {
-    if (firstByte === 60 || firstByte === '<') {
-      results = plist.parse(aStringOrBuffer.toString());
-    }
-    else if (firstByte === 98) {
-      results = bplistParser.parseBuffer(aStringOrBuffer)[0];
+    data = plist.build(anObject);
+    return fs.writeFile(aFile, data, options, callback);
+  };
+
+  exports.writeBinaryFileSync = function(aFile, anObject, options) {
+    var data;
+    data = bplistCreator(anObject);
+    return fs.writeFileSync(aFile, data, options);
+  };
+
+  exports.writeBinaryFile = function(aFile, anObject, options, callback) {
+    var data;
+    if (arguments.length === 3 && typeof options === 'function') {
+      callback = options;
+      options = void 0;
     }
-    else {
-      if (aFile != undefined) {
-        console.error("Unable to determine format for '%s'", aFile);
-      }
-      else {
-        console.error("Unable to determine format for plist aStringOrBuffer: '%s'", aStringOrBuffer);
+    data = bplistCreator(anObject);
+    return fs.writeFile(aFile, data, options, callback);
+  };
+
+  exports.stringify = function(anObject) {
+    return plist.build(anObject);
+  };
+
+  exports.parse = function(aStringOrBuffer, aFile) {
+    var e, firstByte, results;
+    firstByte = aStringOrBuffer[0];
+    try {
+      if (firstByte === 60 || firstByte === '<') {
+        results = plist.parse(aStringOrBuffer.toString());
+      } else if (firstByte === 98) {
+        results = bplistParser.parseBuffer(aStringOrBuffer)[0];
+      } else {
+        if (aFile != null) {
+          throw new Error("Unable to determine format for '" + aFile + "'");
+        } else {
+          throw new Error("Unable to determine format for plist aStringOrBuffer");
+        }
+        results = {};
       }
-      results = {};
+    } catch (error) {
+      e = error;
+      throw new Error(aFile + " has errors");
     }
-  }
-  catch(e) {
-    throw Error("'%s' has errors", aFile);
-  }
-  return results;
-}
+    return results;
+  };
+
+}).call(this);

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/stream-buffers/.mailmap
----------------------------------------------------------------------
diff --git a/node_modules/stream-buffers/.mailmap b/node_modules/stream-buffers/.mailmap
index e69de29..e8c6376 100644
--- a/node_modules/stream-buffers/.mailmap
+++ b/node_modules/stream-buffers/.mailmap
@@ -0,0 +1,2 @@
+Sam Day <sam.c.day@gmail.com>
+Sam Day <me@samcday.com.au>

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/stream-buffers/.travis.yml
----------------------------------------------------------------------
diff --git a/node_modules/stream-buffers/.travis.yml b/node_modules/stream-buffers/.travis.yml
index 139d702..905e54a 100644
--- a/node_modules/stream-buffers/.travis.yml
+++ b/node_modules/stream-buffers/.travis.yml
@@ -1,15 +1,28 @@
 language: node_js
-node_js:
-  - 0.10
-  - 0.8
-  - 0.6
+
+matrix:
+  include:
+    - node_js: '0.10'
+      env: NO_COVERAGE=1
+    - node_js: '0.11'
+      env: NO_COVERAGE=1
+    - node_js: '0.12'
 
 deploy:
   provider: npm
   email: me@samcday.com.au
   api_key:
-    secure: N1pXQfcwpMcOexiCDBRXYfQ3WbJP+9RNZZbayb1iNFuhEm50/HxJLdUcV8UInxKkUuS5lSIsWX1KbPKEEtbo6IR5wLTpVUzfYblVmYQI6yoI1XjhcBdYVdlS1uKZUD5ACEfV3Ut112G70XcWks3Drf7/zAuAdvlR3A1mT4E96jQ=
+    secure: GIkpHAQZJH8xTq1oRG66f+J0j4PMxEBoDzIiOyREBypGslOy6NbWxP0Q8rgD6wfzBRMixSctqeiKyTkiC+92BGPLL7k1eyeN9ycXjYHuDVJrRyYAMjg1Xh72ekFPZnycgUngMTwWX/FtQShkvaDoG+1S0W+qdC+cRz+9Dh7+XEM=
   on:
     tags: true
     all_branches: true
-    node_js: 0.10
+    node_js: 0.12
+
+addons:
+  code_climate:
+    repo_token:
+      secure: "qoQoeJZrjiE7RmcGIZNmR2tO3/oP1NqlxhYkj1TYbMVOYmK4zsOdeVjhllkETZaGejKcw1uXEQx7caSmpZQ6lw5V5JXmyyTzo8xfAbanP9Wf4WXw5uSOaBDYR/DR2B9VfkHT7spPVwdoX09sgb+oTIy4IgBUivucm6IGmiw7PuY="
+
+after_script:
+  - npm install -g codeclimate-test-reporter
+  - cat coverage/lcov.info | codeclimate

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/stream-buffers/README.md
----------------------------------------------------------------------
diff --git a/node_modules/stream-buffers/README.md b/node_modules/stream-buffers/README.md
index fed83e6..d5af371 100644
--- a/node_modules/stream-buffers/README.md
+++ b/node_modules/stream-buffers/README.md
@@ -1,66 +1,77 @@
-# Node Stream Buffers `v0.2.5`
+# Node Stream Buffers
 
-[![Build Status](https://travis-ci.org/samcday/node-stream-buffer.png)](https://travis-ci.org/samcday/node-stream-buffer)
+[![Build Status][badge-travis-img]][badge-travis-url]
+[![Code Climate][badge-climate-img]][badge-climate-url]
+[![Code Coverage][badge-coverage-img]][badge-coverage-url]
 
-... For lack of a cooler (or less confusing) name.
-
-Simple Readable and Writable Streams that use a Buffer to store received data, or for data to send out. Pretty much to be used for automated test-cases or debugging.
+Simple Readable and Writable Streams that use a [Buffer][node-buffer-docs] to store received data, or for data to send out. Useful for test code, debugging, and a wide range of other utilities.
 
 ## Installation
 
-It's on NPM.
-
-	npm install stream-buffers
+[![NPM][badge-npm-img]][badge-npm-url]
 
 ## Usage
 
 To use the stream buffers in your module, simply import it and away you go.
 
-	var streamBuffers = require("stream-buffers");
+```js
+var streamBuffers = require("stream-buffers");
+```
 
 ### Writable StreamBuffer
 
 Writable Stream Buffers implement the standardized writable stream interface. All write()'s to this object will accumulate in an internal Buffer. If the Buffer overflows it will be resized larger automatically. The initial size of the Buffer and the amount in which it grows can be configured in the constructor.
 
-	var myWritableStreamBuffer = new streamBuffers.WritableStreamBuffer({
-		initialSize: (100 * 1024),		// start as 100 kilobytes.
-		incrementAmount: (10 * 1024)	// grow by 10 kilobytes each time buffer overflows.
-	});
-	
+```js
+var myWritableStreamBuffer = new streamBuffers.WritableStreamBuffer({
+	initialSize: (100 * 1024),		// start as 100 kilobytes.
+	incrementAmount: (10 * 1024)	// grow by 10 kilobytes each time buffer overflows.
+});
+```
+
 The default initial size and increment amount are stored in the following constants:
 
-	streamBuffers.DEFAULT_INITIAL_SIZE 		// (8 * 1024)
-	streamBuffers.DEFAULT_INCREMENT_AMOUNT	// (8 * 1024)
+```js
+streamBuffers.DEFAULT_INITIAL_SIZE 		// (8 * 1024)
+streamBuffers.DEFAULT_INCREMENT_AMOUNT	// (8 * 1024)
+```
 
 Writing is standard Stream stuff:
 
-	myWritableStreamBuffer.write(myBuffer);
-	// - or -
-	myWritableStreamBuffer.write("\u00bd + \u00bc = \u00be", "utf8");
+```js
+myWritableStreamBuffer.write(myBuffer);
+// - or -
+myWritableStreamBuffer.write("\u00bd + \u00bc = \u00be", "utf8");
+```
 
 You can query the size of the data being held in the Buffer, and also how big the Buffer's max capacity currently is: 
 
-	myWritableStreamBuffer.write("ASDF");
-	streamBuffers.size();			// 4.
-	streamBuffers.maxSize();		// Whatever was configured as initial size. In our example: (100 * 1024).
+```js
+myWritableStreamBuffer.write("ASDF");
+streamBuffers.size();			// 4.
+streamBuffers.maxSize();		// Whatever was configured as initial size. In our example: (100 * 1024).
+```
 
 Retrieving the contents of the Buffer is simple:
 
-	myWritableStreamBuffer.getContents();					// Gets all held data as a Buffer.
-	myWritableStreamBuffer.getContentsAsString("utf8");		// Gets all held data as a utf8 string.
-	myWritableStreamBuffer.getContents(5);					// Gets first 5 bytes as a Buffer.
-	myWritableStreamBuffer.getContentsAsString("utf8", 5);	// Gets first 5 bytes as a utf8 string.
+```js
+myWritableStreamBuffer.getContents();					// Gets all held data as a Buffer.
+myWritableStreamBuffer.getContentsAsString("utf8");		// Gets all held data as a utf8 string.
+myWritableStreamBuffer.getContents(5);					// Gets first 5 bytes as a Buffer.
+myWritableStreamBuffer.getContentsAsString("utf8", 5);	// Gets first 5 bytes as a utf8 string.
+```
 
 Care should be taken when getting encoded strings from WritableStream, as it doesn't really care about the contents (multi-byte characters will not be respected).
  
 Destroying or ending the WritableStream will not delete the contents of Buffer, but will disallow any further writes:
 
-	myWritableStreamBuffer.write("ASDF");
-	myWritableStreamBuffer.destroy();
-	
-	myWritableStreamBuffer.getContents();		// Returns ASDF in Buffer.
-	myWritableStreamBuffer.write("Yeah?");		// No effect.
-	
+```js
+myWritableStreamBuffer.write("ASDF");
+myWritableStreamBuffer.destroy();
+
+myWritableStreamBuffer.getContents();		// Returns ASDF in Buffer.
+myWritableStreamBuffer.write("Yeah?");		// No effect.
+```	
 
 ### Readable StreamBuffer
 
@@ -68,49 +79,79 @@ Readable Stream Buffers can have data inserted in them, which will then be pumpe
 
 The frequency in which chunks are pumped out, and the size of the chunks themselves can be configured in the constructor. The initial size and increment amount of internal Buffer can be configured too.
 
-	var myReadableStreamBuffer = new streamBuffers.ReadableStreamBuffer({
-		frequency: 10		// in milliseconds.
-		chunkSize: 2048		// in bytes.
-	});
+```js
+var myReadableStreamBuffer = new streamBuffers.ReadableStreamBuffer({
+	frequency: 10,		// in milliseconds.
+	chunkSize: 2048		// in bytes.
+});
+```
 
 Default frequency and chunk size:
 
-	streamBuffers.DEFAULT_CHUNK_SIZE 		// (1024)
-	streamBuffers.DEFAULT_FREQUENCY			// (1)
+```js
+streamBuffers.DEFAULT_CHUNK_SIZE 		// (1024)
+streamBuffers.DEFAULT_FREQUENCY			// (1)
+```
 
 Putting data in Buffer to be pumped out is easy:
 
-	myReadableStreamBuffer.put(aBuffer);
-	myReadableStreamBuffer.put("A String", "utf8");
+```js
+myReadableStreamBuffer.put(aBuffer);
+myReadableStreamBuffer.put("A String", "utf8");
+```
 
 Chunks are pumped out via standard readable stream spec: 
 
-	myReadableStreamBuffer.on("data", function(data) {
-		// Yup.
-		assert.isTrue(data instanceof Buffer);
-	});
+```js
+myReadableStreamBuffer.on("data", function(data) {
+	// Yup.
+	assert.isTrue(data instanceof Buffer);
+});
+```
 
-Chunks are pumped out by the interval that you specified in frequency. Setting the frequency to 0 will immediately stream the data (also in chunks). This is useful for unit testing.
+Chunks are pumped out by the interval that you specified in frequency. Setting the frequency to 0 will immediately stream the data (also in chunks), even if the stream has not been piped to a destination. This is useful for unit testing. 
 
 setEncoding() for streams is respected too:
 
-	myReadableStreamBuffer.setEncoding("utf8");
-	myReadableStreamBuffer.on("data", function(data) {
-		assert.isTrue(data instanceof String);
-	});
-	
+```js
+myReadableStreamBuffer.setEncoding("utf8");
+myReadableStreamBuffer.on("data", function(data) {
+	assert.isTrue(data instanceof String);
+});
+```
+
 Pause and resume are also implemented. pause()'ing stream will allow buffer to continue accumulating, but will not pump any of that data out until it is resume()'d again. 
 
 Destroying the stream will immediately purge the buffer, unless destroySoon() is called, in which case the rest of the buffer will be written out. Either way, any further attempts to put data in the Buffer will be silently ignored. 
 
-	myReadableStreamBuffer.destroySoon();
-	myReadableStreamBuffer.put("A String!");
-	myReadableStreamBuffer.size();			// will be 0.
-	
+```js
+myReadableStreamBuffer.destroySoon();
+myReadableStreamBuffer.put("A String!");
+myReadableStreamBuffer.size();			// will be 0.
+```
+
 ## Disclaimer
 
 Not supposed to be a speed demon, it's more for tests/debugging or weird edge cases. It works with an internal buffer that it copies contents to/from/around.
 
+## Contributors
+
+Thanks to the following people for taking some time to contribute to this project.
+
+ * Igor Dralyuk <idralyuk@ebay.com>
+ * Simon Koudijs <simon.koudijs@intellifi.nl>
+
 ## License
 
-node-stream-buffer is free and unencumbered public domain software. For more information, see the accompanying UNLICENSE file.
\ No newline at end of file
+node-stream-buffer is free and unencumbered public domain software. For more information, see the accompanying UNLICENSE file.
+
+[badge-travis-img]: http://img.shields.io/travis/samcday/node-stream-buffer.svg?style=flat-square
+[badge-travis-url]: https://travis-ci.org/samcday/node-stream-buffer
+[badge-climate-img]: http://img.shields.io/codeclimate/github/samcday/node-stream-buffer.svg?style=flat-square
+[badge-climate-url]: https://codeclimate.com/github/samcday/node-stream-buffer
+[badge-coverage-img]: http://img.shields.io/codeclimate/coverage/github/samcday/node-stream-buffer.svg?style=flat-square
+[badge-coverage-url]: https://codeclimate.com/github/samcday/node-stream-buffer
+[badge-npm-img]: https://nodei.co/npm/stream-buffers.png?downloads=true&downloadRank=true&stars=true
+[badge-npm-url]: https://npmjs.org/package/stream-buffers
+
+[node-buffer-docs]: http://nodejs.org/api/buffer.html

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/stream-buffers/lib/readable_streambuffer.js
----------------------------------------------------------------------
diff --git a/node_modules/stream-buffers/lib/readable_streambuffer.js b/node_modules/stream-buffers/lib/readable_streambuffer.js
index d08a010..5d5669a 100644
--- a/node_modules/stream-buffers/lib/readable_streambuffer.js
+++ b/node_modules/stream-buffers/lib/readable_streambuffer.js
@@ -21,26 +21,33 @@ var ReadableStreamBuffer = module.exports = function(opts) {
 	this.writable = false;
 
 	var sendData = function() {
-		if(!size) {
-			that.emit("end");
-			return;
-		}
-
 		var amount = Math.min(chunkSize, size);
-		var chunk = null;
-		if(encoding) {
-			chunk = buffer.toString(encoding, 0, amount);
-		}
-		else {
-			chunk = new Buffer(amount);
-			buffer.copy(chunk, 0, 0, amount);
-		}
 
-		that.emit("data", chunk);
+		if (amount > 0) {
+			var chunk = null;
+			if(encoding) {
+				chunk = buffer.toString(encoding, 0, amount);
+			}
+			else {
+				chunk = new Buffer(amount);
+				buffer.copy(chunk, 0, 0, amount);
+			}
+
+			that.emit("data", chunk);
+
+			if(amount < buffer.length)
+				buffer.copy(buffer, 0, amount, size);
+			size -= amount;
+		}
 
-		if(amount < buffer.length)
-			buffer.copy(buffer, 0, amount, size);
-		size -= amount;
+		if(size === 0 && !that.readable) {
+			that.emit("end");
+			that.emit("close");
+			if (sendData && sendData.interval) {
+				clearInterval(sendData.interval);
+				sendData.interval = null;
+			}
+		}
 	};
 
 	this.size = function() {
@@ -64,6 +71,7 @@ var ReadableStreamBuffer = module.exports = function(opts) {
 	this.put = function(data, encoding) {
 		if(!that.readable) return;
 
+		var wasEmpty = size === 0;
 		if(Buffer.isBuffer(data)) {
 			increaseBufferIfNecessary(data.length);
 			data.copy(buffer, size, 0);
@@ -77,6 +85,10 @@ var ReadableStreamBuffer = module.exports = function(opts) {
 			size += dataSizeInBytes;
 		}
 
+		if (wasEmpty && size > 0) {
+			this.emit('readable')
+		}
+
 		if (!this.isPaused && !frequency) {
 			while (size > 0) {
 				sendData();
@@ -101,12 +113,20 @@ var ReadableStreamBuffer = module.exports = function(opts) {
 
 	this.destroy = function() {
 		that.emit("end");
-		if(sendData.interval) clearTimeout(sendData.interval);
+		if(sendData.interval) clearInterval(sendData.interval);
 		sendData = null;
 		that.readable = false;
 		that.emit("close");
 	};
 
+	this.destroySoon = function() {
+		that.readable = false;
+		if (!sendData.interval) {
+			that.emit("end");
+			that.emit("close");
+		}
+	};
+
 	this.setEncoding = function(_encoding) {
 		encoding = _encoding;
 	};

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/stream-buffers/lib/writable_streambuffer.js
----------------------------------------------------------------------
diff --git a/node_modules/stream-buffers/lib/writable_streambuffer.js b/node_modules/stream-buffers/lib/writable_streambuffer.js
index 68968a5..de1e997 100644
--- a/node_modules/stream-buffers/lib/writable_streambuffer.js
+++ b/node_modules/stream-buffers/lib/writable_streambuffer.js
@@ -64,7 +64,7 @@ var WritableStreamBuffer = module.exports = function(opts) {
 		}
 	};
 
-	this.write = function(data, encoding) {
+	this.write = function(data, encoding, callback) {
 		if(!that.writable) return;
 
 		if(Buffer.isBuffer(data)) {
@@ -74,15 +74,18 @@ var WritableStreamBuffer = module.exports = function(opts) {
 		}
 		else {
 			data = data + "";
-			increaseBufferIfNecessary(data.length);
+			increaseBufferIfNecessary(Buffer.byteLength(data));
 			buffer.write(data, size, encoding || "utf8");
 			size += Buffer.byteLength(data);
 		}
+		
+		if(typeof callback === "function") { callback() ;}
 	};
 
 	this.end = function() {
 		var args = Array.prototype.slice.apply(arguments);
 		if(args.length) that.write.apply(that, args);
+		that.emit('finish');
 		that.destroy();
 	};
 

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/stream-buffers/package.json
----------------------------------------------------------------------
diff --git a/node_modules/stream-buffers/package.json b/node_modules/stream-buffers/package.json
index bf8081c..9f154be 100644
--- a/node_modules/stream-buffers/package.json
+++ b/node_modules/stream-buffers/package.json
@@ -2,43 +2,44 @@
   "_args": [
     [
       {
-        "raw": "stream-buffers@~0.2.3",
+        "raw": "stream-buffers@~2.2.0",
         "scope": null,
         "escapedName": "stream-buffers",
         "name": "stream-buffers",
-        "rawSpec": "~0.2.3",
-        "spec": ">=0.2.3 <0.3.0",
+        "rawSpec": "~2.2.0",
+        "spec": ">=2.2.0 <2.3.0",
         "type": "range"
       },
       "/Users/shazron/Documents/git/apache/cordova-ios/node_modules/bplist-creator"
     ]
   ],
-  "_from": "stream-buffers@>=0.2.3 <0.3.0",
-  "_id": "stream-buffers@0.2.6",
+  "_from": "stream-buffers@>=2.2.0 <2.3.0",
+  "_id": "stream-buffers@2.2.0",
   "_inCache": true,
   "_location": "/stream-buffers",
+  "_nodeVersion": "0.12.5",
   "_npmUser": {
     "name": "samcday",
     "email": "me@samcday.com.au"
   },
-  "_npmVersion": "2.0.0-alpha-5",
+  "_npmVersion": "2.11.2",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "stream-buffers@~0.2.3",
+    "raw": "stream-buffers@~2.2.0",
     "scope": null,
     "escapedName": "stream-buffers",
     "name": "stream-buffers",
-    "rawSpec": "~0.2.3",
-    "spec": ">=0.2.3 <0.3.0",
+    "rawSpec": "~2.2.0",
+    "spec": ">=2.2.0 <2.3.0",
     "type": "range"
   },
   "_requiredBy": [
     "/bplist-creator"
   ],
-  "_resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-0.2.6.tgz",
-  "_shasum": "181c08d5bb3690045f69401b9ae6a7a0cf3313fc",
+  "_resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
+  "_shasum": "91d5f5130d1cef96dcfa7f726945188741d09ee4",
   "_shrinkwrap": null,
-  "_spec": "stream-buffers@~0.2.3",
+  "_spec": "stream-buffers@~2.2.0",
   "_where": "/Users/shazron/Documents/git/apache/cordova-ios/node_modules/bplist-creator",
   "author": {
     "name": "Sam Day",
@@ -50,23 +51,25 @@
   "dependencies": {},
   "description": "Buffer-backed Streams for reading and writing.",
   "devDependencies": {
+    "istanbul": "~0.3.2",
     "vows": ">= 0.5.6"
   },
   "directories": {},
   "dist": {
-    "shasum": "181c08d5bb3690045f69401b9ae6a7a0cf3313fc",
-    "tarball": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-0.2.6.tgz"
+    "shasum": "91d5f5130d1cef96dcfa7f726945188741d09ee4",
+    "tarball": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz"
   },
   "engines": {
-    "node": ">= 0.3.0"
+    "node": ">= 0.10.0"
   },
-  "gitHead": "b1dd62eb2e127d48ed7f1e814d5451d2b0dec144",
-  "homepage": "https://github.com/samcday/node-stream-buffer",
+  "gitHead": "17024f70e0107175ede0ebcfbe9de7102d8be25f",
+  "homepage": "https://github.com/samcday/node-stream-buffer#readme",
   "keywords": [
     "memory streams",
     "streams",
     "buffer streams"
   ],
+  "license": "Unlicense",
   "main": "./lib/streambuffer.js",
   "maintainers": [
     {
@@ -76,16 +79,13 @@
   ],
   "name": "stream-buffers",
   "optionalDependencies": {},
-  "publishConfig": {
-    "registry": "https://registry.npmjs.org"
-  },
   "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/samcday/node-stream-buffer.git"
   },
   "scripts": {
-    "test": "vows --spec"
+    "test": "[ -n \"$NO_COVERAGE\" ] && vows --spec || istanbul cover vows -- --spec"
   },
-  "version": "0.2.6"
+  "version": "2.2.0"
 }

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/ccd789b9/node_modules/xcode/README.md
----------------------------------------------------------------------
diff --git a/node_modules/xcode/README.md b/node_modules/xcode/README.md
index fe902ad..0df0f73 100644
--- a/node_modules/xcode/README.md
+++ b/node_modules/xcode/README.md
@@ -39,4 +39,4 @@ To rebuild the parser js file after editing the grammar, run:
 
 ## License
 
-MIT
+Apache V2


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


Mime
View raw message