aboutsummaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/read-package-json/node_modules
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/read-package-json/node_modules')
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/CHANGELOG.md36
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/LICENSE.md7
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/README.md53
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/index.js32
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/package.json76
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/.editorconfig14
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/.npmignore28
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/LICENSE22
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/README.md29
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/index.js21
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/.npmignore9
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/LICENSE13
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/README.md243
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/index.js32
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/analyze.js92
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/document.js485
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/parse.js765
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/stringify.js383
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/unicode.js71
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/utils.js46
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/package.json69
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/package.yaml46
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/package.json66
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/test/test.js32
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/slash/index.js11
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/slash/package.json65
-rw-r--r--deps/npm/node_modules/read-package-json/node_modules/slash/readme.md44
27 files changed, 324 insertions, 2466 deletions
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/CHANGELOG.md b/deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/CHANGELOG.md
new file mode 100644
index 0000000000..843a0bcb94
--- /dev/null
+++ b/deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/CHANGELOG.md
@@ -0,0 +1,36 @@
+# Change Log
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+<a name="1.0.1"></a>
+## [1.0.1](https://github.com/zkat/json-parse-better-errors/compare/v1.0.0...v1.0.1) (2017-08-16)
+
+
+### Bug Fixes
+
+* **license:** oops. Forgot to update license.md ([efe2958](https://github.com/zkat/json-parse-better-errors/commit/efe2958))
+
+
+
+<a name="1.0.0"></a>
+# 1.0.0 (2017-08-15)
+
+
+### Features
+
+* **init:** Initial Commit ([562c977](https://github.com/zkat/json-parse-better-errors/commit/562c977))
+
+
+### BREAKING CHANGES
+
+* **init:** This is the first commit!
+
+
+
+<a name="0.1.0"></a>
+# 0.1.0 (2017-08-15)
+
+
+### Features
+
+* **init:** Initial Commit ([9dd1a19](https://github.com/zkat/json-parse-better-errors/commit/9dd1a19))
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/LICENSE.md b/deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/LICENSE.md
new file mode 100644
index 0000000000..c51842cc4a
--- /dev/null
+++ b/deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/LICENSE.md
@@ -0,0 +1,7 @@
+Copyright 2017 Kat Marchán
+
+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.
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/README.md b/deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/README.md
new file mode 100644
index 0000000000..667323c775
--- /dev/null
+++ b/deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/README.md
@@ -0,0 +1,53 @@
+# json-parse-better-errors [![npm version](https://img.shields.io/npm/v/json-parse-better-errors.svg)](https://npm.im/json-parse-better-errors) [![license](https://img.shields.io/npm/l/json-parse-better-errors.svg)](https://npm.im/json-parse-better-errors) [![Travis](https://img.shields.io/travis/zkat/json-parse-better-errors.svg)](https://travis-ci.org/zkat/json-parse-better-errors) [![AppVeyor](https://ci.appveyor.com/api/projects/status/github/zkat/json-parse-better-errors?svg=true)](https://ci.appveyor.com/project/zkat/json-parse-better-errors) [![Coverage Status](https://coveralls.io/repos/github/zkat/json-parse-better-errors/badge.svg?branch=latest)](https://coveralls.io/github/zkat/json-parse-better-errors?branch=latest)
+
+[`json-parse-better-errors`](https://github.com/zkat/json-parse-better-errors) is a Node.js library for managing
+local key and content address caches. It's really fast, really good at
+concurrency, and it will never give you corrupted data, even if cache files
+get corrupted or manipulated.
+
+It was originally written to be used as [npm](https://npm.im)'s local cache, but
+can just as easily be used on its own
+
+_Translations: [español](README.es.md)_
+
+## Install
+
+`$ npm install --save json-parse-better-errors`
+
+## Table of Contents
+
+* [Example](#example)
+* [Features](#features)
+* [Contributing](#contributing)
+* [API](#api)
+ * [`parse`](#parse)
+
+### Example
+
+```javascript
+const parseJson = require('json-parse-better-errors')
+
+parseJson('"foo"')
+parseJson('garbage') // more useful error message
+```
+
+### Features
+
+* Like JSON.parse, but the errors are better.
+
+### Contributing
+
+The json-parse-better-errors team enthusiastically welcomes contributions and project participation! There's a bunch of things you can do if you want to contribute! The [Contributor Guide](CONTRIBUTING.md) has all the information you need for everything from reporting bugs to contributing entire new features. Please don't hesitate to jump in if you'd like to, or even ask us questions if something isn't clear.
+
+All participants and maintainers in this project are expected to follow [Code of Conduct](CODE_OF_CONDUCT.md), and just generally be excellent to each other.
+
+Please refer to the [Changelog](CHANGELOG.md) for project history details, too.
+
+Happy hacking!
+
+### API
+
+#### <a name="parse"></a> `> parse(txt, ?reviver, ?context=20)`
+
+Works just like `JSON.parse`, but will include a bit more information when an
+error happens.
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/index.js b/deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/index.js
new file mode 100644
index 0000000000..32c3635866
--- /dev/null
+++ b/deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/index.js
@@ -0,0 +1,32 @@
+'use strict'
+
+module.exports = parseJson
+function parseJson (txt, reviver, context) {
+ context = context || 20
+ try {
+ return JSON.parse(txt, reviver)
+ } catch (e) {
+ const syntaxErr = e.message.match(/^Unexpected token.*position\s+(\d+)/i)
+ const errIdx = syntaxErr
+ ? +syntaxErr[1]
+ : e.message.match(/^Unexpected end of JSON.*/i)
+ ? txt.length - 1
+ : null
+ if (errIdx != null) {
+ const start = errIdx <= context
+ ? 0
+ : errIdx - context
+ const end = errIdx + context >= txt.length
+ ? txt.length
+ : errIdx + context
+ e.message += ` while parsing near '${
+ start === 0 ? '' : '...'
+ }${txt.slice(start, end)}${
+ end === txt.length ? '' : '...'
+ }'`
+ } else {
+ e.message += ` while parsing '${txt.slice(0, context * 2)}'`
+ }
+ throw e
+ }
+}
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/package.json b/deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/package.json
new file mode 100644
index 0000000000..f1dd5890c7
--- /dev/null
+++ b/deps/npm/node_modules/read-package-json/node_modules/json-parse-better-errors/package.json
@@ -0,0 +1,76 @@
+{
+ "_from": "json-parse-better-errors@^1.0.0",
+ "_id": "json-parse-better-errors@1.0.1",
+ "_inBundle": false,
+ "_integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==",
+ "_location": "/read-package-json/json-parse-better-errors",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "json-parse-better-errors@^1.0.0",
+ "name": "json-parse-better-errors",
+ "escapedName": "json-parse-better-errors",
+ "rawSpec": "^1.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^1.0.0"
+ },
+ "_requiredBy": [
+ "/read-package-json"
+ ],
+ "_resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz",
+ "_shasum": "50183cd1b2d25275de069e9e71b467ac9eab973a",
+ "_spec": "json-parse-better-errors@^1.0.0",
+ "_where": "/Users/zkat/Documents/code/npm/node_modules/read-package-json",
+ "author": {
+ "name": "Kat Marchán",
+ "email": "kzm@sykosomatic.org"
+ },
+ "bugs": {
+ "url": "https://github.com/zkat/json-parse-better-errors/issues"
+ },
+ "bundleDependencies": false,
+ "config": {
+ "nyc": {
+ "exclude": [
+ "node_modules/**",
+ "test/**"
+ ]
+ }
+ },
+ "deprecated": false,
+ "description": "JSON.parse with context information on error",
+ "devDependencies": {
+ "nyc": "^10.3.2",
+ "standard": "^9.0.2",
+ "standard-version": "^4.1.0",
+ "tap": "^10.3.3",
+ "weallbehave": "^1.2.0",
+ "weallcontribute": "^1.0.8"
+ },
+ "files": [
+ "*.js"
+ ],
+ "homepage": "https://github.com/zkat/json-parse-better-errors#readme",
+ "keywords": [
+ "JSON",
+ "parser"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "name": "json-parse-better-errors",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/zkat/json-parse-better-errors.git"
+ },
+ "scripts": {
+ "postrelease": "npm publish && git push --follow-tags",
+ "prerelease": "npm t",
+ "pretest": "standard",
+ "release": "standard-version -s",
+ "test": "tap -J --coverage test/*.js",
+ "update-coc": "weallbehave -o . && git add CODE_OF_CONDUCT.md && git commit -m 'docs(coc): updated CODE_OF_CONDUCT.md'",
+ "update-contrib": "weallcontribute -o . && git add CONTRIBUTING.md && git commit -m 'docs(contributing): updated CONTRIBUTING.md'"
+ },
+ "version": "1.0.1"
+}
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/.editorconfig b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/.editorconfig
deleted file mode 100644
index fb7f73a832..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/.editorconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-root = true
-
-[*]
-end_of_line = lf
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-[*.js, **/*.js]
-indent_size = 4
-indent_style = space
-
-[{package.json,.travis.yml}]
-indent_size = 2
-indent_style = space
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/.npmignore b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/.npmignore
deleted file mode 100644
index 59d842baa8..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/.npmignore
+++ /dev/null
@@ -1,28 +0,0 @@
-# Logs
-logs
-*.log
-
-# Runtime data
-pids
-*.pid
-*.seed
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-
-# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
-# Compiled binary addons (http://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directory
-# Commenting this out is preferred by some people, see
-# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git-
-node_modules
-
-# Users Environment Variables
-.lock-wscript
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/LICENSE b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/LICENSE
deleted file mode 100644
index e637724b3b..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Sam Mikes
-
-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.
-
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/README.md b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/README.md
deleted file mode 100644
index ffad93584b..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/README.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# json-parse-helpfulerror
-
-A drop-in replacement for `JSON.parse` that uses
-<https://npmjs.org/jju> to provide more useful error messages in the
-event of a parse error.
-
-# Example
-
-## Installation
-
-```
-npm i -S json-parse-helpfulerror
-```
-
-## Use
-
-```js
-var jph = require('json-parse-helpfulerror');
-
-var notJSON = "{'foo': 3}"; // keys must be double-quoted in JSON
-
-JSON.parse(notJSON); // throws unhelpful error
-
-jph.parse("{'foo': 3}") // throws more helpful error: "Unexpected token '\''..."
-```
-
-# License
-
-MIT \ No newline at end of file
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/index.js b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/index.js
deleted file mode 100644
index 15648b017b..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/index.js
+++ /dev/null
@@ -1,21 +0,0 @@
-'use strict';
-
-var jju = require('jju');
-
-function parse(text, reviver) {
- try {
- return JSON.parse(text, reviver);
- } catch (err) {
- // we expect this to throw with a more informative message
- jju.parse(text, {
- mode: 'json',
- reviver: reviver
- });
-
- // backup if jju is not as strict as JSON.parse; re-throw error
- // data-dependent code path, I do not know how to cover it
- throw err;
- }
-}
-
-exports.parse = parse;
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/.npmignore b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/.npmignore
deleted file mode 100644
index 5ae40150ee..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/.npmignore
+++ /dev/null
@@ -1,9 +0,0 @@
-package.json
-node_modules
-test
-benchmark
-docs
-examples
-/.editorconfig
-/.eslint*
-/.travis.yml
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/LICENSE b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/LICENSE
deleted file mode 100644
index 5c93f45654..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/LICENSE
+++ /dev/null
@@ -1,13 +0,0 @@
- DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
- Version 2, December 2004
-
- Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
-
- Everyone is permitted to copy and distribute verbatim or modified
- copies of this license document, and changing it is allowed as long
- as the name is changed.
-
- DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. You just DO WHAT THE FUCK YOU WANT TO.
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/README.md b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/README.md
deleted file mode 100644
index 85d52a2dce..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/README.md
+++ /dev/null
@@ -1,243 +0,0 @@
-`jju` - a set of utilities to work with JSON / JSON5 documents
-
-[![npm version badge](https://img.shields.io/npm/v/jju.svg)](https://www.npmjs.org/package/jju)
-[![travis badge](http://img.shields.io/travis/rlidwka/jju.svg)](https://travis-ci.org/rlidwka/jju)
-[![downloads badge](http://img.shields.io/npm/dm/jju.svg)](https://www.npmjs.org/package/jju)
-
-## Installation
-
-```
-npm install jju
-```
-
-## Usage
-
-This module provides following functions:
-
-1. [jju.parse()](#jjuparse-function) parses json/json5 text and returns a javascript value it corresponds to
-2. [jju.stringify()](#jjustringify-function) converts javascript value to an appropriate json/json5 text
-3. [jju.tokenize()](#jjutokenize-function) parses json/json5 text and returns an array of tokens it consists of ([see demo](http://rlidwka.github.io/jju/tokenizer.html))
-4. [jju.analyze()](#jjuanalyze-function) parses json/json5 text and tries to guess indentation, quoting style, etc.
-5. [jju.update()](#jjuupdate-function) changes json/json5 text, preserving original formatting as much as possible ([see demo](http://rlidwka.github.io/jju/editor.html))
-
-All functions are able to work with a standard JSON documents. `jju.parse()` and `jju.stringify()` are better in some cases, but slower than native `JSON.parse()` and `JSON.stringify()` versions. Detailed description see below.
-
-### jju.parse() function
-
-```javascript
-/*
- * Main syntax:
- *
- * `text` - text to parse, type: String
- * `options` - parser options, type: Object
- */
-jju.parse(text[, options])
-
-// compatibility syntax
-jju.parse(text[, reviver])
-```
-
-Options:
-
- - reserved\_keys - what to do with reserved keys (String, default="ignore")
- - "ignore" - ignore reserved keys
- - "throw" - throw SyntaxError in case of reserved keys
- - "replace" - replace reserved keys, this is the default JSON.parse behaviour, unsafe
-
- Reserved keys are keys that exist in an empty object (`hasOwnProperty`, `__proto__`, etc.).
-
-```javascript
-// 'ignore' will cause reserved keys to be ignored:
-parse('{hasOwnProperty: 1}', {reserved_keys: 'ignore'}) == {}
-parse('{hasOwnProperty: 1, x: 2}', {reserved_keys: 'ignore'}).hasOwnProperty('x') == true
-
-// 'throw' will cause SyntaxError in these cases:
-parse('{hasOwnProperty: 1}', {reserved_keys: 'throw'}) == SyntaxError
-
-// 'replace' will replace reserved keys with new ones:
-parse('{hasOwnProperty: 1}', {reserved_keys: 'throw'}) == {hasOwnProperty: 1}
-parse('{hasOwnProperty: 1, x: 2}', {reserved_keys: 'ignore'}).hasOwnProperty('x') == TypeError
-```
-
-
- - null\_prototype - create object as Object.create(null) instead of '{}' (Boolean)
-
- if `reserved_keys != 'replace'`, default is **false**
-
- if `reserved_keys == 'replace'`, default is **true**
-
- It is usually unsafe and not recommended to change this option to false in the last case.
-
- - reviver - reviver function - Function
-
- This function should follow JSON specification
-
- - mode - operation mode, set it to 'json' if you want to throw on non-strict json files (String)
-
-### jju.stringify() function
-
-```javascript
-/*
- * Main syntax:
- *
- * `value` - value to serialize, type: *
- * `options` - serializer options, type: Object
- */
-jju.stringify(value[, options])
-
-// compatibility syntax
-jju.stringify(value[, replacer [, indent])
-```
-
-Options:
-
- - ascii - output ascii only (Boolean, default=false)
- If this option is enabled, output will not have any characters except of 0x20-0x7f.
-
- - indent - indentation (String, Number or Boolean, default='\t')
- This option follows JSON specification.
-
- - quote - enquoting char (String, "'" or '"', default="'")
- - quote\_keys - whether keys quoting in objects is required or not (String, default=false)
- If you want `{"q": 1}` instead of `{q: 1}`, set it to true.
-
- - sort\_keys - sort all keys while stringifying (Boolean or Function, default=false)
- By default sort order will depend on implementation, with v8 it's insertion order. If set to `true`, all keys (but not arrays) will be sorted alphabetically. You can provide your own sorting function as well.
-
- - replacer - replacer function or array (Function or Array)
- This option follows JSON specification.
-
- - no\_trailing\_comma = don't output trailing comma (Boolean, default=false)
- If this option is set, arrays like this `[1,2,3,]` will never be generated. Otherwise they may be generated for pretty printing.
-
- - mode - operation mode, set it to 'json' if you want correct json in the output (String)
-
- Currently it's either 'json' or something else. If it is 'json', following options are implied:
-
- - options.quote = '"'
- - options.no\_trailing\_comma = true
- - options.quote\_keys = true
- - '\x' literals are not used
-
-### jju.tokenize() function
-
-```javascript
-/*
- * Main syntax:
- *
- * `text` - text to tokenize, type: String
- * `options` - parser options, type: Object
- */
-jju.tokenize(text[, options])
-```
-
-Options are the same as for the `jju.parse` function.
-
-Return value is an array of tokens, where each token is an object:
-
- - raw (String) - raw text of this token, if you join all raw's, you will get the original document
- - type (String) - type of the token, can be `whitespace`, `comment`, `key`, `literal`, `separator` or `newline`
- - stack (Array) - path to the current token in the syntax tree
- - value - value of the token if token is a `key` or `literal`
-
-You can check tokenizer for yourself using [this demo](http://rlidwka.github.io/jju/tokenizer.html).
-
-### jju.analyze() function
-
-```javascript
-/*
- * Main syntax:
- *
- * `text` - text to analyze, type: String
- * `options` - parser options, type: Object
- */
-jju.analyze(text[, options])
-```
-
-Options are the same as for the `jju.parse` function.
-
-Return value is an object defining a programming style in which the document was written.
-
- - indent (String) - preferred indentation
- - newline (String) - preferred newline
- - quote (String) - `"` or `'` depending on which quote is preferred
- - quote\_keys (Boolean) - `true` if unquoted keys were used at least once
- - has\_whitespace (Boolean) - `true` if input has a whitespace token
- - has\_comments (Boolean) - `true` if input has a comment token
- - has\_newlines (Boolean) - `true` if input has a newline token
- - has\_trailing\_comma (Boolean) - `true` if input has at least one trailing comma
-
-### jju.update() function
-
-```javascript
-/*
- * Main syntax:
- *
- * `text` - original text, type: String
- * `new_value` - new value you want to set
- * `options` - parser or stringifier options, type: Object
- */
-jju.update(text, new_value[, options])
-```
-
-If you want to update a JSON document, here is the general approach:
-
-```javascript
-// here is your original JSON document:
-var input = '{"foo": "bar", "baz": 123}'
-
-// you need to parse it first:
-var json = jju.parse(input, {mode: 'json'})
-// json is { foo: 'bar', baz: 123 }
-
-// then you can change it as you like:
-json.foo = 'quux'
-json.hello = 'world'
-
-// then you run an update function to change the original json:
-var output = jju.update(input, json, {mode: 'json'})
-// output is '{"foo": "quux", "baz": 123, "hello": "world"}'
-```
-
-Look at [this demo](http://rlidwka.github.io/jju/editor.html) to test various types of json.
-
-## Advantages over existing JSON libraries
-
-In a few cases it makes sense to use this module instead of built-in JSON methods.
-
-Parser:
- - better error reporting with source code and line numbers
-
-In case of syntax error, JSON.parse does not return any good information to the user. This module does:
-
-```
-$ node -e 'require("jju").parse("[1,1,1,1,invalid]")'
-
-SyntaxError: Unexpected token 'i' at 0:9
-[1,1,1,1,invalid]
- ^
-```
-
-This module is about 5 times slower, so if user experience matters to you more than performance, use this module. If you're working with a lot of machine-generated data, use JSON.parse instead.
-
-Stringifier:
- - util.inspect-like pretty printing
-
-This module behaves more smart when dealing with object and arrays, and does not always print newlines in them:
-
-```
-$ node -e 'console.log(require("./").stringify([[,,,],,,[,,,,]], {mode:"json"}))'
-[
- [null, null, null],
- null,
- null,
- [null, null, null, null]
-]
-```
-
-JSON.stringify will split this into 15 lines, and it's hard to read.
-
-Yet again, this feature comes with a performance hit, so if user experience matters to you more than performance, use this module. If your JSON will be consumed by machines, use JSON.stringify instead.
-
-As a rule of thumb, if you use "space" argument to indent your JSON, you'd better use this module instead.
-
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/index.js b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/index.js
deleted file mode 100644
index 50f1624963..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/index.js
+++ /dev/null
@@ -1,32 +0,0 @@
-
-module.exports.__defineGetter__('parse', function() {
- return require('./lib/parse').parse
-})
-
-module.exports.__defineGetter__('stringify', function() {
- return require('./lib/stringify').stringify
-})
-
-module.exports.__defineGetter__('tokenize', function() {
- return require('./lib/parse').tokenize
-})
-
-module.exports.__defineGetter__('update', function() {
- return require('./lib/document').update
-})
-
-module.exports.__defineGetter__('analyze', function() {
- return require('./lib/analyze').analyze
-})
-
-module.exports.__defineGetter__('utils', function() {
- return require('./lib/utils')
-})
-
-/**package
-{ "name": "jju",
- "version": "0.0.0",
- "dependencies": {"js-yaml": "*"},
- "scripts": {"postinstall": "js-yaml package.yaml > package.json ; npm install"}
-}
-**/
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/analyze.js b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/analyze.js
deleted file mode 100644
index 9b0f9af01c..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/analyze.js
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Author: Alex Kocharin <alex@kocharin.ru>
- * GIT: https://github.com/rlidwka/jju
- * License: WTFPL, grab your copy here: http://www.wtfpl.net/txt/copying/
- */
-
-var tokenize = require('./parse').tokenize
-
-module.exports.analyze = function analyzeJSON(input, options) {
- if (options == null) options = {}
-
- if (!Array.isArray(input)) {
- input = tokenize(input, options)
- }
-
- var result = {
- has_whitespace: false,
- has_comments: false,
- has_newlines: false,
- has_trailing_comma: false,
- indent: '',
- newline: '\n',
- quote: '"',
- quote_keys: true,
- }
-
- var stats = {
- indent: {},
- newline: {},
- quote: {},
- }
-
- for (var i=0; i<input.length; i++) {
- if (input[i].type === 'newline') {
- if (input[i+1] && input[i+1].type === 'whitespace') {
- if (input[i+1].raw[0] === '\t') {
- // if first is tab, then indent is tab
- stats.indent['\t'] = (stats.indent['\t'] || 0) + 1
- }
- if (input[i+1].raw.match(/^\x20+$/)) {
- // if all are spaces, then indent is space
- // this can fail with mixed indent (4, 2 would display 3)
- var ws_len = input[i+1].raw.length
- var indent_len = input[i+1].stack.length + 1
- if (ws_len % indent_len === 0) {
- var t = Array(ws_len / indent_len + 1).join(' ')
- stats.indent[t] = (stats.indent[t] || 0) + 1
- }
- }
- }
-
- stats.newline[input[i].raw] = (stats.newline[input[i].raw] || 0) + 1
- }
-
- if (input[i].type === 'newline') {
- result.has_newlines = true
- }
- if (input[i].type === 'whitespace') {
- result.has_whitespace = true
- }
- if (input[i].type === 'comment') {
- result.has_comments = true
- }
- if (input[i].type === 'key') {
- if (input[i].raw[0] !== '"' && input[i].raw[0] !== "'") result.quote_keys = false
- }
-
- if (input[i].type === 'key' || input[i].type === 'literal') {
- if (input[i].raw[0] === '"' || input[i].raw[0] === "'") {
- stats.quote[input[i].raw[0]] = (stats.quote[input[i].raw[0]] || 0) + 1
- }
- }
-
- if (input[i].type === 'separator' && input[i].raw === ',') {
- for (var j=i+1; j<input.length; j++) {
- if (input[j].type === 'literal' || input[j].type === 'key') break
- if (input[j].type === 'separator') result.has_trailing_comma = true
- }
- }
- }
-
- for (var k in stats) {
- if (Object.keys(stats[k]).length) {
- result[k] = Object.keys(stats[k]).reduce(function(a, b) {
- return stats[k][a] > stats[k][b] ? a : b
- })
- }
- }
-
- return result
-}
-
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/document.js b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/document.js
deleted file mode 100644
index cfab8691fc..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/document.js
+++ /dev/null
@@ -1,485 +0,0 @@
-/*
- * Author: Alex Kocharin <alex@kocharin.ru>
- * GIT: https://github.com/rlidwka/jju
- * License: WTFPL, grab your copy here: http://www.wtfpl.net/txt/copying/
- */
-
-var assert = require('assert')
-var tokenize = require('./parse').tokenize
-var stringify = require('./stringify').stringify
-var analyze = require('./analyze').analyze
-
-function isObject(x) {
- return typeof(x) === 'object' && x !== null
-}
-
-function value_to_tokenlist(value, stack, options, is_key, indent) {
- options = Object.create(options)
- options._stringify_key = !!is_key
-
- if (indent) {
- options._prefix = indent.prefix.map(function(x) {
- return x.raw
- }).join('')
- }
-
- if (options._splitMin == null) options._splitMin = 0
- if (options._splitMax == null) options._splitMax = 0
-
- var stringified = stringify(value, options)
-
- if (is_key) {
- return [ { raw: stringified, type: 'key', stack: stack, value: value } ]
- }
-
- options._addstack = stack
- var result = tokenize(stringified, {
- _addstack: stack,
- })
- result.data = null
- return result
-}
-
-// '1.2.3' -> ['1','2','3']
-function arg_to_path(path) {
- // array indexes
- if (typeof(path) === 'number') path = String(path)
-
- if (path === '') path = []
- if (typeof(path) === 'string') path = path.split('.')
-
- if (!Array.isArray(path)) throw Error('Invalid path type, string or array expected')
- return path
-}
-
-// returns new [begin, end] or false if not found
-//
-// {x:3, xxx: 111, y: [111, {q: 1, e: 2} ,333] }
-// f('y',0) returns this B^^^^^^^^^^^^^^^^^^^^^^^^E
-// then f('1',1) would reduce it to B^^^^^^^^^^E
-function find_element_in_tokenlist(element, lvl, tokens, begin, end) {
- while(tokens[begin].stack[lvl] != element) {
- if (begin++ >= end) return false
- }
- while(tokens[end].stack[lvl] != element) {
- if (end-- < begin) return false
- }
- return [begin, end]
-}
-
-function is_whitespace(token_type) {
- return token_type === 'whitespace'
- || token_type === 'newline'
- || token_type === 'comment'
-}
-
-function find_first_non_ws_token(tokens, begin, end) {
- while(is_whitespace(tokens[begin].type)) {
- if (begin++ >= end) return false
- }
- return begin
-}
-
-function find_last_non_ws_token(tokens, begin, end) {
- while(is_whitespace(tokens[end].type)) {
- if (end-- < begin) return false
- }
- return end
-}
-
-/*
- * when appending a new element of an object/array, we are trying to
- * figure out the style used on the previous element
- *
- * return {prefix, sep1, sep2, suffix}
- *
- * ' "key" : "element" \r\n'
- * prefix^^^^ sep1^ ^^sep2 ^^^^^^^^suffix
- *
- * begin - the beginning of the object/array
- * end - last token of the last element (value or comma usually)
- */
-function detect_indent_style(tokens, is_array, begin, end, level) {
- var result = {
- sep1: [],
- sep2: [],
- suffix: [],
- prefix: [],
- newline: [],
- }
-
- if (tokens[end].type === 'separator' && tokens[end].stack.length !== level+1 && tokens[end].raw !== ',') {
- // either a beginning of the array (no last element) or other weird situation
- //
- // just return defaults
- return result
- }
-
- // ' "key" : "value" ,'
- // skipping last separator, we're now here ^^
- if (tokens[end].type === 'separator')
- end = find_last_non_ws_token(tokens, begin, end - 1)
- if (end === false) return result
-
- // ' "key" : "value" ,'
- // skipping value ^^^^^^^
- while(tokens[end].stack.length > level) end--
-
- if (!is_array) {
- while(is_whitespace(tokens[end].type)) {
- if (end < begin) return result
- if (tokens[end].type === 'whitespace') {
- result.sep2.unshift(tokens[end])
- } else {
- // newline, comment or other unrecognized codestyle
- return result
- }
- end--
- }
-
- // ' "key" : "value" ,'
- // skipping separator ^
- assert.equal(tokens[end].type, 'separator')
- assert.equal(tokens[end].raw, ':')
- while(is_whitespace(tokens[--end].type)) {
- if (end < begin) return result
- if (tokens[end].type === 'whitespace') {
- result.sep1.unshift(tokens[end])
- } else {
- // newline, comment or other unrecognized codestyle
- return result
- }
- }
-
- assert.equal(tokens[end].type, 'key')
- end--
- }
-
- // ' "key" : "value" ,'
- // skipping key ^^^^^
- while(is_whitespace(tokens[end].type)) {
- if (end < begin) return result
- if (tokens[end].type === 'whitespace') {
- result.prefix.unshift(tokens[end])
- } else if (tokens[end].type === 'newline') {
- result.newline.unshift(tokens[end])
- return result
- } else {
- // comment or other unrecognized codestyle
- return result
- }
- end--
- }
-
- return result
-}
-
-function Document(text, options) {
- var self = Object.create(Document.prototype)
-
- if (options == null) options = {}
- //options._structure = true
- var tokens = self._tokens = tokenize(text, options)
- self._data = tokens.data
- tokens.data = null
- self._options = options
-
- var stats = analyze(text, options)
- if (options.indent == null) {
- options.indent = stats.indent
- }
- if (options.quote == null) {
- options.quote = stats.quote
- }
- if (options.quote_keys == null) {
- options.quote_keys = stats.quote_keys
- }
- if (options.no_trailing_comma == null) {
- options.no_trailing_comma = !stats.has_trailing_comma
- }
- return self
-}
-
-// return true if it's a proper object
-// throw otherwise
-function check_if_can_be_placed(key, object, is_unset) {
- //if (object == null) return false
- function error(add) {
- return Error("You can't " + (is_unset ? 'unset' : 'set') + " key '" + key + "'" + add)
- }
-
- if (!isObject(object)) {
- throw error(' of an non-object')
- }
- if (Array.isArray(object)) {
- // array, check boundary
- if (String(key).match(/^\d+$/)) {
- key = Number(String(key))
- if (object.length < key || (is_unset && object.length === key)) {
- throw error(', out of bounds')
- } else if (is_unset && object.length !== key+1) {
- throw error(' in the middle of an array')
- } else {
- return true
- }
- } else {
- throw error(' of an array')
- }
- } else {
- // object
- return true
- }
-}
-
-// usage: document.set('path.to.something', 'value')
-// or: document.set(['path','to','something'], 'value')
-Document.prototype.set = function(path, value) {
- path = arg_to_path(path)
-
- // updating this._data and check for errors
- if (path.length === 0) {
- if (value === undefined) throw Error("can't remove root document")
- this._data = value
- var new_key = false
-
- } else {
- var data = this._data
-
- for (var i=0; i<path.length-1; i++) {
- check_if_can_be_placed(path[i], data, false)
- data = data[path[i]]
- }
- if (i === path.length-1) {
- check_if_can_be_placed(path[i], data, value === undefined)
- }
-
- var new_key = !(path[i] in data)
-
- if (value === undefined) {
- if (Array.isArray(data)) {
- data.pop()
- } else {
- delete data[path[i]]
- }
- } else {
- data[path[i]] = value
- }
- }
-
- // for inserting document
- if (!this._tokens.length)
- this._tokens = [ { raw: '', type: 'literal', stack: [], value: undefined } ]
-
- var position = [
- find_first_non_ws_token(this._tokens, 0, this._tokens.length - 1),
- find_last_non_ws_token(this._tokens, 0, this._tokens.length - 1),
- ]
- for (var i=0; i<path.length-1; i++) {
- position = find_element_in_tokenlist(path[i], i, this._tokens, position[0], position[1])
- if (position == false) throw Error('internal error, please report this')
- }
- // assume that i == path.length-1 here
-
- if (path.length === 0) {
- var newtokens = value_to_tokenlist(value, path, this._options)
- // all good
-
- } else if (!new_key) {
- // replace old value with a new one (or deleting something)
- var pos_old = position
- position = find_element_in_tokenlist(path[i], i, this._tokens, position[0], position[1])
-
- if (value === undefined && position !== false) {
- // deleting element (position !== false ensures there's something)
- var newtokens = []
-
- if (!Array.isArray(data)) {
- // removing element from an object, `{x:1, key:CURRENT} -> {x:1}`
- // removing sep, literal and optional sep
- // ':'
- var pos2 = find_last_non_ws_token(this._tokens, pos_old[0], position[0] - 1)
- assert.equal(this._tokens[pos2].type, 'separator')
- assert.equal(this._tokens[pos2].raw, ':')
- position[0] = pos2
-
- // key
- var pos2 = find_last_non_ws_token(this._tokens, pos_old[0], position[0] - 1)
- assert.equal(this._tokens[pos2].type, 'key')
- assert.equal(this._tokens[pos2].value, path[path.length-1])
- position[0] = pos2
- }
-
- // removing comma in arrays and objects
- var pos2 = find_last_non_ws_token(this._tokens, pos_old[0], position[0] - 1)
- assert.equal(this._tokens[pos2].type, 'separator')
- if (this._tokens[pos2].raw === ',') {
- position[0] = pos2
- } else {
- // beginning of the array/object, so we should remove trailing comma instead
- pos2 = find_first_non_ws_token(this._tokens, position[1] + 1, pos_old[1])
- assert.equal(this._tokens[pos2].type, 'separator')
- if (this._tokens[pos2].raw === ',') {
- position[1] = pos2
- }
- }
-
- } else {
- var indent = pos2 !== false
- ? detect_indent_style(this._tokens, Array.isArray(data), pos_old[0], position[1] - 1, i)
- : {}
- var newtokens = value_to_tokenlist(value, path, this._options, false, indent)
- }
-
- } else {
- // insert new key, that's tricky
- var path_1 = path.slice(0, i)
-
- // find a last separator after which we're inserting it
- var pos2 = find_last_non_ws_token(this._tokens, position[0] + 1, position[1] - 1)
- assert(pos2 !== false)
-
- var indent = pos2 !== false
- ? detect_indent_style(this._tokens, Array.isArray(data), position[0] + 1, pos2, i)
- : {}
-
- var newtokens = value_to_tokenlist(value, path, this._options, false, indent)
-
- // adding leading whitespaces according to detected codestyle
- var prefix = []
- if (indent.newline && indent.newline.length)
- prefix = prefix.concat(indent.newline)
- if (indent.prefix && indent.prefix.length)
- prefix = prefix.concat(indent.prefix)
-
- // adding '"key":' (as in "key":"value") to object values
- if (!Array.isArray(data)) {
- prefix = prefix.concat(value_to_tokenlist(path[path.length-1], path_1, this._options, true))
- if (indent.sep1 && indent.sep1.length)
- prefix = prefix.concat(indent.sep1)
- prefix.push({raw: ':', type: 'separator', stack: path_1})
- if (indent.sep2 && indent.sep2.length)
- prefix = prefix.concat(indent.sep2)
- }
-
- newtokens.unshift.apply(newtokens, prefix)
-
- // check if prev token is a separator AND they're at the same level
- if (this._tokens[pos2].type === 'separator' && this._tokens[pos2].stack.length === path.length-1) {
- // previous token is either , or [ or {
- if (this._tokens[pos2].raw === ',') {
- // restore ending comma
- newtokens.push({raw: ',', type: 'separator', stack: path_1})
- }
- } else {
- // previous token isn't a separator, so need to insert one
- newtokens.unshift({raw: ',', type: 'separator', stack: path_1})
- }
-
- if (indent.suffix && indent.suffix.length)
- newtokens.push.apply(newtokens, indent.suffix)
-
- assert.equal(this._tokens[position[1]].type, 'separator')
- position[0] = pos2+1
- position[1] = pos2
- }
-
- newtokens.unshift(position[1] - position[0] + 1)
- newtokens.unshift(position[0])
- this._tokens.splice.apply(this._tokens, newtokens)
-
- return this
-}
-
-// convenience method
-Document.prototype.unset = function(path) {
- return this.set(path, undefined)
-}
-
-Document.prototype.get = function(path) {
- path = arg_to_path(path)
-
- var data = this._data
- for (var i=0; i<path.length; i++) {
- if (!isObject(data)) return undefined
- data = data[path[i]]
- }
- return data
-}
-
-Document.prototype.has = function(path) {
- path = arg_to_path(path)
-
- var data = this._data
- for (var i=0; i<path.length; i++) {
- if (!isObject(data)) return false
- data = data[path[i]]
- }
- return data !== undefined
-}
-
-// compare old object and new one, and change differences only
-Document.prototype.update = function(value) {
- var self = this
- change([], self._data, value)
- return self
-
- function change(path, old_data, new_data) {
- if (!isObject(new_data) || !isObject(old_data)) {
- // if source or dest is primitive, just replace
- if (new_data !== old_data)
- self.set(path, new_data)
-
- } else if (Array.isArray(new_data) != Array.isArray(old_data)) {
- // old data is an array XOR new data is an array, replace as well
- self.set(path, new_data)
-
- } else if (Array.isArray(new_data)) {
- // both values are arrays here
-
- if (new_data.length > old_data.length) {
- // adding new elements, so going forward
- for (var i=0; i<new_data.length; i++) {
- path.push(String(i))
- change(path, old_data[i], new_data[i])
- path.pop()
- }
-
- } else {
- // removing something, so going backward
- for (var i=old_data.length-1; i>=0; i--) {
- path.push(String(i))
- change(path, old_data[i], new_data[i])
- path.pop()
- }
- }
-
- } else {
- // both values are objects here
- for (var i in new_data) {
- path.push(String(i))
- change(path, old_data[i], new_data[i])
- path.pop()
- }
-
- for (var i in old_data) {
- if (i in new_data) continue
- path.push(String(i))
- change(path, old_data[i], new_data[i])
- path.pop()
- }
- }
- }
-}
-
-Document.prototype.toString = function() {
- return this._tokens.map(function(x) {
- return x.raw
- }).join('')
-}
-
-module.exports.Document = Document
-
-module.exports.update = function updateJSON(source, new_value, options) {
- return Document(source, options).update(new_value).toString()
-}
-
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/parse.js b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/parse.js
deleted file mode 100644
index 0c9fbe6880..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/parse.js
+++ /dev/null
@@ -1,765 +0,0 @@
-/*
- * Author: Alex Kocharin <alex@kocharin.ru>
- * GIT: https://github.com/rlidwka/jju
- * License: WTFPL, grab your copy here: http://www.wtfpl.net/txt/copying/
- */
-
-// RTFM: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
-
-var Uni = require('./unicode')
-
-function isHexDigit(x) {
- return (x >= '0' && x <= '9')
- || (x >= 'A' && x <= 'F')
- || (x >= 'a' && x <= 'f')
-}
-
-function isOctDigit(x) {
- return x >= '0' && x <= '7'
-}
-
-function isDecDigit(x) {
- return x >= '0' && x <= '9'
-}
-
-var unescapeMap = {
- '\'': '\'',
- '"' : '"',
- '\\': '\\',
- 'b' : '\b',
- 'f' : '\f',
- 'n' : '\n',
- 'r' : '\r',
- 't' : '\t',
- 'v' : '\v',
- '/' : '/',
-}
-
-function formatError(input, msg, position, lineno, column, json5) {
- var result = msg + ' at ' + (lineno + 1) + ':' + (column + 1)
- , tmppos = position - column - 1
- , srcline = ''
- , underline = ''
-
- var isLineTerminator = json5 ? Uni.isLineTerminator : Uni.isLineTerminatorJSON
-
- // output no more than 70 characters before the wrong ones
- if (tmppos < position - 70) {
- tmppos = position - 70
- }
-
- while (1) {
- var chr = input[++tmppos]
-
- if (isLineTerminator(chr) || tmppos === input.length) {
- if (position >= tmppos) {
- // ending line error, so show it after the last char
- underline += '^'
- }
- break
- }
- srcline += chr
-
- if (position === tmppos) {
- underline += '^'
- } else if (position > tmppos) {
- underline += input[tmppos] === '\t' ? '\t' : ' '
- }
-
- // output no more than 78 characters on the string
- if (srcline.length > 78) break
- }
-
- return result + '\n' + srcline + '\n' + underline
-}
-
-function parse(input, options) {
- // parse as a standard JSON mode
- var json5 = false;
- var cjson = false;
-
- if (options.legacy || options.mode === 'json') {
- // use json
- } else if (options.mode === 'cjson') {
- cjson = true;
- } else if (options.mode === 'json5') {
- json5 = true;
- } else {
- // use it by default
- json5 = true;
- }
-
- var isLineTerminator = json5 ? Uni.isLineTerminator : Uni.isLineTerminatorJSON
- var isWhiteSpace = json5 ? Uni.isWhiteSpace : Uni.isWhiteSpaceJSON
-
- var length = input.length
- , lineno = 0
- , linestart = 0
- , position = 0
- , stack = []
-
- var tokenStart = function() {}
- var tokenEnd = function(v) {return v}
-
- /* tokenize({
- raw: '...',
- type: 'whitespace'|'comment'|'key'|'literal'|'separator'|'newline',
- value: 'number'|'string'|'whatever',
- path: [...],
- })
- */
- if (options._tokenize) {
- ;(function() {
- var start = null
- tokenStart = function() {
- if (start !== null) throw Error('internal error, token overlap')
- start = position
- }
-
- tokenEnd = function(v, type) {
- if (start != position) {
- var hash = {
- raw: input.substr(start, position-start),
- type: type,
- stack: stack.slice(0),
- }
- if (v !== undefined) hash.value = v
- options._tokenize.call(null, hash)
- }
- start = null
- return v
- }
- })()
- }
-
- function fail(msg) {
- var column = position - linestart
-
- if (!msg) {
- if (position < length) {
- var token = '\'' +
- JSON
- .stringify(input[position])
- .replace(/^"|"$/g, '')
- .replace(/'/g, "\\'")
- .replace(/\\"/g, '"')
- + '\''
-
- if (!msg) msg = 'Unexpected token ' + token
- } else {
- if (!msg) msg = 'Unexpected end of input'
- }
- }
-
- var error = SyntaxError(formatError(input, msg, position, lineno, column, json5))
- error.row = lineno + 1
- error.column = column + 1
- throw error
- }
-
- function newline(chr) {
- // account for <cr><lf>
- if (chr === '\r' && input[position] === '\n') position++
- linestart = position
- lineno++
- }
-
- function parseGeneric() {
- var result
-
- while (position < length) {
- tokenStart()
- var chr = input[position++]
-
- if (chr === '"' || (chr === '\'' && json5)) {
- return tokenEnd(parseString(chr), 'literal')
-
- } else if (chr === '{') {
- tokenEnd(undefined, 'separator')
- return parseObject()
-
- } else if (chr === '[') {
- tokenEnd(undefined, 'separator')
- return parseArray()
-
- } else if (chr === '-'
- || chr === '.'
- || isDecDigit(chr)
- // + number Infinity NaN
- || (json5 && (chr === '+' || chr === 'I' || chr === 'N'))
- ) {
- return tokenEnd(parseNumber(), 'literal')
-
- } else if (chr === 'n') {
- parseKeyword('null')
- return tokenEnd(null, 'literal')
-
- } else if (chr === 't') {
- parseKeyword('true')
- return tokenEnd(true, 'literal')
-
- } else if (chr === 'f') {
- parseKeyword('false')
- return tokenEnd(false, 'literal')
-
- } else {
- position--
- return tokenEnd(undefined)
- }
- }
- }
-
- function parseKey() {
- var result
-
- while (position < length) {
- tokenStart()
- var chr = input[position++]
-
- if (chr === '"' || (chr === '\'' && json5)) {
- return tokenEnd(parseString(chr), 'key')
-
- } else if (chr === '{') {
- tokenEnd(undefined, 'separator')
- return parseObject()
-
- } else if (chr === '[') {
- tokenEnd(undefined, 'separator')
- return parseArray()
-
- } else if (chr === '.'
- || isDecDigit(chr)
- ) {
- return tokenEnd(parseNumber(true), 'key')
-
- } else if (json5
- && Uni.isIdentifierStart(chr) || (chr === '\\' && input[position] === 'u')) {
- // unicode char or a unicode sequence
- var rollback = position - 1
- var result = parseIdentifier()
-
- if (result === undefined) {
- position = rollback
- return tokenEnd(undefined)
- } else {
- return tokenEnd(result, 'key')
- }
-
- } else {
- position--
- return tokenEnd(undefined)
- }
- }
- }
-
- function skipWhiteSpace() {
- tokenStart()
- while (position < length) {
- var chr = input[position++]
-
- if (isLineTerminator(chr)) {
- position--
- tokenEnd(undefined, 'whitespace')
- tokenStart()
- position++
- newline(chr)
- tokenEnd(undefined, 'newline')
- tokenStart()
-
- } else if (isWhiteSpace(chr)) {
- // nothing
-
- } else if (chr === '/'
- && (json5 || cjson)
- && (input[position] === '/' || input[position] === '*')
- ) {
- position--
- tokenEnd(undefined, 'whitespace')
- tokenStart()
- position++
- skipComment(input[position++] === '*')
- tokenEnd(undefined, 'comment')
- tokenStart()
-
- } else {
- position--
- break
- }
- }
- return tokenEnd(undefined, 'whitespace')
- }
-
- function skipComment(multi) {
- while (position < length) {
- var chr = input[position++]
-
- if (isLineTerminator(chr)) {
- // LineTerminator is an end of singleline comment
- if (!multi) {
- // let parent function deal with newline
- position--
- return
- }
-
- newline(chr)
-
- } else if (chr === '*' && multi) {
- // end of multiline comment
- if (input[position] === '/') {
- position++
- return
- }
-
- } else {
- // nothing
- }
- }
-
- if (multi) {
- fail('Unclosed multiline comment')
- }
- }
-
- function parseKeyword(keyword) {
- // keyword[0] is not checked because it should've checked earlier
- var _pos = position
- var len = keyword.length
- for (var i=1; i<len; i++) {
- if (position >= length || keyword[i] != input[position]) {
- position = _pos-1
- fail()
- }
- position++
- }
- }
-
- function parseObject() {
- var result = options.null_prototype ? Object.create(null) : {}
- , empty_object = {}
- , is_non_empty = false
-
- while (position < length) {
- skipWhiteSpace()
- var item1 = parseKey()
- skipWhiteSpace()
- tokenStart()
- var chr = input[position++]
- tokenEnd(undefined, 'separator')
-
- if (chr === '}' && item1 === undefined) {
- if (!json5 && is_non_empty) {
- position--
- fail('Trailing comma in object')
- }
- return result
-
- } else if (chr === ':' && item1 !== undefined) {
- skipWhiteSpace()
- stack.push(item1)
- var item2 = parseGeneric()
- stack.pop()
-
- if (item2 === undefined) fail('No value found for key ' + item1)
- if (typeof(item1) !== 'string') {
- if (!json5 || typeof(item1) !== 'number') {
- fail('Wrong key type: ' + item1)
- }
- }
-
- if ((item1 in empty_object || empty_object[item1] != null) && options.reserved_keys !== 'replace') {
- if (options.reserved_keys === 'throw') {
- fail('Reserved key: ' + item1)
- } else {
- // silently ignore it
- }
- } else {
- if (typeof(options.reviver) === 'function') {
- item2 = options.reviver.call(null, item1, item2)
- }
-
- if (item2 !== undefined) {
- is_non_empty = true
- Object.defineProperty(result, item1, {
- value: item2,
- enumerable: true,
- configurable: true,
- writable: true,
- })
- }
- }
-
- skipWhiteSpace()
-
- tokenStart()
- var chr = input[position++]
- tokenEnd(undefined, 'separator')
-
- if (chr === ',') {
- continue
-
- } else if (chr === '}') {
- return result
-
- } else {
- fail()
- }
-
- } else {
- position--
- fail()
- }
- }
-
- fail()
- }
-
- function parseArray() {
- var result = []
-
- while (position < length) {
- skipWhiteSpace()
- stack.push(result.length)
- var item = parseGeneric()
- stack.pop()
- skipWhiteSpace()
- tokenStart()
- var chr = input[position++]
- tokenEnd(undefined, 'separator')
-
- if (item !== undefined) {
- if (typeof(options.reviver) === 'function') {
- item = options.reviver.call(null, String(result.length), item)
- }
- if (item === undefined) {
- result.length++
- item = true // hack for check below, not included into result
- } else {
- result.push(item)
- }
- }
-
- if (chr === ',') {
- if (item === undefined) {
- fail('Elisions are not supported')
- }
-
- } else if (chr === ']') {
- if (!json5 && item === undefined && result.length) {
- position--
- fail('Trailing comma in array')
- }
- return result
-
- } else {
- position--
- fail()
- }
- }
- }
-
- function parseNumber() {
- // rewind because we don't know first char
- position--
-
- var start = position
- , chr = input[position++]
- , t
-
- var to_num = function(is_octal) {
- var str = input.substr(start, position - start)
-
- if (is_octal) {
- var result = parseInt(str.replace(/^0o?/, ''), 8)
- } else {
- var result = Number(str)
- }
-
- if (Number.isNaN(result)) {
- position--
- fail('Bad numeric literal - "' + input.substr(start, position - start + 1) + '"')
- } else if (!json5 && !str.match(/^-?(0|[1-9][0-9]*)(\.[0-9]+)?(e[+-]?[0-9]+)?$/i)) {
- // additional restrictions imposed by json
- position--
- fail('Non-json numeric literal - "' + input.substr(start, position - start + 1) + '"')
- } else {
- return result
- }
- }
-
- // ex: -5982475.249875e+29384
- // ^ skipping this
- if (chr === '-' || (chr === '+' && json5)) chr = input[position++]
-
- if (chr === 'N' && json5) {
- parseKeyword('NaN')
- return NaN
- }
-
- if (chr === 'I' && json5) {
- parseKeyword('Infinity')
-
- // returning +inf or -inf
- return to_num()
- }
-
- if (chr >= '1' && chr <= '9') {
- // ex: -5982475.249875e+29384
- // ^^^ skipping these
- while (position < length && isDecDigit(input[position])) position++
- chr = input[position++]
- }
-
- // special case for leading zero: 0.123456
- if (chr === '0') {
- chr = input[position++]
-
- // new syntax, "0o777" old syntax, "0777"
- var is_octal = chr === 'o' || chr === 'O' || isOctDigit(chr)
- var is_hex = chr === 'x' || chr === 'X'
-
- if (json5 && (is_octal || is_hex)) {
- while (position < length
- && (is_hex ? isHexDigit : isOctDigit)( input[position] )
- ) position++
-
- var sign = 1
- if (input[start] === '-') {
- sign = -1
- start++
- } else if (input[start] === '+') {
- start++
- }
-
- return sign * to_num(is_octal)
- }
- }
-
- if (chr === '.') {
- // ex: -5982475.249875e+29384
- // ^^^ skipping these
- while (position < length && isDecDigit(input[position])) position++
- chr = input[position++]
- }
-
- if (chr === 'e' || chr === 'E') {
- chr = input[position++]
- if (chr === '-' || chr === '+') position++
- // ex: -5982475.249875e+29384
- // ^^^ skipping these
- while (position < length && isDecDigit(input[position])) position++
- chr = input[position++]
- }
-
- // we have char in the buffer, so count for it
- position--
- return to_num()
- }
-
- function parseIdentifier() {
- // rewind because we don't know first char
- position--
-
- var result = ''
-
- while (position < length) {
- var chr = input[position++]
-
- if (chr === '\\'
- && input[position] === 'u'
- && isHexDigit(input[position+1])
- && isHexDigit(input[position+2])
- && isHexDigit(input[position+3])
- && isHexDigit(input[position+4])
- ) {
- // UnicodeEscapeSequence
- chr = String.fromCharCode(parseInt(input.substr(position+1, 4), 16))
- position += 5
- }
-
- if (result.length) {
- // identifier started
- if (Uni.isIdentifierPart(chr)) {
- result += chr
- } else {
- position--
- return result
- }
-
- } else {
- if (Uni.isIdentifierStart(chr)) {
- result += chr
- } else {
- return undefined
- }
- }
- }
-
- fail()
- }
-
- function parseString(endChar) {
- // 7.8.4 of ES262 spec
- var result = ''
-
- while (position < length) {
- var chr = input[position++]
-
- if (chr === endChar) {
- return result
-
- } else if (chr === '\\') {
- if (position >= length) fail()
- chr = input[position++]
-
- if (unescapeMap[chr] && (json5 || (chr != 'v' && chr != "'"))) {
- result += unescapeMap[chr]
-
- } else if (json5 && isLineTerminator(chr)) {
- // line continuation
- newline(chr)
-
- } else if (chr === 'u' || (chr === 'x' && json5)) {
- // unicode/character escape sequence
- var off = chr === 'u' ? 4 : 2
-
- // validation for \uXXXX
- for (var i=0; i<off; i++) {
- if (position >= length) fail()
- if (!isHexDigit(input[position])) fail('Bad escape sequence')
- position++
- }
-
- result += String.fromCharCode(parseInt(input.substr(position-off, off), 16))
- } else if (json5 && isOctDigit(chr)) {
- if (chr < '4' && isOctDigit(input[position]) && isOctDigit(input[position+1])) {
- // three-digit octal
- var digits = 3
- } else if (isOctDigit(input[position])) {
- // two-digit octal
- var digits = 2
- } else {
- var digits = 1
- }
- position += digits - 1
- result += String.fromCharCode(parseInt(input.substr(position-digits, digits), 8))
- /*if (!isOctDigit(input[position])) {
- // \0 is allowed still
- result += '\0'
- } else {
- fail('Octal literals are not supported')
- }*/
-
- } else if (json5) {
- // \X -> x
- result += chr
-
- } else {
- position--
- fail()
- }
-
- } else if (isLineTerminator(chr)) {
- fail()
-
- } else {
- if (!json5 && chr.charCodeAt(0) < 32) {
- position--
- fail('Unexpected control character')
- }
-
- // SourceCharacter but not one of " or \ or LineTerminator
- result += chr
- }
- }
-
- fail()
- }
-
- skipWhiteSpace()
- var return_value = parseGeneric()
- if (return_value !== undefined || position < length) {
- skipWhiteSpace()
-
- if (position >= length) {
- if (typeof(options.reviver) === 'function') {
- return_value = options.reviver.call(null, '', return_value)
- }
- return return_value
- } else {
- fail()
- }
-
- } else {
- if (position) {
- fail('No data, only a whitespace')
- } else {
- fail('No data, empty input')
- }
- }
-}
-
-/*
- * parse(text, options)
- * or
- * parse(text, reviver)
- *
- * where:
- * text - string
- * options - object
- * reviver - function
- */
-module.exports.parse = function parseJSON(input, options) {
- // support legacy functions
- if (typeof(options) === 'function') {
- options = {
- reviver: options
- }
- }
-
- if (input === undefined) {
- // parse(stringify(x)) should be equal x
- // with JSON functions it is not 'cause of undefined
- // so we're fixing it
- return undefined
- }
-
- // JSON.parse compat
- if (typeof(input) !== 'string') input = String(input)
- if (options == null) options = {}
- if (options.reserved_keys == null) options.reserved_keys = 'ignore'
-
- if (options.reserved_keys === 'throw' || options.reserved_keys === 'ignore') {
- if (options.null_prototype == null) {
- options.null_prototype = true
- }
- }
-
- try {
- return parse(input, options)
- } catch(err) {
- // jju is a recursive parser, so JSON.parse("{{{{{{{") could blow up the stack
- //
- // this catch is used to skip all those internal calls
- if (err instanceof SyntaxError && err.row != null && err.column != null) {
- var old_err = err
- err = SyntaxError(old_err.message)
- err.column = old_err.column
- err.row = old_err.row
- }
- throw err
- }
-}
-
-module.exports.tokenize = function tokenizeJSON(input, options) {
- if (options == null) options = {}
-
- options._tokenize = function(smth) {
- if (options._addstack) smth.stack.unshift.apply(smth.stack, options._addstack)
- tokens.push(smth)
- }
-
- var tokens = []
- tokens.data = module.exports.parse(input, options)
- return tokens
-}
-
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/stringify.js b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/stringify.js
deleted file mode 100644
index 232229ecc8..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/stringify.js
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
- * Author: Alex Kocharin <alex@kocharin.ru>
- * GIT: https://github.com/rlidwka/jju
- * License: WTFPL, grab your copy here: http://www.wtfpl.net/txt/copying/
- */
-
-var Uni = require('./unicode')
-
-// Fix Function#name on browsers that do not support it (IE)
-// http://stackoverflow.com/questions/6903762/function-name-not-supported-in-ie
-if (!(function f(){}).name) {
- Object.defineProperty((function(){}).constructor.prototype, 'name', {
- get: function() {
- var name = this.toString().match(/^\s*function\s*(\S*)\s*\(/)[1]
- // For better performance only parse once, and then cache the
- // result through a new accessor for repeated access.
- Object.defineProperty(this, 'name', { value: name })
- return name
- }
- })
-}
-
-var special_chars = {
- 0: '\\0', // this is not an octal literal
- 8: '\\b',
- 9: '\\t',
- 10: '\\n',
- 11: '\\v',
- 12: '\\f',
- 13: '\\r',
- 92: '\\\\',
-}
-
-// for oddballs
-var hasOwnProperty = Object.prototype.hasOwnProperty
-
-// some people escape those, so I'd copy this to be safe
-var escapable = /[\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/
-
-function _stringify(object, options, recursiveLvl, currentKey) {
- var json5 = (options.mode === 'json5' || !options.mode)
- /*
- * Opinionated decision warning:
- *
- * Objects are serialized in the following form:
- * { type: 'Class', data: DATA }
- *
- * Class is supposed to be a function, and new Class(DATA) is
- * supposed to be equivalent to the original value
- */
- /*function custom_type() {
- return stringify({
- type: object.constructor.name,
- data: object.toString()
- })
- }*/
-
- // if add, it's an internal indentation, so we add 1 level and a eol
- // if !add, it's an ending indentation, so we just indent
- function indent(str, add) {
- var prefix = options._prefix ? options._prefix : ''
- if (!options.indent) return prefix + str
- var result = ''
- var count = recursiveLvl + (add || 0)
- for (var i=0; i<count; i++) result += options.indent
- return prefix + result + str + (add ? '\n' : '')
- }
-
- function _stringify_key(key) {
- if (options.quote_keys) return _stringify_str(key)
- if (String(Number(key)) == key && key[0] != '-') return key
- if (key == '') return _stringify_str(key)
-
- var result = ''
- for (var i=0; i<key.length; i++) {
- if (i > 0) {
- if (!Uni.isIdentifierPart(key[i]))
- return _stringify_str(key)
-
- } else {
- if (!Uni.isIdentifierStart(key[i]))
- return _stringify_str(key)
- }
-
- var chr = key.charCodeAt(i)
-
- if (options.ascii) {
- if (chr < 0x80) {
- result += key[i]
-
- } else {
- result += '\\u' + ('0000' + chr.toString(16)).slice(-4)
- }
-
- } else {
- if (escapable.exec(key[i])) {
- result += '\\u' + ('0000' + chr.toString(16)).slice(-4)
-
- } else {
- result += key[i]
- }
- }
- }
-
- return result
- }
-
- function _stringify_str(key) {
- var quote = options.quote
- var quoteChr = quote.charCodeAt(0)
-
- var result = ''
- for (var i=0; i<key.length; i++) {
- var chr = key.charCodeAt(i)
-
- if (chr < 0x10) {
- if (chr === 0 && json5) {
- result += '\\0'
- } else if (chr >= 8 && chr <= 13 && (json5 || chr !== 11)) {
- result += special_chars[chr]
- } else if (json5) {
- result += '\\x0' + chr.toString(16)
- } else {
- result += '\\u000' + chr.toString(16)
- }
-
- } else if (chr < 0x20) {
- if (json5) {
- result += '\\x' + chr.toString(16)
- } else {
- result += '\\u00' + chr.toString(16)
- }
-
- } else if (chr >= 0x20 && chr < 0x80) {
- // ascii range
- if (chr === 47 && i && key[i-1] === '<') {
- // escaping slashes in </script>
- result += '\\' + key[i]
-
- } else if (chr === 92) {
- result += '\\\\'
-
- } else if (chr === quoteChr) {
- result += '\\' + quote
-
- } else {
- result += key[i]
- }
-
- } else if (options.ascii || Uni.isLineTerminator(key[i]) || escapable.exec(key[i])) {
- if (chr < 0x100) {
- if (json5) {
- result += '\\x' + chr.toString(16)
- } else {
- result += '\\u00' + chr.toString(16)
- }
-
- } else if (chr < 0x1000) {
- result += '\\u0' + chr.toString(16)
-
- } else if (chr < 0x10000) {
- result += '\\u' + chr.toString(16)
-
- } else {
- throw Error('weird codepoint')
- }
- } else {
- result += key[i]
- }
- }
- return quote + result + quote
- }
-
- function _stringify_object() {
- if (object === null) return 'null'
- var result = []
- , len = 0
- , braces
-
- if (Array.isArray(object)) {
- braces = '[]'
- for (var i=0; i<object.length; i++) {
- var s = _stringify(object[i], options, recursiveLvl+1, String(i))
- if (s === undefined) s = 'null'
- len += s.length + 2
- result.push(s + ',')
- }
-
- } else {
- braces = '{}'
- var fn = function(key) {
- var t = _stringify(object[key], options, recursiveLvl+1, key)
- if (t !== undefined) {
- t = _stringify_key(key) + ':' + (options.indent ? ' ' : '') + t + ','
- len += t.length + 1
- result.push(t)
- }
- }
-
- if (Array.isArray(options.replacer)) {
- for (var i=0; i<options.replacer.length; i++)
- if (hasOwnProperty.call(object, options.replacer[i]))
- fn(options.replacer[i])
- } else {
- var keys = Object.keys(object)
- if (options.sort_keys)
- keys = keys.sort(typeof(options.sort_keys) === 'function'
- ? options.sort_keys : undefined)
- keys.forEach(fn)
- }
- }
-
- // objects shorter than 30 characters are always inlined
- // objects longer than 60 characters are always splitted to multiple lines
- // anything in the middle depends on indentation level
- len -= 2
- if (options.indent && (len > options._splitMax - recursiveLvl * options.indent.length || len > options._splitMin) ) {
- // remove trailing comma in multiline if asked to
- if (options.no_trailing_comma && result.length) {
- result[result.length-1] = result[result.length-1].substring(0, result[result.length-1].length-1)
- }
-
- var innerStuff = result.map(function(x) {return indent(x, 1)}).join('')
- return braces[0]
- + (options.indent ? '\n' : '')
- + innerStuff
- + indent(braces[1])
- } else {
- // always remove trailing comma in one-lined arrays
- if (result.length) {
- result[result.length-1] = result[result.length-1].substring(0, result[result.length-1].length-1)
- }
-
- var innerStuff = result.join(options.indent ? ' ' : '')
- return braces[0]
- + innerStuff
- + braces[1]
- }
- }
-
- function _stringify_nonobject(object) {
- if (typeof(options.replacer) === 'function') {
- object = options.replacer.call(null, currentKey, object)
- }
-
- switch(typeof(object)) {
- case 'string':
- return _stringify_str(object)
-
- case 'number':
- if (object === 0 && 1/object < 0) {
- // Opinionated decision warning:
- //
- // I want cross-platform negative zero in all js engines
- // I know they're equal, but why lose that tiny bit of
- // information needlessly?
- return '-0'
- }
- if (!json5 && !Number.isFinite(object)) {
- // json don't support infinity (= sucks)
- return 'null'
- }
- return object.toString()
-
- case 'boolean':
- return object.toString()
-
- case 'undefined':
- return undefined
-
- case 'function':
-// return custom_type()
-
- default:
- // fallback for something weird
- return JSON.stringify(object)
- }
- }
-
- if (options._stringify_key) {
- return _stringify_key(object)
- }
-
- if (typeof(object) === 'object') {
- if (object === null) return 'null'
-
- var str
- if (typeof(str = object.toJSON5) === 'function' && options.mode !== 'json') {
- object = str.call(object, currentKey)
-
- } else if (typeof(str = object.toJSON) === 'function') {
- object = str.call(object, currentKey)
- }
-
- if (object === null) return 'null'
- if (typeof(object) !== 'object') return _stringify_nonobject(object)
-
- if (object.constructor === Number || object.constructor === Boolean || object.constructor === String) {
- object = object.valueOf()
- return _stringify_nonobject(object)
-
- } else if (object.constructor === Date) {
- // only until we can't do better
- return _stringify_nonobject(object.toISOString())
-
- } else {
- if (typeof(options.replacer) === 'function') {
- object = options.replacer.call(null, currentKey, object)
- if (typeof(object) !== 'object') return _stringify_nonobject(object)
- }
-
- return _stringify_object(object)
- }
- } else {
- return _stringify_nonobject(object)
- }
-}
-
-/*
- * stringify(value, options)
- * or
- * stringify(value, replacer, space)
- *
- * where:
- * value - anything
- * options - object
- * replacer - function or array
- * space - boolean or number or string
- */
-module.exports.stringify = function stringifyJSON(object, options, _space) {
- // support legacy syntax
- if (typeof(options) === 'function' || Array.isArray(options)) {
- options = {
- replacer: options
- }
- } else if (typeof(options) === 'object' && options !== null) {
- // nothing to do
- } else {
- options = {}
- }
- if (_space != null) options.indent = _space
-
- if (options.indent == null) options.indent = '\t'
- if (options.quote == null) options.quote = "'"
- if (options.ascii == null) options.ascii = false
- if (options.mode == null) options.mode = 'json5'
-
- if (options.mode === 'json' || options.mode === 'cjson') {
- // json only supports double quotes (= sucks)
- options.quote = '"'
-
- // json don't support trailing commas (= sucks)
- options.no_trailing_comma = true
-
- // json don't support unquoted property names (= sucks)
- options.quote_keys = true
- }
-
- // why would anyone use such objects?
- if (typeof(options.indent) === 'object') {
- if (options.indent.constructor === Number
- || options.indent.constructor === Boolean
- || options.indent.constructor === String)
- options.indent = options.indent.valueOf()
- }
-
- // gap is capped at 10 characters
- if (typeof(options.indent) === 'number') {
- if (options.indent >= 0) {
- options.indent = Array(Math.min(~~options.indent, 10) + 1).join(' ')
- } else {
- options.indent = false
- }
- } else if (typeof(options.indent) === 'string') {
- options.indent = options.indent.substr(0, 10)
- }
-
- if (options._splitMin == null) options._splitMin = 50
- if (options._splitMax == null) options._splitMax = 70
-
- return _stringify(object, options, 0, '')
-}
-
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/unicode.js b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/unicode.js
deleted file mode 100644
index 1a29143c2d..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/unicode.js
+++ /dev/null
@@ -1,71 +0,0 @@
-
-// This is autogenerated with esprima tools, see:
-// https://github.com/ariya/esprima/blob/master/esprima.js
-//
-// PS: oh God, I hate Unicode
-
-// ECMAScript 5.1/Unicode v6.3.0 NonAsciiIdentifierStart:
-
-var Uni = module.exports
-
-module.exports.isWhiteSpace = function isWhiteSpace(x) {
- // section 7.2, table 2
- return x === '\u0020'
- || x === '\u00A0'
- || x === '\uFEFF' // <-- this is not a Unicode WS, only a JS one
- || (x >= '\u0009' && x <= '\u000D') // 9 A B C D
-
- // + whitespace characters from unicode, category Zs
- || x === '\u1680'
- || x === '\u180E'
- || (x >= '\u2000' && x <= '\u200A') // 0 1 2 3 4 5 6 7 8 9 A
- || x === '\u2028'
- || x === '\u2029'
- || x === '\u202F'
- || x === '\u205F'
- || x === '\u3000'
-}
-
-module.exports.isWhiteSpaceJSON = function isWhiteSpaceJSON(x) {
- return x === '\u0020'
- || x === '\u0009'
- || x === '\u000A'
- || x === '\u000D'
-}
-
-module.exports.isLineTerminator = function isLineTerminator(x) {
- // ok, here is the part when JSON is wrong
- // section 7.3, table 3
- return x === '\u000A'
- || x === '\u000D'
- || x === '\u2028'
- || x === '\u2029'
-}
-
-module.exports.isLineTerminatorJSON = function isLineTerminatorJSON(x) {
- return x === '\u000A'
- || x === '\u000D'
-}
-
-module.exports.isIdentifierStart = function isIdentifierStart(x) {
- return x === '$'
- || x === '_'
- || (x >= 'A' && x <= 'Z')
- || (x >= 'a' && x <= 'z')
- || (x >= '\u0080' && Uni.NonAsciiIdentifierStart.test(x))
-}
-
-module.exports.isIdentifierPart = function isIdentifierPart(x) {
- return x === '$'
- || x === '_'
- || (x >= 'A' && x <= 'Z')
- || (x >= 'a' && x <= 'z')
- || (x >= '0' && x <= '9') // <-- addition to Start
- || (x >= '\u0080' && Uni.NonAsciiIdentifierPart.test(x))
-}
-
-module.exports.NonAsciiIdentifierStart = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/
-
-// ECMAScript 5.1/Unicode v6.3.0 NonAsciiIdentifierPart:
-
-module.exports.NonAsciiIdentifierPart = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/utils.js b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/utils.js
deleted file mode 100644
index a8476b6c46..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/lib/utils.js
+++ /dev/null
@@ -1,46 +0,0 @@
-var FS = require('fs')
-var jju = require('../')
-
-// this function registers json5 extension, so you
-// can do `require("./config.json5")` kind of thing
-module.exports.register = function() {
- var r = require, e = 'extensions'
- r[e]['.json5'] = function(m, f) {
- /*eslint no-sync:0*/
- m.exports = jju.parse(FS.readFileSync(f, 'utf8'))
- }
-}
-
-// this function monkey-patches JSON.parse, so it
-// will return an exact position of error in case
-// of parse failure
-module.exports.patch_JSON_parse = function() {
- var _parse = JSON.parse
- JSON.parse = function(text, rev) {
- try {
- return _parse(text, rev)
- } catch(err) {
- // this call should always throw
- require('jju').parse(text, {
- mode: 'json',
- legacy: true,
- reviver: rev,
- reserved_keys: 'replace',
- null_prototype: false,
- })
-
- // if it didn't throw, but original parser did,
- // this is an error in this library and should be reported
- throw err
- }
- }
-}
-
-// this function is an express/connect middleware
-// that accepts uploads in application/json5 format
-module.exports.middleware = function() {
- return function(req, res, next) {
- throw Error('this function is removed, use express-json5 instead')
- }
-}
-
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/package.json b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/package.json
deleted file mode 100644
index 8eb5b70e76..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/package.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- "_from": "jju@^1.1.0",
- "_id": "jju@1.3.0",
- "_integrity": "sha1-2t2e8BkkvHKLA/L3l5vb1i96Kqo=",
- "_location": "/read-package-json/json-parse-helpfulerror/jju",
- "_phantomChildren": {},
- "_requested": {
- "type": "range",
- "registry": true,
- "raw": "jju@^1.1.0",
- "name": "jju",
- "escapedName": "jju",
- "rawSpec": "^1.1.0",
- "saveSpec": null,
- "fetchSpec": "^1.1.0"
- },
- "_requiredBy": [
- "/read-package-json/json-parse-helpfulerror"
- ],
- "_resolved": "https://registry.npmjs.org/jju/-/jju-1.3.0.tgz",
- "_shasum": "dadd9ef01924bc728b03f2f7979bdbd62f7a2aaa",
- "_shrinkwrap": null,
- "_spec": "jju@^1.1.0",
- "_where": "/Users/zkat/Documents/code/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror",
- "author": {
- "name": "Alex Kocharin",
- "email": "alex@kocharin.ru"
- },
- "bin": null,
- "bugs": {
- "url": "https://github.com/rlidwka/jju/issues"
- },
- "bundleDependencies": false,
- "dependencies": {},
- "deprecated": false,
- "description": "a set of utilities to work with JSON / JSON5 documents",
- "devDependencies": {
- "eslint": "~0.4.2",
- "js-yaml": ">=3.1.0",
- "mocha": ">=1.21.0"
- },
- "homepage": "http://rlidwka.github.io/jju/",
- "keywords": [
- "json",
- "json5",
- "parser",
- "serializer",
- "data"
- ],
- "license": {
- "type": "WTFPL",
- "url": "http://www.wtfpl.net/txt/copying/"
- },
- "name": "jju",
- "optionalDependencies": {},
- "peerDependencies": {},
- "publishConfig": {
- "registry": "https://registry.npmjs.org/"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/rlidwka/jju.git"
- },
- "scripts": {
- "lint": "eslint -c ./.eslint.yaml ./lib",
- "test": "mocha test/*.js"
- },
- "version": "1.3.0"
-}
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/package.yaml b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/package.yaml
deleted file mode 100644
index fdbb5372d4..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/package.yaml
+++ /dev/null
@@ -1,46 +0,0 @@
-# use "yapm install ." if you're installing this from git repository
-
-# "jju" stands for "json/json5 utils"
-name: jju
-
-version: 1.3.0
-description: a set of utilities to work with JSON / JSON5 documents
-
-author:
- name: Alex Kocharin
- email: alex@kocharin.ru
-
-repository:
- type: git
- url: git://github.com/rlidwka/jju
-
-bugs:
- url: https://github.com/rlidwka/jju/issues
-
-homepage: http://rlidwka.github.io/jju/
-
-devDependencies:
- mocha: '>=1.21.0'
- js-yaml: '>=3.1.0'
-
- # linting tools
- eslint: '~0.4.2'
-
-scripts:
- test: 'mocha test/*.js'
- lint: 'eslint -c ./.eslint.yaml ./lib'
-
-keywords:
- - json
- - json5
- - parser
- - serializer
- - data
-
-publishConfig:
- registry: https://registry.npmjs.org/
-
-license:
- type: WTFPL
- url: http://www.wtfpl.net/txt/copying/
-
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/package.json b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/package.json
deleted file mode 100644
index 85d9f7e127..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/package.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "_from": "json-parse-helpfulerror@^1.0.2",
- "_id": "json-parse-helpfulerror@1.0.3",
- "_integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=",
- "_location": "/read-package-json/json-parse-helpfulerror",
- "_phantomChildren": {},
- "_requested": {
- "type": "range",
- "registry": true,
- "raw": "json-parse-helpfulerror@^1.0.2",
- "name": "json-parse-helpfulerror",
- "escapedName": "json-parse-helpfulerror",
- "rawSpec": "^1.0.2",
- "saveSpec": null,
- "fetchSpec": "^1.0.2"
- },
- "_requiredBy": [
- "/read-package-json"
- ],
- "_resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz",
- "_shasum": "13f14ce02eed4e981297b64eb9e3b932e2dd13dc",
- "_shrinkwrap": null,
- "_spec": "json-parse-helpfulerror@^1.0.2",
- "_where": "/Users/zkat/Documents/code/npm/node_modules/read-package-json",
- "author": {
- "name": "Sam Mikes",
- "email": "smikes@cubane.com"
- },
- "bin": null,
- "bugs": {
- "url": "https://github.com/smikes/json-parse-helpfulerror/issues"
- },
- "bundleDependencies": false,
- "dependencies": {
- "jju": "^1.1.0"
- },
- "deprecated": false,
- "description": "A drop-in replacement for JSON.parse that uses `jju` to give helpful errors",
- "devDependencies": {
- "code": "^1.2.1",
- "jslint": "^0.7.1",
- "lab": "^5.1.1"
- },
- "homepage": "https://github.com/smikes/json-parse-helpfulerror",
- "keywords": [
- "json",
- "parse",
- "line",
- "doublequote",
- "error"
- ],
- "license": "MIT",
- "main": "index.js",
- "name": "json-parse-helpfulerror",
- "optionalDependencies": {},
- "peerDependencies": {},
- "repository": {
- "type": "git",
- "url": "git+https://github.com/smikes/json-parse-helpfulerror.git"
- },
- "scripts": {
- "lint": "jslint --edition=latest --terse *.js",
- "test": "lab -c"
- },
- "version": "1.0.3"
-}
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/test/test.js b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/test/test.js
deleted file mode 100644
index fca458ac08..0000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/test/test.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var Code = require('code'),
- Lab = require('lab'),
- lab = Lab.script(),
- jph = require('..'); // 'json-parse-helpfulerror'
-
-exports.lab = lab;
-
-lab.test('can parse', function (done) {
- var o = jph.parse('{"foo": "bar"}');
-
- Code.expect(o.foo).to.equal('bar');
- done();
-});
-
-lab.test('helpful error for bad JSON', function (done) {
-
- var bad = "{'foo': 'bar'}";
-
- Code.expect(function () { JSON.parse(bad) }).to.throw();
-
- Code.expect(function () { jph.parse(bad) }).to.throw(SyntaxError, "Unexpected token '\\'' at 1:2\n" + bad + '\n ^');
-
- done();
-});
-
-lab.test('fails if reviver throws', function (done) {
- function badReviver() { throw new ReferenceError('silly'); }
-
- Code.expect(function () { jph.parse('3', badReviver) }).to.throw(ReferenceError, 'silly');
-
- done();
-}); \ No newline at end of file
diff --git a/deps/npm/node_modules/read-package-json/node_modules/slash/index.js b/deps/npm/node_modules/read-package-json/node_modules/slash/index.js
new file mode 100644
index 0000000000..b946a0841a
--- /dev/null
+++ b/deps/npm/node_modules/read-package-json/node_modules/slash/index.js
@@ -0,0 +1,11 @@
+'use strict';
+module.exports = function (str) {
+ var isExtendedLengthPath = /^\\\\\?\\/.test(str);
+ var hasNonAscii = /[^\x00-\x80]+/.test(str);
+
+ if (isExtendedLengthPath || hasNonAscii) {
+ return str;
+ }
+
+ return str.replace(/\\/g, '/');
+};
diff --git a/deps/npm/node_modules/read-package-json/node_modules/slash/package.json b/deps/npm/node_modules/read-package-json/node_modules/slash/package.json
new file mode 100644
index 0000000000..847f1844de
--- /dev/null
+++ b/deps/npm/node_modules/read-package-json/node_modules/slash/package.json
@@ -0,0 +1,65 @@
+{
+ "_from": "slash@^1.0.0",
+ "_id": "slash@1.0.0",
+ "_inBundle": false,
+ "_integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+ "_location": "/read-package-json/slash",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "slash@^1.0.0",
+ "name": "slash",
+ "escapedName": "slash",
+ "rawSpec": "^1.0.0",
+ "saveSpec": null,
+ "fetchSpec": "^1.0.0"
+ },
+ "_requiredBy": [
+ "/read-package-json"
+ ],
+ "_resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+ "_shasum": "c41f2f6c39fc16d1cd17ad4b5d896114ae470d55",
+ "_spec": "slash@^1.0.0",
+ "_where": "/Users/rebecca/code/npm/node_modules/read-package-json",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "http://sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/slash/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "Convert Windows backslash paths to slash paths",
+ "devDependencies": {
+ "mocha": "*"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/sindresorhus/slash#readme",
+ "keywords": [
+ "path",
+ "seperator",
+ "sep",
+ "slash",
+ "backslash",
+ "windows",
+ "win"
+ ],
+ "license": "MIT",
+ "name": "slash",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/slash.git"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "version": "1.0.0"
+}
diff --git a/deps/npm/node_modules/read-package-json/node_modules/slash/readme.md b/deps/npm/node_modules/read-package-json/node_modules/slash/readme.md
new file mode 100644
index 0000000000..15672f010e
--- /dev/null
+++ b/deps/npm/node_modules/read-package-json/node_modules/slash/readme.md
@@ -0,0 +1,44 @@
+# slash [![Build Status](https://travis-ci.org/sindresorhus/slash.svg?branch=master)](https://travis-ci.org/sindresorhus/slash)
+
+> Convert Windows backslash paths to slash paths: `foo\\bar` ➔ `foo/bar`
+
+[Forward-slash paths can be used in Windows](http://superuser.com/a/176395/6877) as long as they're not extended-length paths and don't contain any non-ascii characters.
+
+This was created since the `path` methods in Node outputs `\\` paths on Windows.
+
+
+## Install
+
+```sh
+$ npm install --save slash
+```
+
+
+## Usage
+
+```js
+var path = require('path');
+var slash = require('slash');
+
+var str = path.join('foo', 'bar');
+// Unix => foo/bar
+// Windows => foo\\bar
+
+slash(str);
+// Unix => foo/bar
+// Windows => foo/bar
+```
+
+
+## API
+
+### slash(path)
+
+Type: `string`
+
+Accepts a Windows backslash path and returns a slash path.
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)