Index: node_modules/vulcanize/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/ini/ini.js |
diff --git a/node_modules/vulcanize/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/ini/ini.js b/node_modules/vulcanize/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/ini/ini.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..eaf32093317345a05ea3c268620caaff924d8c5c |
--- /dev/null |
+++ b/node_modules/vulcanize/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/ini/ini.js |
@@ -0,0 +1,166 @@ |
+ |
+exports.parse = exports.decode = decode |
+exports.stringify = exports.encode = encode |
+ |
+exports.safe = safe |
+exports.unsafe = unsafe |
+ |
+var eol = process.platform === "win32" ? "\r\n" : "\n" |
+ |
+function encode (obj, section) { |
+ var children = [] |
+ , out = "" |
+ |
+ Object.keys(obj).forEach(function (k, _, __) { |
+ var val = obj[k] |
+ if (val && Array.isArray(val)) { |
+ val.forEach(function(item) { |
+ out += safe(k + "[]") + " = " + safe(item) + "\n" |
+ }) |
+ } |
+ else if (val && typeof val === "object") { |
+ children.push(k) |
+ } else { |
+ out += safe(k) + " = " + safe(val) + eol |
+ } |
+ }) |
+ |
+ if (section && out.length) { |
+ out = "[" + safe(section) + "]" + eol + out |
+ } |
+ |
+ children.forEach(function (k, _, __) { |
+ var nk = dotSplit(k).join('\\.') |
+ var child = encode(obj[k], (section ? section + "." : "") + nk) |
+ if (out.length && child.length) { |
+ out += eol |
+ } |
+ out += child |
+ }) |
+ |
+ return out |
+} |
+ |
+function dotSplit (str) { |
+ return str.replace(/\1/g, '\2LITERAL\\1LITERAL\2') |
+ .replace(/\\\./g, '\1') |
+ .split(/\./).map(function (part) { |
+ return part.replace(/\1/g, '\\.') |
+ .replace(/\2LITERAL\\1LITERAL\2/g, '\1') |
+ }) |
+} |
+ |
+function decode (str) { |
+ var out = {} |
+ , p = out |
+ , section = null |
+ , state = "START" |
+ // section |key = value |
+ , re = /^\[([^\]]*)\]$|^([^=]+)(=(.*))?$/i |
+ , lines = str.split(/[\r\n]+/g) |
+ , section = null |
+ |
+ lines.forEach(function (line, _, __) { |
+ if (!line || line.match(/^\s*;/)) return |
+ var match = line.match(re) |
+ if (!match) return |
+ if (match[1] !== undefined) { |
+ section = unsafe(match[1]) |
+ p = out[section] = out[section] || {} |
+ return |
+ } |
+ var key = unsafe(match[2]) |
+ , value = match[3] ? unsafe((match[4] || "")) : true |
+ switch (value) { |
+ case 'true': |
+ case 'false': |
+ case 'null': value = JSON.parse(value) |
+ } |
+ |
+ // Convert keys with '[]' suffix to an array |
+ if (key.length > 2 && key.slice(-2) === "[]") { |
+ key = key.substring(0, key.length - 2) |
+ if (!p[key]) { |
+ p[key] = [] |
+ } |
+ else if (!Array.isArray(p[key])) { |
+ p[key] = [p[key]] |
+ } |
+ } |
+ |
+ // safeguard against resetting a previously defined |
+ // array by accidentally forgetting the brackets |
+ if (Array.isArray(p[key])) { |
+ p[key].push(value) |
+ } |
+ else { |
+ p[key] = value |
+ } |
+ }) |
+ |
+ // {a:{y:1},"a.b":{x:2}} --> {a:{y:1,b:{x:2}}} |
+ // use a filter to return the keys that have to be deleted. |
+ Object.keys(out).filter(function (k, _, __) { |
+ if (!out[k] || typeof out[k] !== "object" || Array.isArray(out[k])) return false |
+ // see if the parent section is also an object. |
+ // if so, add it to that, and mark this one for deletion |
+ var parts = dotSplit(k) |
+ , p = out |
+ , l = parts.pop() |
+ , nl = l.replace(/\\\./g, '.') |
+ parts.forEach(function (part, _, __) { |
+ if (!p[part] || typeof p[part] !== "object") p[part] = {} |
+ p = p[part] |
+ }) |
+ if (p === out && nl === l) return false |
+ p[nl] = out[k] |
+ return true |
+ }).forEach(function (del, _, __) { |
+ delete out[del] |
+ }) |
+ |
+ return out |
+} |
+ |
+function safe (val) { |
+ return ( typeof val !== "string" |
+ || val.match(/[\r\n]/) |
+ || val.match(/^\[/) |
+ || (val.length > 1 |
+ && val.charAt(0) === "\"" |
+ && val.slice(-1) === "\"") |
+ || val !== val.trim() ) |
+ ? JSON.stringify(val) |
+ : val.replace(/;/g, '\\;') |
+} |
+ |
+function unsafe (val, doUnesc) { |
+ val = (val || "").trim() |
+ if (val.charAt(0) === "\"" && val.slice(-1) === "\"") { |
+ try { val = JSON.parse(val) } catch (_) {} |
+ } else { |
+ // walk the val to find the first not-escaped ; character |
+ var esc = false |
+ var unesc = ""; |
+ for (var i = 0, l = val.length; i < l; i++) { |
+ var c = val.charAt(i) |
+ if (esc) { |
+ if (c === "\\" || c === ";") |
+ unesc += c |
+ else |
+ unesc += "\\" + c |
+ esc = false |
+ } else if (c === ";") { |
+ break |
+ } else if (c === "\\") { |
+ esc = true |
+ } else { |
+ unesc += c |
+ } |
+ } |
+ if (esc) |
+ unesc += "\\" |
+ return unesc |
+ } |
+ return val |
+} |