From 8fff93701ca20a11404f2158fe85f94f959a3b9b Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Thu, 26 Oct 2017 15:47:24 -0700 Subject: [PATCH 01/19] Better documentation for initial values. --- README.md | 17 +++++++++++++++++ src/initialValueMap.js | 8 ++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4bd34c0..5b7182c 100644 --- a/README.md +++ b/README.md @@ -316,6 +316,23 @@ setting a property to its initial value. * `property` - string. the property to which the value is assigned. * `value` string. the value to check. +##### Examples + +```js +console.log(isInitialValue('padding-left', '0')); +// => true +console.log(isInitialValue('padding-left', '0px')); +// => true +console.log(isInitialValue('padding-left', '1px')); +// => false +console.log(isInitialValue('padding', '0')); +// => true +console.log(isInitialValue('padding', '0 0px 0in')); +// => true +console.log(isInitialValue('padding', '1px')); +// => false +``` + ### [initialValues(property, recursivelyResolve, includeShorthands)](./src/initialValueMap.js) Get the initial values for a property. diff --git a/src/initialValueMap.js b/src/initialValueMap.js index de9b7b0..0e1730c 100644 --- a/src/initialValueMap.js +++ b/src/initialValueMap.js @@ -4,10 +4,10 @@ const isShorthandProperty = require('./isShorthandProperty'); /** * Initial values are highly cacheable since they are just a function of the - * css specification so this module. By default we cache initial values lazily - * when each property's initial value is first requested. A function - * `computeInitialValues` is provided to warm the entire cache on demand if - * needed. + * css specification so this module stores all values in a singleton. By + * default we cache initial values lazily when each property's initial value is + * first requested. A function `computeInitialValues` is provided to warm the + * entire cache on demand if needed. * * In addition, the data for initial values is incomplete or ambiguous * per the spec so we synthesize initial values for shorthand properties. From 2ed82a323ff74187537959776b77933d9fbfe580 Mon Sep 17 00:00:00 2001 From: Mahir Shah Date: Fri, 27 Oct 2017 11:49:57 -0700 Subject: [PATCH 02/19] Add License Info - add license for both MIT and MPL licenses - update product spec accordingly - add NOTICE file --- LICENSE | 21 +++++++++++++++++++++ NOTICE | 6 ++++++ package.json | 2 +- src/grammars/LICENSE | 3 +++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 LICENSE create mode 100644 NOTICE create mode 100644 src/grammars/LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..fd12500 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017 Mahir Shah + +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. \ No newline at end of file diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..7faeede --- /dev/null +++ b/NOTICE @@ -0,0 +1,6 @@ +This software uses a derivative form of the data contained in +https://github.com/mdn/data/blob/master/ (MDN Data). The software that is +a derivative form of MDN Data, contained in src/grammar/, is licensed under +MPL 2.0 (https://www.mozilla.org/en-US/MPL/2.0/). + +All other software contained in this project is provided under the MIT license. \ No newline at end of file diff --git a/package.json b/package.json index e784103..83deb77 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "test" ], "author": "mahirshah", - "license": "ISC", + "license": "(MIT AND MPL-2.0)", "types": "css-property-parser.d.ts", "devDependencies": { "async": "^2.5.0", diff --git a/src/grammars/LICENSE b/src/grammars/LICENSE new file mode 100644 index 0000000..949dd08 --- /dev/null +++ b/src/grammars/LICENSE @@ -0,0 +1,3 @@ +This Source Code Form is subject to the terms of the Mozilla Public License, +v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain +one at https://mozilla.org/MPL/2.0/. \ No newline at end of file From 7f858066951ba8629cd3f9cef02bcf3e016035e1 Mon Sep 17 00:00:00 2001 From: Mahir Shah Date: Fri, 27 Oct 2017 12:53:42 -0700 Subject: [PATCH 03/19] Update NOTICE --- NOTICE | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/NOTICE b/NOTICE index 7faeede..0e21ca7 100644 --- a/NOTICE +++ b/NOTICE @@ -1,6 +1,7 @@ This software uses a derivative form of the data contained in https://github.com/mdn/data/blob/master/ (MDN Data). The software that is -a derivative form of MDN Data, contained in src/grammar/, is licensed under -MPL 2.0 (https://www.mozilla.org/en-US/MPL/2.0/). +a derivative form of MDN Data, either checked in under src/grammar/ or +distributed under src/grammar/generated, is licensed under MPL 2.0 +(https://www.mozilla.org/en-US/MPL/2.0/). All other software contained in this project is provided under the MIT license. \ No newline at end of file From 63619ba46edc6c54ced5e76df8940b9cbdf232fc Mon Sep 17 00:00:00 2001 From: Mahir Shah Date: Mon, 30 Oct 2017 10:41:59 -0700 Subject: [PATCH 04/19] Bump Version to 1.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 83deb77..54bd278 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "css-property-parser", - "version": "0.1.0", + "version": "1.0.0", "description": "Validate css properties and expand shorthand css properties", "main": "src/index.js", "scripts": { From 6b70f85941e82ac94f2b30a8fc8d8d4f84f40f6d Mon Sep 17 00:00:00 2001 From: Mahir Shah Date: Mon, 30 Oct 2017 11:12:26 -0700 Subject: [PATCH 05/19] Add Additional Information to package.json --- package.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/package.json b/package.json index 54bd278..db6088b 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,8 @@ "name": "css-property-parser", "version": "1.0.0", "description": "Validate css properties and expand shorthand css properties", + "keywords": ["css"], + "bugs": "https://github.com/mahirshah/css-property-parser/issues", "main": "src/index.js", "scripts": { "test": "./node_modules/.bin/mocha --reporter spec --recursive", @@ -19,6 +21,10 @@ ], "author": "mahirshah", "license": "(MIT AND MPL-2.0)", + "repository": { + "type": "git", + "url": "https://github.com/mahirshah/css-property-parser" + }, "types": "css-property-parser.d.ts", "devDependencies": { "async": "^2.5.0", From a4d3dd98e558b2cb70b7ee1ca8e8f13185fec3f6 Mon Sep 17 00:00:00 2001 From: Mahir Shah Date: Mon, 30 Oct 2017 11:14:28 -0700 Subject: [PATCH 06/19] Bump to 1.0.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index db6088b..d463396 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "css-property-parser", - "version": "1.0.0", + "version": "1.0.1", "description": "Validate css properties and expand shorthand css properties", "keywords": ["css"], "bugs": "https://github.com/mahirshah/css-property-parser/issues", From b6db61be749466f34b121ff5c3f41f28dba3b1b3 Mon Sep 17 00:00:00 2001 From: Mahir Shah Date: Mon, 30 Oct 2017 11:34:52 -0700 Subject: [PATCH 07/19] Add install script to Run npm start on Install --- package-lock.json | 1004 ++++++++++++++++++++++++++++++++++++++------- package.json | 7 +- 2 files changed, 870 insertions(+), 141 deletions(-) diff --git a/package-lock.json b/package-lock.json index e434e98..13bb63c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,8 @@ { "name": "css-property-parser", - "version": "0.1.0", + "version": "1.0.2", "lockfileVersion": 1, + "requires": true, "dependencies": { "acorn": { "version": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", @@ -12,6 +13,9 @@ "version": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, + "requires": { + "acorn": "3.3.0" + }, "dependencies": { "acorn": { "version": "3.3.0", @@ -24,7 +28,11 @@ "ajv": { "version": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true + "dev": true, + "requires": { + "co": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "json-stable-stringify": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" + } }, "ajv-keywords": { "version": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", @@ -36,6 +44,9 @@ "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz", "integrity": "sha1-BFBj125qH5zTJ6V6ASaqD97Dcac=", "dev": true, + "requires": { + "emoji-regex": "6.1.3" + }, "dependencies": { "emoji-regex": { "version": "6.1.3", @@ -70,17 +81,27 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "dev": true + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.10.tgz" + } }, "argparse": { "version": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true + "dev": true, + "requires": { + "sprintf-js": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + } }, "array-union": { "version": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true + "dev": true, + "requires": { + "array-uniq": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" + } }, "array-uniq": { "version": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", @@ -102,12 +123,20 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", - "dev": true + "dev": true, + "requires": { + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + } }, "babel-code-frame": { "version": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", - "dev": true + "dev": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "js-tokens": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz" + } }, "bail": { "version": "1.0.2", @@ -124,7 +153,11 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", "integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=", - "dev": true + "dev": true, + "requires": { + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "platform": "1.3.4" + } }, "bindings": { "version": "1.2.1", @@ -136,7 +169,10 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", - "dev": true + "dev": true, + "requires": { + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.10.tgz" + } }, "boundary": { "version": "1.0.1", @@ -147,7 +183,11 @@ "brace-expansion": { "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", - "dev": true + "dev": true, + "requires": { + "balanced-match": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "concat-map": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } }, "browser-stdout": { "version": "1.3.0", @@ -164,7 +204,10 @@ "caller-path": { "version": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true + "dev": true, + "requires": { + "callsites": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz" + } }, "callsites": { "version": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", @@ -181,12 +224,27 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", - "dev": true + "dev": true, + "requires": { + "assertion-error": "1.0.2", + "check-error": "1.0.2", + "deep-eql": "3.0.1", + "get-func-name": "2.0.0", + "pathval": "1.1.0", + "type-detect": "4.0.3" + } }, "chalk": { "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + } }, "character-entities": { "version": "1.2.1", @@ -232,7 +290,10 @@ "cli-cursor": { "version": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true + "dev": true, + "requires": { + "restore-cursor": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz" + } }, "cli-width": { "version": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", @@ -264,7 +325,10 @@ "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } }, "concat-map": { "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -274,7 +338,12 @@ "concat-stream": { "version": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true + "dev": true, + "requires": { + "inherits": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/inherits/-/inherits-2.0.3.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.10.tgz", + "typedarray": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + } }, "console-control-strings": { "version": "1.1.0", @@ -290,14 +359,19 @@ }, "core-util-is": { "version": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-/4yt0HQoITgJEgOzwD9bEetKOIs=", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.2.14" + } }, "css-color-names": { "version": "0.0.4", @@ -310,6 +384,11 @@ "resolved": "https://registry.npmjs.org/css-values/-/css-values-0.1.0.tgz", "integrity": "sha1-Eot84QPU3AJ6gUpdWZXFR4HXtMY=", "dev": true, + "requires": { + "css-color-names": "0.0.4", + "ends-with": "0.2.0", + "postcss-value-parser": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz" + }, "dependencies": { "ends-with": { "version": "0.2.0", @@ -322,18 +401,27 @@ "d": { "version": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true + "dev": true, + "requires": { + "es5-ext": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.22.tgz" + } }, "debug": { "version": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true + "dev": true, + "requires": { + "ms": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + } }, "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true + "dev": true, + "requires": { + "type-detect": "4.0.3" + } }, "deep-extend": { "version": "0.4.2", @@ -349,7 +437,16 @@ "del": { "version": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true + "dev": true, + "requires": { + "globby": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "is-path-cwd": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "is-path-in-cwd": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz" + } }, "delegates": { "version": "1.0.0", @@ -373,6 +470,14 @@ "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-1.3.0.tgz", "integrity": "sha1-fwg5hR3VjICKLK5V2VBOAS0I7jA=", "dev": true, + "requires": { + "anchor-markdown-header": "0.5.7", + "htmlparser2": "3.9.2", + "markdown-to-ast": "3.4.0", + "minimist": "1.2.0", + "underscore": "1.8.3", + "update-section": "0.3.3" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -391,13 +496,21 @@ "doctrine": { "version": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", - "dev": true + "dev": true, + "requires": { + "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "isarray": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/isarray/-/isarray-1.0.0.tgz" + } }, "dom-serializer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, "dependencies": { "domelementtype": { "version": "1.1.3", @@ -417,19 +530,29 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", - "dev": true + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } }, "domutils": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", - "dev": true + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } }, "end-of-stream": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", - "dev": true + "dev": true, + "requires": { + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + } }, "entities": { "version": "1.1.1", @@ -441,37 +564,74 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } }, "es5-ext": { "version": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.22.tgz", "integrity": "sha1-GHbFH5kHacESx4HqPr6J+E/TkHE=", - "dev": true + "dev": true, + "requires": { + "es6-iterator": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", + "es6-symbol": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz" + } }, "es6-iterator": { "version": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", - "dev": true + "dev": true, + "requires": { + "d": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "es5-ext": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.22.tgz", + "es6-symbol": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz" + } }, "es6-map": { "version": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true + "dev": true, + "requires": { + "d": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "es5-ext": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.22.tgz", + "es6-iterator": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", + "es6-set": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "es6-symbol": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "event-emitter": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz" + } }, "es6-set": { "version": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true + "dev": true, + "requires": { + "d": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "es5-ext": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.22.tgz", + "es6-iterator": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", + "es6-symbol": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "event-emitter": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz" + } }, "es6-symbol": { "version": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true + "dev": true, + "requires": { + "d": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "es5-ext": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.22.tgz" + } }, "es6-weak-map": { "version": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true + "dev": true, + "requires": { + "d": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "es5-ext": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.22.tgz", + "es6-iterator": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", + "es6-symbol": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz" + } }, "escape-string-regexp": { "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -481,48 +641,121 @@ "escope": { "version": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true + "dev": true, + "requires": { + "es6-map": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "es6-weak-map": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "esrecurse": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", + "estraverse": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz" + } }, "eslint": { "version": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", - "dev": true + "dev": true, + "requires": { + "babel-code-frame": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "concat-stream": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "doctrine": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", + "escope": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "espree": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", + "esquery": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "estraverse": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "file-entry-cache": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "globals": "https://registry.npmjs.org/globals/-/globals-9.17.0.tgz", + "ignore": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", + "imurmurhash": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "inquirer": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "is-my-json-valid": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", + "is-resolvable": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "js-yaml": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", + "json-stable-stringify": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "levn": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "natural-compare": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "optionator": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "path-is-inside": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "pluralize": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "progress": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "require-uncached": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "shelljs": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", + "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "strip-json-comments": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "table": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "text-table": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "user-home": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz" + } }, "eslint-config-airbnb": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-15.1.0.tgz", "integrity": "sha512-m0q9fiMBzDAIbirlGnpJNWToIhdhJmXXnMG+IFflYzzod9231ZhtmGKegKg8E9T8F1YuVaDSU1FnCm5b9iXVhQ==", - "dev": true + "dev": true, + "requires": { + "eslint-config-airbnb-base": "11.3.1" + } }, "eslint-config-airbnb-base": { "version": "11.3.1", "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.3.1.tgz", "integrity": "sha512-BXVH7PV5yiLjnkv49iOLJ8dWp+ljZf310ytQpqwrunFADiEbWRyN0tPGDU36FgEbdLvhJDWcJOngYDzPF4shDw==", - "dev": true + "dev": true, + "requires": { + "eslint-restricted-globals": "0.1.1" + } }, "eslint-import-resolver-node": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz", "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", - "dev": true + "dev": true, + "requires": { + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "resolve": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz" + } }, "eslint-module-utils": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", - "dev": true + "dev": true, + "requires": { + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "pkg-dir": "1.0.0" + } }, "eslint-plugin-import": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz", "integrity": "sha512-HGYmpU9f/zJaQiKNQOVfHUh2oLWW3STBrCgH0sHTX1xtsxYlH1zjLh8FlQGEIdZSdTbUMaV36WaZ6ImXkenGxQ==", "dev": true, + "requires": { + "builtin-modules": "1.1.1", + "contains-path": "0.1.0", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "0.3.1", + "eslint-module-utils": "2.1.1", + "has": "1.0.1", + "lodash.cond": "4.5.2", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "read-pkg-up": "2.0.0" + }, "dependencies": { "doctrine": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true + "dev": true, + "requires": { + "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "isarray": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/isarray/-/isarray-1.0.0.tgz" + } } } }, @@ -535,7 +768,11 @@ "espree": { "version": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", - "dev": true + "dev": true, + "requires": { + "acorn": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", + "acorn-jsx": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz" + } }, "esprima": { "version": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", @@ -545,12 +782,19 @@ "esquery": { "version": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", - "dev": true + "dev": true, + "requires": { + "estraverse": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz" + } }, "esrecurse": { "version": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", "integrity": "sha1-RxO2U2rffyrE8yfVWed1a/9kgiA=", "dev": true, + "requires": { + "estraverse": "4.1.1", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + }, "dependencies": { "estraverse": { "version": "4.1.1", @@ -573,7 +817,11 @@ "event-emitter": { "version": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true + "dev": true, + "requires": { + "d": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "es5-ext": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.22.tgz" + } }, "exit-hook": { "version": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", @@ -600,33 +848,59 @@ "figures": { "version": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true + "dev": true, + "requires": { + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + } }, "file-entry-cache": { "version": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true + "dev": true, + "requires": { + "flat-cache": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + } }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } }, "flat-cache": { "version": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", - "dev": true + "dev": true, + "requires": { + "circular-json": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", + "del": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "write": "https://registry.npmjs.org/write/-/write-0.2.1.tgz" + } }, "formatio": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", - "dev": true + "dev": true, + "requires": { + "samsam": "1.2.1" + } }, "fs-extra": { "version": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=" + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "jsonfile": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.0.tgz", + "universalify": "https://registry.npmjs.org/universalify/-/universalify-0.1.0.tgz" + } }, "fs.realpath": { "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -643,7 +917,17 @@ "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true + "dev": true, + "requires": { + "aproba": "1.1.2", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "signal-exit": "3.0.2", + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "wide-align": "1.1.2" + } }, "generate-function": { "version": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", @@ -653,7 +937,10 @@ "generate-object-property": { "version": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true + "dev": true, + "requires": { + "is-property": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" + } }, "get-func-name": { "version": "2.0.0", @@ -670,7 +957,15 @@ "glob": { "version": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", - "dev": true + "dev": true, + "requires": { + "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "inherits": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/inherits/-/inherits-2.0.3.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + } }, "globals": { "version": "https://registry.npmjs.org/globals/-/globals-9.17.0.tgz", @@ -680,7 +975,15 @@ "globby": { "version": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true + "dev": true, + "requires": { + "array-union": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "arrify": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } }, "graceful-fs": { "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", @@ -702,12 +1005,18 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true + "dev": true, + "requires": { + "function-bind": "1.1.0" + } }, "has-ansi": { "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + } }, "has-flag": { "version": "1.0.0", @@ -731,7 +1040,15 @@ "version": "3.9.2", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", - "dev": true + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.6.2", + "entities": "1.1.1", + "inherits": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/inherits/-/inherits-2.0.3.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.10.tgz" + } }, "ignore": { "version": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", @@ -746,11 +1063,15 @@ "inflight": { "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true + "dev": true, + "requires": { + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } }, "inherits": { "version": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-zd1E7lGkOx7fGKu7yxTKEzcxqBs=", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "ini": { @@ -762,7 +1083,22 @@ "inquirer": { "version": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true + "dev": true, + "requires": { + "ansi-escapes": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "cli-cursor": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "cli-width": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", + "figures": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "readline2": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "run-async": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "rx-lite": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "through": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + } }, "interpret": { "version": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", @@ -779,7 +1115,11 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.1.tgz", "integrity": "sha1-37SqTRCF4zvbYcLe6cgOnGwZ9Ts=", - "dev": true + "dev": true, + "requires": { + "is-alphabetical": "1.0.1", + "is-decimal": "1.0.1" + } }, "is-arrayish": { "version": "0.2.1", @@ -791,7 +1131,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } }, "is-decimal": { "version": "1.0.1", @@ -802,7 +1145,10 @@ "is-fullwidth-code-point": { "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + } }, "is-hexadecimal": { "version": "1.0.1", @@ -813,7 +1159,13 @@ "is-my-json-valid": { "version": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", - "dev": true + "dev": true, + "requires": { + "generate-function": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "generate-object-property": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "jsonpointer": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "xtend": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/xtend/-/xtend-4.0.1.tgz" + } }, "is-path-cwd": { "version": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -823,12 +1175,18 @@ "is-path-in-cwd": { "version": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", - "dev": true + "dev": true, + "requires": { + "is-path-inside": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz" + } }, "is-path-inside": { "version": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "dev": true + "dev": true, + "requires": { + "path-is-inside": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" + } }, "is-property": { "version": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", @@ -838,11 +1196,14 @@ "is-resolvable": { "version": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", - "dev": true + "dev": true, + "requires": { + "tryit": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz" + } }, "isarray": { "version": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-8X+wQYG3F3PewcS22EYF1vGo5v8=", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { @@ -859,12 +1220,19 @@ "js-yaml": { "version": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", "integrity": "sha1-UgtFZPhlc7qWZir4Woyvp7S1pvY=", - "dev": true + "dev": true, + "requires": { + "argparse": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "esprima": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz" + } }, "json-stable-stringify": { "version": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true + "dev": true, + "requires": { + "jsonify": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" + } }, "json3": { "version": "3.3.2", @@ -874,7 +1242,10 @@ }, "jsonfile": { "version": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.0.tgz", - "integrity": "sha1-kufHRE5f/V+jLmqa6LhQNN+DR9A=" + "integrity": "sha1-kufHRE5f/V+jLmqa6LhQNN+DR9A=", + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + } }, "jsonify": { "version": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", @@ -889,19 +1260,33 @@ "levn": { "version": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true + "dev": true, + "requires": { + "prelude-ls": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "type-check": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" + } }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "parse-json": "2.2.0", + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + } }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, "dependencies": { "path-exists": { "version": "3.0.0", @@ -920,7 +1305,11 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } }, "lodash._basecopy": { "version": "3.0.1", @@ -956,7 +1345,12 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._basecreate": "3.0.3", + "lodash._isiterateecall": "3.0.9" + } }, "lodash.isarguments": { "version": "3.1.0", @@ -974,7 +1368,12 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } }, "lolex": { "version": "1.6.0", @@ -992,7 +1391,11 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } }, "markdown-table": { "version": "0.4.0", @@ -1004,7 +1407,13 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/markdown-to-ast/-/markdown-to-ast-3.4.0.tgz", "integrity": "sha1-Diy6gTkLBUmpFT7DsNkVthwWS+c=", - "dev": true + "dev": true, + "requires": { + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "remark": "5.1.0", + "structured-source": "3.0.2", + "traverse": "0.6.6" + } }, "mdn-data": { "version": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.0.0.tgz", @@ -1014,12 +1423,20 @@ "version": "2.1.6", "resolved": "https://registry.npmjs.org/microtime/-/microtime-2.1.6.tgz", "integrity": "sha1-dgR6A/kc7Vq7LlNn5fHfLt51a64=", - "dev": true + "dev": true, + "requires": { + "bindings": "1.2.1", + "nan": "2.6.2", + "prebuild-install": "2.2.2" + } }, "minimatch": { "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", - "dev": true + "dev": true, + "requires": { + "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz" + } }, "minimist": { "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", @@ -1029,25 +1446,52 @@ "mkdirp": { "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true + "dev": true, + "requires": { + "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } }, "mocha": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.0.tgz", "integrity": "sha512-pIU2PJjrPYvYRqVpjXzj76qltO9uBYI7woYAMoxbSefsa+vqAfptjoeevd6bUgwD0mPIO+hv9f7ltvsNreL2PA==", "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "diff": "3.2.0", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "glob": "7.1.1", + "growl": "1.9.2", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "supports-color": "3.1.2" + }, "dependencies": { "glob": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true + "dev": true, + "requires": { + "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "inherits": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/inherits/-/inherits-2.0.3.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + } }, "supports-color": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", - "dev": true + "dev": true, + "requires": { + "has-flag": "1.0.0" + } } } }, @@ -1086,7 +1530,12 @@ "nearley": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.11.0.tgz", - "integrity": "sha512-clqqhEuP0ZCJQ85Xv2I/4o2Gs/fvSR6fCg5ZHVE2c8evWyNk2G++ih4JOO3lMb/k/09x6ihQ2nzKUlB/APCWjg==" + "integrity": "sha512-clqqhEuP0ZCJQ85Xv2I/4o2Gs/fvSR6fCg5ZHVE2c8evWyNk2G++ih4JOO3lMb/k/09x6ihQ2nzKUlB/APCWjg==", + "requires": { + "nomnom": "1.6.2", + "railroad-diagrams": "1.0.0", + "randexp": "0.4.6" + } }, "node-abi": { "version": "2.1.0", @@ -1097,7 +1546,11 @@ "nomnom": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.6.2.tgz", - "integrity": "sha1-hKZqJgF0QI/Ft3oY+IjszET7aXE=" + "integrity": "sha1-hKZqJgF0QI/Ft3oY+IjszET7aXE=", + "requires": { + "colors": "0.5.1", + "underscore": "1.4.4" + } }, "noop-logger": { "version": "0.1.1", @@ -1109,13 +1562,25 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true + "dev": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } }, "number-is-nan": { "version": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -1130,7 +1595,10 @@ "once": { "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true + "dev": true, + "requires": { + "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } }, "onetime": { "version": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", @@ -1140,7 +1608,15 @@ "optionator": { "version": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true + "dev": true, + "requires": { + "deep-is": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "fast-levenshtein": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "levn": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "prelude-ls": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "type-check": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" + } }, "os-homedir": { "version": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -1163,25 +1639,42 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true + "dev": true, + "requires": { + "p-limit": "1.1.0" + } }, "parse-entities": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.1.tgz", "integrity": "sha1-gRLYhHExnyerrk1klksSL+ThuJA=", - "dev": true + "dev": true, + "requires": { + "character-entities": "1.2.1", + "character-entities-legacy": "1.1.1", + "character-reference-invalid": "1.1.1", + "is-alphanumerical": "1.0.1", + "is-decimal": "1.0.1", + "is-hexadecimal": "1.0.1" + } }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true + "dev": true, + "requires": { + "error-ex": "1.3.1" + } }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true + "dev": true, + "requires": { + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } }, "path-is-absolute": { "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1203,6 +1696,9 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", "dev": true, + "requires": { + "isarray": "0.0.1" + }, "dependencies": { "isarray": { "version": "0.0.1", @@ -1216,7 +1712,10 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true + "dev": true, + "requires": { + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + } }, "pathval": { "version": "1.1.0", @@ -1237,13 +1736,19 @@ "pinkie-promise": { "version": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true + "dev": true, + "requires": { + "pinkie": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + } }, "pkg-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true + "dev": true, + "requires": { + "find-up": "1.1.2" + } }, "platform": { "version": "1.3.4", @@ -1265,13 +1770,34 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/pre-commit/-/pre-commit-1.2.2.tgz", "integrity": "sha1-287g7p3nI15X95xW186UZBpp7sY=", - "dev": true + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "spawn-sync": "1.0.15", + "which": "1.2.14" + } }, "prebuild-install": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.2.2.tgz", "integrity": "sha512-F46pcvDxtQhbV3B+dm+exHuKxIyJK26fVNiJRmbTW/5D7o0Z2yzc8CKeu7UWbo9XxQZoVOC88aKgySAsza+cWw==", "dev": true, + "requires": { + "expand-template": "1.0.3", + "github-from-package": "0.0.0", + "minimist": "1.2.0", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "node-abi": "2.1.0", + "noop-logger": "0.1.1", + "npmlog": "4.1.2", + "os-homedir": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "pump": "1.0.2", + "rc": "1.2.1", + "simple-get": "1.4.3", + "tar-fs": "1.15.3", + "tunnel-agent": "0.6.0", + "xtend": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/xtend/-/xtend-4.0.1.tgz" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -1288,7 +1814,7 @@ }, "process-nextick-args": { "version": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-d2yv2tk+goW4BJfTpeQevKaqkmE=", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, "progress": { @@ -1306,7 +1832,11 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.2.tgz", "integrity": "sha1-Oz7mUS+U8OV1U4wXmV+fFpkKXVE=", - "dev": true + "dev": true, + "requires": { + "end-of-stream": "1.4.0", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + } }, "railroad-diagrams": { "version": "1.0.0", @@ -1316,13 +1846,23 @@ "randexp": { "version": "0.4.6", "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", - "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==" + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "requires": { + "discontinuous-range": "1.0.0", + "ret": "0.1.15" + } }, "rc": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -1336,54 +1876,109 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } }, "read-pkg-up": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + }, "dependencies": { "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true + "dev": true, + "requires": { + "locate-path": "2.0.0" + } } } }, "readable-stream": { "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.10.tgz", "integrity": "sha1-7/5yu3yITA3TNeI3nVJhltnQEe4=", - "dev": true + "dev": true, + "requires": { + "core-util-is": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/core-util-is/-/core-util-is-1.0.2.tgz", + "inherits": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/inherits/-/inherits-2.0.3.tgz", + "isarray": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/isarray/-/isarray-1.0.0.tgz", + "process-nextick-args": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "util-deprecate": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/util-deprecate/-/util-deprecate-1.0.2.tgz" + } }, "readline2": { "version": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "mute-stream": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz" + } }, "rechoir": { "version": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true + "dev": true, + "requires": { + "resolve": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz" + } }, "remark": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/remark/-/remark-5.1.0.tgz", "integrity": "sha1-y0Y709vLS5l5STXu4c9x16jjBow=", - "dev": true + "dev": true, + "requires": { + "remark-parse": "1.1.0", + "remark-stringify": "1.1.0", + "unified": "4.2.1" + } }, "remark-parse": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-1.1.0.tgz", "integrity": "sha1-w8oQ+ajaBGFcKPCapOMEUQUm7CE=", - "dev": true + "dev": true, + "requires": { + "collapse-white-space": "1.0.3", + "extend": "3.0.1", + "parse-entities": "1.1.1", + "repeat-string": "1.6.1", + "trim": "0.0.1", + "trim-trailing-lines": "1.1.0", + "unherit": "1.1.0", + "unist-util-remove-position": "1.1.1", + "vfile-location": "2.0.2" + } }, "remark-stringify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-1.1.0.tgz", "integrity": "sha1-pxBeJbnuK/mkm3XSxCPxGwauIJI=", - "dev": true + "dev": true, + "requires": { + "ccount": "1.0.2", + "extend": "3.0.1", + "longest-streak": "1.0.0", + "markdown-table": "0.4.0", + "parse-entities": "1.1.1", + "repeat-string": "1.6.1", + "stringify-entities": "1.3.1", + "unherit": "1.1.0" + } }, "repeat-string": { "version": "1.6.1", @@ -1394,12 +1989,19 @@ "require-uncached": { "version": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true + "dev": true, + "requires": { + "caller-path": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "resolve-from": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz" + } }, "resolve": { "version": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", - "dev": true + "dev": true, + "requires": { + "path-parse": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz" + } }, "resolve-from": { "version": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", @@ -1409,7 +2011,11 @@ "restore-cursor": { "version": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true + "dev": true, + "requires": { + "exit-hook": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "onetime": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz" + } }, "ret": { "version": "0.1.15", @@ -1419,12 +2025,18 @@ "rimraf": { "version": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "dev": true + "dev": true, + "requires": { + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz" + } }, "run-async": { "version": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "dev": true + "dev": true, + "requires": { + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + } }, "rx-lite": { "version": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", @@ -1458,7 +2070,10 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } }, "shebang-regex": { "version": "1.0.0", @@ -1469,7 +2084,12 @@ "shelljs": { "version": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", "integrity": "sha1-svXHfvlxSPS09uImguELuoZnz/E=", - "dev": true + "dev": true, + "requires": { + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "interpret": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "rechoir": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" + } }, "signal-exit": { "version": "3.0.2", @@ -1481,13 +2101,28 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-1.4.3.tgz", "integrity": "sha1-6XVe2kB+ltpAxeUVjJ6jezO+y+s=", - "dev": true + "dev": true, + "requires": { + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "unzip-response": "1.0.2", + "xtend": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/xtend/-/xtend-4.0.1.tgz" + } }, "sinon": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.4.1.tgz", "integrity": "sha512-vFTrO9Wt0ECffDYIPSP/E5bBugt0UjcBQOfQUMh66xzkyPEnhl/vM2LRZi2ajuTdkH07sA6DzrM6KvdvGIH8xw==", - "dev": true + "dev": true, + "requires": { + "diff": "3.2.0", + "formatio": "1.2.0", + "lolex": "1.6.0", + "native-promise-only": "0.8.1", + "path-to-regexp": "1.7.0", + "samsam": "1.2.1", + "text-encoding": "0.6.4", + "type-detect": "4.0.3" + } }, "slice-ansi": { "version": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", @@ -1498,13 +2133,20 @@ "version": "1.0.15", "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=", - "dev": true + "dev": true, + "requires": { + "concat-stream": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "os-shim": "0.1.3" + } }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } }, "spdx-expression-parse": { "version": "1.0.4", @@ -1526,23 +2168,40 @@ "string_decoder": { "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", - "dev": true + "dev": true, + "requires": { + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz" + } }, "string-width": { "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true + "dev": true, + "requires": { + "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } }, "stringify-entities": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.1.tgz", "integrity": "sha1-sVDsLXKsTBtfMktR+2soyc3/BYw=", - "dev": true + "dev": true, + "requires": { + "character-entities-html4": "1.1.1", + "character-entities-legacy": "1.1.1", + "is-alphanumerical": "1.0.1", + "is-hexadecimal": "1.0.1" + } }, "strip-ansi": { "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + } }, "strip-bom": { "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -1558,7 +2217,10 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-3.0.2.tgz", "integrity": "sha1-3YAkJeD1PcSm56yjdSkBoczaevU=", - "dev": true + "dev": true, + "requires": { + "boundary": "1.0.1" + } }, "supports-color": { "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -1569,6 +2231,14 @@ "version": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", "dev": true, + "requires": { + "ajv": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "ajv-keywords": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "slice-ansi": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "string-width": "2.1.1" + }, "dependencies": { "ansi-regex": { "version": "3.0.0", @@ -1586,13 +2256,20 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } } } }, @@ -1600,13 +2277,25 @@ "version": "1.15.3", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.15.3.tgz", "integrity": "sha1-7M+TXpQUk9gVECjmNuUc5MPKfyA=", - "dev": true + "dev": true, + "requires": { + "chownr": "1.0.1", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "pump": "1.0.2", + "tar-stream": "1.5.4" + } }, "tar-stream": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz", "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=", - "dev": true + "dev": true, + "requires": { + "bl": "1.2.1", + "end-of-stream": "1.4.0", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.10.tgz", + "xtend": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/xtend/-/xtend-4.0.1.tgz" + } }, "text-encoding": { "version": "0.6.4", @@ -1657,12 +2346,18 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true + "dev": true, + "requires": { + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz" + } }, "type-check": { "version": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true + "dev": true, + "requires": { + "prelude-ls": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" + } }, "type-detect": { "version": "4.0.3", @@ -1684,19 +2379,34 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.0.tgz", "integrity": "sha1-a5qu379z3xdWrZ4xbdmBiFhAzX0=", - "dev": true + "dev": true, + "requires": { + "inherits": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/inherits/-/inherits-2.0.3.tgz", + "xtend": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/xtend/-/xtend-4.0.1.tgz" + } }, "unified": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/unified/-/unified-4.2.1.tgz", "integrity": "sha1-dv9Dqo2kMPbn5KVchOusKtLPzS4=", - "dev": true + "dev": true, + "requires": { + "bail": "1.0.2", + "extend": "3.0.1", + "has": "1.0.1", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "trough": "1.0.1", + "vfile": "1.4.0" + } }, "unist-util-remove-position": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.1.tgz", "integrity": "sha1-WoXBVV/BugwQG4ZwfRXlD6TIcbs=", - "dev": true + "dev": true, + "requires": { + "unist-util-visit": "1.1.3" + } }, "unist-util-visit": { "version": "1.1.3", @@ -1723,18 +2433,25 @@ "user-home": { "version": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "dev": true + "dev": true, + "requires": { + "os-homedir": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" + } }, "util-deprecate": { "version": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-PSemXEGpPzOAeLg2KlAGLrZcmJc=", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, "validate-npm-package-license": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } }, "vfile": { "version": "1.4.0", @@ -1752,13 +2469,19 @@ "version": "1.2.14", "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", - "dev": true + "dev": true, + "requires": { + "isexe": "2.0.0" + } }, "wide-align": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", - "dev": true + "dev": true, + "requires": { + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" + } }, "wordwrap": { "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -1773,11 +2496,14 @@ "write": { "version": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true + "dev": true, + "requires": { + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" + } }, "xtend": { "version": "http://artifactory.corp.linkedin.com:8081/artifactory/api/npm/npm-external/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-M3RmyjTYnlnX7rik4X7a69Drv+s=", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true }, "yallist": { diff --git a/package.json b/package.json index d463396..5800ed2 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,14 @@ { "name": "css-property-parser", - "version": "1.0.1", + "version": "1.0.2", "description": "Validate css properties and expand shorthand css properties", - "keywords": ["css"], + "keywords": [ + "css" + ], "bugs": "https://github.com/mahirshah/css-property-parser/issues", "main": "src/index.js", "scripts": { + "install": "npm start", "test": "./node_modules/.bin/mocha --reporter spec --recursive", "start": "mkdir -p formatted-data src/grammars/generated/json && node ./node_modules/nearley/bin/nearleyc.js ./src/grammars/nearley/formalSyntax.ne > ./src/grammars/js/formalSyntax.js && node ./src/scripts/updateBasicDataUnits.js && node ./src/scripts/formatData.js && node ./src/scripts/formatFormalSyntaxes.js && node ./src/scripts/formatGrammars.js", "clean": "rm -rf src/grammars/generated", From a98ed4c5239c609c276f6a7cf261e567161bd8bb Mon Sep 17 00:00:00 2001 From: Mahir Shah Date: Mon, 30 Oct 2017 11:46:50 -0700 Subject: [PATCH 08/19] Move start script to npm prepublish --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 5800ed2..0717fc3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "css-property-parser", - "version": "1.0.2", + "version": "1.0.3", "description": "Validate css properties and expand shorthand css properties", "keywords": [ "css" @@ -8,7 +8,7 @@ "bugs": "https://github.com/mahirshah/css-property-parser/issues", "main": "src/index.js", "scripts": { - "install": "npm start", + "prepublish": "npm start", "test": "./node_modules/.bin/mocha --reporter spec --recursive", "start": "mkdir -p formatted-data src/grammars/generated/json && node ./node_modules/nearley/bin/nearleyc.js ./src/grammars/nearley/formalSyntax.ne > ./src/grammars/js/formalSyntax.js && node ./src/scripts/updateBasicDataUnits.js && node ./src/scripts/formatData.js && node ./src/scripts/formatFormalSyntaxes.js && node ./src/scripts/formatGrammars.js", "clean": "rm -rf src/grammars/generated", From 85cd4cbb27f6a9d32fd81ebf29072ba444dc0c8d Mon Sep 17 00:00:00 2001 From: Mahir Shah Date: Mon, 30 Oct 2017 11:58:02 -0700 Subject: [PATCH 09/19] Add npmignore file to Allow Generated Grammars in npm Package --- .npmignore | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .npmignore diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..e438d55 --- /dev/null +++ b/.npmignore @@ -0,0 +1,4 @@ +test +src/grammars/json +src/grammars/js +src/grammars/nearley From b5329d6b9a0cdf4e57f99f53447196ef631ac4eb Mon Sep 17 00:00:00 2001 From: Mahir Shah Date: Mon, 30 Oct 2017 11:59:26 -0700 Subject: [PATCH 10/19] Bump to 1.0.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0717fc3..72554b5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "css-property-parser", - "version": "1.0.3", + "version": "1.0.4", "description": "Validate css properties and expand shorthand css properties", "keywords": [ "css" From 1cb69116b7202e8939dfbe01721ac22187252f91 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Tue, 21 Nov 2017 12:24:28 -0800 Subject: [PATCH 11/19] Extract unweildy shell command in package.json to a bash script. --- package.json | 2 +- updateCSSData.sh | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100755 updateCSSData.sh diff --git a/package.json b/package.json index 72554b5..bc219d6 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "scripts": { "prepublish": "npm start", "test": "./node_modules/.bin/mocha --reporter spec --recursive", - "start": "mkdir -p formatted-data src/grammars/generated/json && node ./node_modules/nearley/bin/nearleyc.js ./src/grammars/nearley/formalSyntax.ne > ./src/grammars/js/formalSyntax.js && node ./src/scripts/updateBasicDataUnits.js && node ./src/scripts/formatData.js && node ./src/scripts/formatFormalSyntaxes.js && node ./src/scripts/formatGrammars.js", + "start": "./updateCSSData.sh", "clean": "rm -rf src/grammars/generated", "benchmark": "node test/benchmark.js", "doctoc": "node ./node_modules/doctoc/doctoc.js README.md", diff --git a/updateCSSData.sh b/updateCSSData.sh new file mode 100755 index 0000000..4c89d3b --- /dev/null +++ b/updateCSSData.sh @@ -0,0 +1,22 @@ +#!/bin/bash +function realpath() +{ + f=$@ + if [ -d "$f" ]; then + base="" + dir="$f" + else + base="/$(basename "$f")" + dir=$(dirname "$f") + fi + dir=$(cd "$dir" && /bin/pwd) + echo "$dir$base" +} +cd "$(dirname "$(realpath "$0")")"; +rm -rf formatted-data src/grammars/generated/json +mkdir -p formatted-data src/grammars/generated/json +node ./node_modules/nearley/bin/nearleyc.js ./src/grammars/nearley/formalSyntax.ne > ./src/grammars/js/formalSyntax.js || exit 1 +node ./src/scripts/updateBasicDataUnits.js || exit 1 +node ./src/scripts/formatData.js || exit 1 +node ./src/scripts/formatFormalSyntaxes.js || exit 1 +node ./src/scripts/formatGrammars.js || exit 1 \ No newline at end of file From 3cb3b7354e58253a7d045366e543e3dda542d0be Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Tue, 21 Nov 2017 12:25:47 -0800 Subject: [PATCH 12/19] Make mdn-data a pure build time dependency. The mdn-data package is not being released to npm on any sort of regular basis. This change is preparing for the ability to update directly from the github repo using scripts or submodules. Also, it's best if all the data is in kept in sync because the mdn-data changes are not following any sort of semver concepts in how they land schema or data changes. --- package.json | 4 ++-- src/expandShorthandProperty.js | 2 +- src/getShorthandComputedProperties.js | 2 +- src/getShorthandsForProperty.js | 2 +- src/initialValueMap.js | 2 +- src/isValidDeclaration.js | 2 +- src/scripts/extractProperties.js | 14 ++++++++++++++ test/InitialValuesTest.js | 4 ++-- updateCSSData.sh | 3 ++- 9 files changed, 25 insertions(+), 10 deletions(-) create mode 100644 src/scripts/extractProperties.js diff --git a/package.json b/package.json index bc219d6..6bf5523 100644 --- a/package.json +++ b/package.json @@ -42,11 +42,11 @@ "mocha": "^3.5.0", "pre-commit": "^1.2.2", "postcss-value-parser": "^3.3.0", - "sinon": "^2.4.1" + "sinon": "^2.4.1", + "mdn-data": "1.0.0" }, "dependencies": { "fs-extra": "^3.0.1", - "mdn-data": "1.0.0", "moo": "^0.4.1", "nearley": "^2.11.0" } diff --git a/src/expandShorthandProperty.js b/src/expandShorthandProperty.js index f292efa..83fcc3d 100644 --- a/src/expandShorthandProperty.js +++ b/src/expandShorthandProperty.js @@ -1,5 +1,5 @@ const nearley = require('nearley'); -const { css: { properties } } = require('mdn-data'); +const properties = require('../formatted-data/properties.json'); const isShorthandProperty = require('./isShorthandProperty'); const getShorthandComputedProperties = require('./getShorthandComputedProperties'); const shorthandProperties = require('../formatted-data/shorthand-properties.json'); diff --git a/src/getShorthandComputedProperties.js b/src/getShorthandComputedProperties.js index d2571eb..3164609 100644 --- a/src/getShorthandComputedProperties.js +++ b/src/getShorthandComputedProperties.js @@ -1,4 +1,4 @@ -const { css: { properties } } = require('mdn-data'); +const properties = require('../formatted-data/properties.json'); /** * Given a shorthand property, returns an array of the computed properties for that shorthand property. If given diff --git a/src/getShorthandsForProperty.js b/src/getShorthandsForProperty.js index 55024ad..50ebbb4 100644 --- a/src/getShorthandsForProperty.js +++ b/src/getShorthandsForProperty.js @@ -1,5 +1,5 @@ const shortHandProperties = require('../formatted-data/shorthand-properties.json'); -const { css: { properties } } = require('mdn-data'); +const properties = require('../formatted-data/properties.json'); /** * @type {Object} diff --git a/src/initialValueMap.js b/src/initialValueMap.js index 0e1730c..c661f48 100644 --- a/src/initialValueMap.js +++ b/src/initialValueMap.js @@ -1,4 +1,4 @@ -const { css: { properties } } = require('mdn-data'); +const properties = require('../formatted-data/properties.json'); const getShorthandComputedProperties = require('./getShorthandComputedProperties'); const isShorthandProperty = require('./isShorthandProperty'); diff --git a/src/isValidDeclaration.js b/src/isValidDeclaration.js index b5d554a..c9ac2b9 100644 --- a/src/isValidDeclaration.js +++ b/src/isValidDeclaration.js @@ -1,5 +1,5 @@ const nearley = require('nearley'); -const { css: { properties } } = require('mdn-data'); +const properties = require('../formatted-data/properties.json'); const { CSS } = require('./constants'); /** diff --git a/src/scripts/extractProperties.js b/src/scripts/extractProperties.js new file mode 100644 index 0000000..79fb0f2 --- /dev/null +++ b/src/scripts/extractProperties.js @@ -0,0 +1,14 @@ +/** + * Takes raw data from MDN, filters out the shorthand properties, and decorates the data with additional properties. + * Writes the formatted data to FORMATTED_DATA_PATH. + */ +const fs = require('fs-extra'); +const { css: { properties } } = require('mdn-data'); +const PATHS = require('../constants/paths'); + +const ALL_PROPERTIES_DATA_FILE_NAME = 'properties.json'; +const OUTPUT_FILE = `${PATHS.FORMATTED_DATA_PATH}${ALL_PROPERTIES_DATA_FILE_NAME}`; +fs.writeJson(OUTPUT_FILE, properties, { spaces: 2 }) + .then(() => ( + console.log(`Successfully extracted properties to ${OUTPUT_FILE}`) + )); diff --git a/test/InitialValuesTest.js b/test/InitialValuesTest.js index 1647144..cca2d02 100644 --- a/test/InitialValuesTest.js +++ b/test/InitialValuesTest.js @@ -1,5 +1,5 @@ const { assert } = require('chai'); -const { css: { properties: cssProperties } } = require('mdn-data'); +const properties = require('../formatted-data/properties.json'); const { initialValue, initialValues, @@ -31,7 +31,7 @@ describe('Initial values', function () { 'position', 'transform-box', ]); - Object.keys(cssProperties).forEach((prop) => { + Object.keys(properties).forEach((prop) => { if (prop.startsWith('-') || buggyValues.has(prop)) return; // bug in grammar data let initial = initialValue(prop); assert(isValidDeclaration(prop, initial), `${prop}: ${initial} is not a legal initial value`); diff --git a/updateCSSData.sh b/updateCSSData.sh index 4c89d3b..56867f1 100755 --- a/updateCSSData.sh +++ b/updateCSSData.sh @@ -19,4 +19,5 @@ node ./node_modules/nearley/bin/nearleyc.js ./src/grammars/nearley/formalSyntax. node ./src/scripts/updateBasicDataUnits.js || exit 1 node ./src/scripts/formatData.js || exit 1 node ./src/scripts/formatFormalSyntaxes.js || exit 1 -node ./src/scripts/formatGrammars.js || exit 1 \ No newline at end of file +node ./src/scripts/formatGrammars.js || exit 1 +node ./src/scripts/extractProperties.js || exit 1 \ No newline at end of file From 0c79ee581c01e0b6c8db852092f9fa40cff81c14 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Tue, 21 Nov 2017 12:30:34 -0800 Subject: [PATCH 13/19] Ignore .vscode directory. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 91b829c..bc21573 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ .idea node_modules .DS_STORE +.vscode # ignore generated grammars formatted-data From 81cb2db2f6325d50bef27c9c3da508af34a07466 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Fri, 24 Nov 2017 14:37:29 -0800 Subject: [PATCH 14/19] Bump version for release. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6bf5523..45f5df3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "css-property-parser", - "version": "1.0.4", + "version": "1.0.5", "description": "Validate css properties and expand shorthand css properties", "keywords": [ "css" From ff4b706371ab3f2313c8f99b2834fb3034f54be0 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Wed, 28 Feb 2018 04:44:53 -0800 Subject: [PATCH 15/19] Use path.join instead of string joins for path construction. Move dynamic requires to boot time. Move formatted-data to the src directory. --- .gitignore | 2 +- package.json | 2 +- src/constants/paths.js | 16 +++++----- src/expandShorthandProperty.js | 7 +++-- .../NearleyGrammarFormatter.js | 5 +-- src/getShorthandComputedProperties.js | 2 +- src/getShorthandsForProperty.js | 4 +-- src/initialValueMap.js | 2 +- src/isShorthandProperty.js | 2 +- src/isValidDeclaration.js | 5 +-- src/scripts/extractProperties.js | 3 +- src/scripts/formatData.js | 10 +++--- src/scripts/formatFormalSyntaxes.js | 10 +++--- src/scripts/formatGrammars.js | 31 ++++++++++--------- src/scripts/updateBasicDataUnits.js | 3 +- test/InitialValuesTest.js | 2 +- .../formatters/NearleyGrammarFormatterTest.js | 7 +++-- updateCSSData.sh | 4 +-- 18 files changed, 64 insertions(+), 53 deletions(-) diff --git a/.gitignore b/.gitignore index bc21573..70b5cb7 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,7 @@ node_modules .vscode # ignore generated grammars -formatted-data +src/formatted-data src/grammars/generated diff --git a/package.json b/package.json index 45f5df3..735ea04 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "prepublish": "npm start", "test": "./node_modules/.bin/mocha --reporter spec --recursive", "start": "./updateCSSData.sh", - "clean": "rm -rf src/grammars/generated", + "clean": "rm -rf src/formatted-data src/grammars/generated", "benchmark": "node test/benchmark.js", "doctoc": "node ./node_modules/doctoc/doctoc.js README.md", "lint": "node node_modules/eslint/bin/eslint.js src/", diff --git a/src/constants/paths.js b/src/constants/paths.js index 2ad87c6..fbc368b 100644 --- a/src/constants/paths.js +++ b/src/constants/paths.js @@ -1,12 +1,12 @@ const path = require('path'); module.exports = { - JSON_GRAMMAR_PATH: path.join(__dirname, '/../grammars/json/'), - NEARLEY_PROPERTY_GRAMMAR_PATH: path.join(__dirname, '/../grammars/nearley/properties/'), - GENERATED_JSON_GRAMMAR_PATH: path.join(__dirname, '/../grammars/generated/json/'), - GENERATED_NEARLEY_GRAMMAR_PATH: path.join(__dirname, '/../grammars/generated/nearley/'), - GENERATED_JS_GRAMMAR_PATH: path.join(__dirname, '/../grammars/generated/js/'), - FORMATTED_DATA_PATH: path.join(__dirname, '/../../formatted-data/'), - FORMAL_SYNTAX_GRAMMAR_PATH: path.join(__dirname, '/../grammars/'), - NEARLEY_BIN_ROOT: path.join(__dirname, '/../../node_modules/nearley/bin/'), + JSON_GRAMMAR_PATH: path.join(__dirname, '..', 'grammars', 'json'), + NEARLEY_PROPERTY_GRAMMAR_PATH: path.join(__dirname, '..', 'grammars', 'nearley', 'properties'), + GENERATED_JSON_GRAMMAR_PATH: path.join(__dirname, '..', 'grammars', 'generated', 'json'), + GENERATED_NEARLEY_GRAMMAR_PATH: path.join(__dirname, '..', 'grammars', 'generated', 'nearley'), + GENERATED_JS_GRAMMAR_PATH: path.join(__dirname, '..', 'grammars', 'generated', 'js'), + FORMATTED_DATA_PATH: path.join(__dirname, '..', 'formatted-data'), + FORMAL_SYNTAX_GRAMMAR_PATH: path.join(__dirname, '..', 'grammars'), + NEARLEY_BIN_ROOT: path.join(__dirname, '..', '..', 'node_modules', 'nearley', 'bin'), }; diff --git a/src/expandShorthandProperty.js b/src/expandShorthandProperty.js index 83fcc3d..3946a89 100644 --- a/src/expandShorthandProperty.js +++ b/src/expandShorthandProperty.js @@ -1,8 +1,8 @@ const nearley = require('nearley'); -const properties = require('../formatted-data/properties.json'); +const properties = require('./formatted-data/properties.json'); const isShorthandProperty = require('./isShorthandProperty'); const getShorthandComputedProperties = require('./getShorthandComputedProperties'); -const shorthandProperties = require('../formatted-data/shorthand-properties.json'); +const shorthandProperties = require('./formatted-data/shorthand-properties.json'); const CSS_CONSTANTS = require('./constants/css'); const { CLASSIFICATIONS } = require('./constants/shorthandProperties'); const LocationIndexTracker = require('./utils/LocationIndexTracker'); @@ -18,6 +18,7 @@ const { UnorderedOptionalListPropertyFormatter, } = require('./formatters/shorthandPropertyTypeFormatters'); const { initialValue, initialValues } = require('./initialValueMap'); +const grammars = require('./grammars/generated'); const shorthandPropertyTypeToActionDictionaryFactoryMap = { [CLASSIFICATIONS.TRBL]: TrblPropertyFormatter, @@ -88,7 +89,7 @@ module.exports = function expandShorthandProperty(propertyName, } // get the compiled grammar file for this property - const grammar = require('./grammars/generated')[propertyName]; + const grammar = grammars[propertyName]; // remove any block style comments and extra whitespace const formattedPropertyValue = propertyValue.replace(R_BLOCK_COMMENT, ' ').replace(/\s+/g, ' ').trim(); let parser; diff --git a/src/formatters/grammarFormatters/NearleyGrammarFormatter.js b/src/formatters/grammarFormatters/NearleyGrammarFormatter.js index 19d3404..6171f13 100644 --- a/src/formatters/grammarFormatters/NearleyGrammarFormatter.js +++ b/src/formatters/grammarFormatters/NearleyGrammarFormatter.js @@ -1,5 +1,6 @@ const CaseConverterUtils = require('../../utils/CaseConverterUtils'); const fs = require('fs-extra'); +const path = require('path'); const PATHS = require('../../constants/paths'); const GRAMMAR_CONSTANTS = require('../../constants/grammars'); const shorthandIdentToLongHandPropertyMap = require('../../constants/shorthandIdentToLonghandPropertyMap.json'); @@ -36,7 +37,7 @@ module.exports = class NearleyGrammarFormatter { ._getGrammarsToResolve(jsonGrammar) .map(fileToResolve => [ fileToResolve, - fs.readJsonSync(`${PATHS.GENERATED_JSON_GRAMMAR_PATH}${fileToResolve}.json`), + fs.readJsonSync(path.join(PATHS.GENERATED_JSON_GRAMMAR_PATH, `${fileToResolve}.json`)), ]) .filter(([, json]) => NearleyGrammarFormatter._isGrammarValid(json)) .map(([grammarName, jsonGrammar]) => ( @@ -122,7 +123,7 @@ module.exports = class NearleyGrammarFormatter { return [...new Set(resolutions.concat( ...resolutions - .map(file => fs.readJsonSync(`${PATHS.GENERATED_JSON_GRAMMAR_PATH}${file}.json`)) + .map(file => fs.readJsonSync(path.join(PATHS.GENERATED_JSON_GRAMMAR_PATH, `${file}.json`))) .map(grammar => NearleyGrammarFormatter._getGrammarsToResolve(grammar, resolved.concat(resolutions)))))]; } diff --git a/src/getShorthandComputedProperties.js b/src/getShorthandComputedProperties.js index 3164609..890b208 100644 --- a/src/getShorthandComputedProperties.js +++ b/src/getShorthandComputedProperties.js @@ -1,4 +1,4 @@ -const properties = require('../formatted-data/properties.json'); +const properties = require('./formatted-data/properties.json'); /** * Given a shorthand property, returns an array of the computed properties for that shorthand property. If given diff --git a/src/getShorthandsForProperty.js b/src/getShorthandsForProperty.js index 50ebbb4..eabad37 100644 --- a/src/getShorthandsForProperty.js +++ b/src/getShorthandsForProperty.js @@ -1,5 +1,5 @@ -const shortHandProperties = require('../formatted-data/shorthand-properties.json'); -const properties = require('../formatted-data/properties.json'); +const shortHandProperties = require('./formatted-data/shorthand-properties.json'); +const properties = require('./formatted-data/properties.json'); /** * @type {Object} diff --git a/src/initialValueMap.js b/src/initialValueMap.js index c661f48..ee1a982 100644 --- a/src/initialValueMap.js +++ b/src/initialValueMap.js @@ -1,4 +1,4 @@ -const properties = require('../formatted-data/properties.json'); +const properties = require('./formatted-data/properties.json'); const getShorthandComputedProperties = require('./getShorthandComputedProperties'); const isShorthandProperty = require('./isShorthandProperty'); diff --git a/src/isShorthandProperty.js b/src/isShorthandProperty.js index d7c93f3..4389f3d 100644 --- a/src/isShorthandProperty.js +++ b/src/isShorthandProperty.js @@ -1,4 +1,4 @@ -const shortHandProperties = require('../formatted-data/shorthand-properties.json'); +const shortHandProperties = require('./formatted-data/shorthand-properties.json'); /** * Checks if a given property is a shorthand property diff --git a/src/isValidDeclaration.js b/src/isValidDeclaration.js index c9ac2b9..337af37 100644 --- a/src/isValidDeclaration.js +++ b/src/isValidDeclaration.js @@ -1,6 +1,7 @@ const nearley = require('nearley'); -const properties = require('../formatted-data/properties.json'); +const properties = require('./formatted-data/properties.json'); const { CSS } = require('./constants'); +const grammars = require('./grammars/generated'); /** * Checks if the given property, value pair is valid. @@ -16,7 +17,7 @@ module.exports = function isValidDeclaration(property, value) { return true; } - const propertyGrammar = require('./grammars/generated')[property]; + const propertyGrammar = grammars[property]; try { const parser = new nearley.Parser(nearley.Grammar.fromCompiled(propertyGrammar)).feed(value); diff --git a/src/scripts/extractProperties.js b/src/scripts/extractProperties.js index 79fb0f2..5c5ab6e 100644 --- a/src/scripts/extractProperties.js +++ b/src/scripts/extractProperties.js @@ -3,11 +3,12 @@ * Writes the formatted data to FORMATTED_DATA_PATH. */ const fs = require('fs-extra'); +const path = require('path'); const { css: { properties } } = require('mdn-data'); const PATHS = require('../constants/paths'); const ALL_PROPERTIES_DATA_FILE_NAME = 'properties.json'; -const OUTPUT_FILE = `${PATHS.FORMATTED_DATA_PATH}${ALL_PROPERTIES_DATA_FILE_NAME}`; +const OUTPUT_FILE = path.join(PATHS.FORMATTED_DATA_PATH, ALL_PROPERTIES_DATA_FILE_NAME); fs.writeJson(OUTPUT_FILE, properties, { spaces: 2 }) .then(() => ( console.log(`Successfully extracted properties to ${OUTPUT_FILE}`) diff --git a/src/scripts/formatData.js b/src/scripts/formatData.js index fe56ad3..0aa3213 100755 --- a/src/scripts/formatData.js +++ b/src/scripts/formatData.js @@ -3,6 +3,7 @@ * Writes the formatted data to FORMATTED_DATA_PATH. */ const fs = require('fs-extra'); +const path = require('path'); const { css: { properties } } = require('mdn-data'); const ShorthandPropertyClassifierUtils = require('../utils/ShorthandPropertyClassifierUtils'); const PATHS = require('../constants/paths'); @@ -21,7 +22,8 @@ const formattedData = Object.entries(properties) // reduce it down to an object again so we can write it to a file .reduce((propertyMap, [property, data]) => Object.assign({ [property]: data }, propertyMap), {}); -fs.writeJson(`${PATHS.FORMATTED_DATA_PATH}${SHORTHAND_FORMATTED_DATA_FILE_NAME}`, formattedData, { spaces: 2 }) - .then(() => ( - console.log(`Successfully formatted data to ${PATHS.FORMATTED_DATA_PATH}${SHORTHAND_FORMATTED_DATA_FILE_NAME}`) - )); +fs.writeJson(path.join(PATHS.FORMATTED_DATA_PATH, SHORTHAND_FORMATTED_DATA_FILE_NAME), formattedData, { spaces: 2 }) + .then(() => { + const fdPath = path.join(PATHS.FORMATTED_DATA_PATH, SHORTHAND_FORMATTED_DATA_FILE_NAME); + console.log(`Successfully formatted data to ${fdPath}`); + }); diff --git a/src/scripts/formatFormalSyntaxes.js b/src/scripts/formatFormalSyntaxes.js index cc21c81..3bef945 100644 --- a/src/scripts/formatFormalSyntaxes.js +++ b/src/scripts/formatFormalSyntaxes.js @@ -2,6 +2,7 @@ * Format each formal syntax into a json grammar */ const fs = require('fs-extra'); +const path = require('path'); const { css: { properties, syntaxes } } = require('mdn-data'); const { PATHS, SYNTAX_OVERRIDES } = require('../constants/index'); const JsonGrammarFormatter = require('../formatters/grammarFormatters/JsonGrammarFormatter'); @@ -30,18 +31,19 @@ const syntaxesSyntaxMap = Object.entries(syntaxes) const propertySyntaxMap = Object.entries(properties).reduce((syntaxMap, [propertyName, { syntax }]) => ( Object.assign({ [propertyName]: syntax }, syntaxMap) ), syntaxesSyntaxMap); -const overridenPropertySyntaxMap = Object.assign(propertySyntaxMap, SYNTAX_OVERRIDES); +const overriddenPropertySyntaxMap = Object.assign(propertySyntaxMap, SYNTAX_OVERRIDES); // make the json grammar directory if needed if (!fs.existsSync(PATHS.GENERATED_JSON_GRAMMAR_PATH)) { fs.mkdirSync(PATHS.GENERATED_JSON_GRAMMAR_PATH); } -Object.entries(overridenPropertySyntaxMap) +Object.entries(overriddenPropertySyntaxMap) // filter out any entries that we need to do manually .filter(([grammarName]) => !manualSyntaxes.includes(grammarName)) .forEach(([grammarName, formalSyntax]) => { - console.log(`creating ${PATHS.GENERATED_JSON_GRAMMAR_PATH}${grammarName}.json`); + const filename = path.join(PATHS.GENERATED_JSON_GRAMMAR_PATH, `${grammarName}.json`); + console.log(`creating ${filename}`); const jsonGrammar = JsonGrammarFormatter.format(formalSyntax); - fs.writeJson(`${PATHS.GENERATED_JSON_GRAMMAR_PATH}${grammarName}.json`, jsonGrammar, { spaces: 2 }); + fs.writeJson(filename, jsonGrammar, { spaces: 2 }); }); diff --git a/src/scripts/formatGrammars.js b/src/scripts/formatGrammars.js index 347571f..a725a1e 100644 --- a/src/scripts/formatGrammars.js +++ b/src/scripts/formatGrammars.js @@ -24,20 +24,22 @@ if (!fs.existsSync(PATHS.GENERATED_JS_GRAMMAR_PATH)) { } // move manual json grammars into generated folder for grammar resolution -fs.readdirSync(`${PATHS.JSON_GRAMMAR_PATH}`) - .forEach(fileName => ( - fs.copySync(`${PATHS.JSON_GRAMMAR_PATH}${fileName}`, `${PATHS.GENERATED_JSON_GRAMMAR_PATH}${fileName}`)) - ); +fs.readdirSync(PATHS.JSON_GRAMMAR_PATH) + .forEach((fileName) => { + const fullSrc = path.join(PATHS.JSON_GRAMMAR_PATH, fileName); + const fullDest = path.join(PATHS.GENERATED_JSON_GRAMMAR_PATH, fileName); + fs.copySync(fullSrc, fullDest); + }); // read each json grammar and format it into an nearley grammar fs.readdirSync(PATHS.GENERATED_JSON_GRAMMAR_PATH) - .map(fileName => [fileName, fs.readJsonSync(`${PATHS.GENERATED_JSON_GRAMMAR_PATH}${fileName}`)]) + .map(fileName => [fileName, fs.readJsonSync(path.join(PATHS.GENERATED_JSON_GRAMMAR_PATH, fileName))]) .forEach(([fileName, jsonGrammar]) => { console.log(`creating ${fileName}`); const grammarName = fileName.replace('.json', ''); const nearleyGrammar = NearleyGrammarFormatter.format(jsonGrammar, grammarName); - const fileToWrite = `${PATHS.GENERATED_NEARLEY_GRAMMAR_PATH}${fileName.replace('.json', `.${GRAMMAR_CONSTANTS.GRAMMAR_FILE_EXTENSION}`)}`; + const fileToWrite = path.join(PATHS.GENERATED_NEARLEY_GRAMMAR_PATH, fileName.replace('.json', `.${GRAMMAR_CONSTANTS.GRAMMAR_FILE_EXTENSION}`)); fs.createFileSync(fileToWrite); fs.writeFileSync(fileToWrite, nearleyGrammar); @@ -45,12 +47,11 @@ fs.readdirSync(PATHS.GENERATED_JSON_GRAMMAR_PATH) // copy over overridden grammars fs.readdirSync(PATHS.NEARLEY_PROPERTY_GRAMMAR_PATH) - .forEach(fileName => ( - fs.copySync( - `${PATHS.NEARLEY_PROPERTY_GRAMMAR_PATH}${fileName}`, - `${PATHS.GENERATED_NEARLEY_GRAMMAR_PATH}${fileName}` - ) - )); + .forEach((fileName) => { + const fullSrc = path.join(PATHS.NEARLEY_PROPERTY_GRAMMAR_PATH, fileName); + const fullDest = path.join(PATHS.GENERATED_NEARLEY_GRAMMAR_PATH, fileName); + fs.copySync(fullSrc, fullDest); + }); console.log('...Successfully created nearley grammars...'); @@ -65,19 +66,19 @@ const compilationCommands = fs.readdirSync(PATHS.GENERATED_NEARLEY_GRAMMAR_PATH) .map((fileName) => { const propName = fileName.replace(`.${GRAMMAR_CONSTANTS.GRAMMAR_FILE_EXTENSION}`, ''); const jsFileName = `${propName}.${JAVASCRIPT_FILE_EXTENSION}`; - const nearleyFilePath = JSON.stringify(`${PATHS.GENERATED_NEARLEY_GRAMMAR_PATH}${fileName}`); + const nearleyFilePath = JSON.stringify(path.join(PATHS.GENERATED_NEARLEY_GRAMMAR_PATH, fileName)); const jsFilePath = JSON.stringify( path.join(PATHS.GENERATED_JS_GRAMMAR_PATH, jsFileName) ); jsModules.push(` '${propName}': require('./js/${jsFileName}')`); - return `node ${PATHS.NEARLEY_BIN_ROOT}${NEARLEY_COMPILER_FILE_NAME} ${nearleyFilePath} > ${jsFilePath}`; + return `node ${path.join(PATHS.NEARLEY_BIN_ROOT, NEARLEY_COMPILER_FILE_NAME)} ${nearleyFilePath} > ${jsFilePath}`; }); const jsExportsFile = `module.exports = {\n${jsModules.join(',\n')}\n}`; -fs.writeFileSync(path.join(PATHS.GENERATED_JS_GRAMMAR_PATH, '../index.js'), jsExportsFile); +fs.writeFileSync(path.resolve(PATHS.GENERATED_JS_GRAMMAR_PATH, '..', 'index.js'), jsExportsFile); compilationQueue.push(compilationCommands, (err) => { if (err) { diff --git a/src/scripts/updateBasicDataUnits.js b/src/scripts/updateBasicDataUnits.js index 4586204..2a4b8e3 100644 --- a/src/scripts/updateBasicDataUnits.js +++ b/src/scripts/updateBasicDataUnits.js @@ -5,6 +5,7 @@ */ const { css: { units } } = require('mdn-data'); const fs = require('fs-extra'); +const path = require('path'); const PATHS = require('../constants/paths'); const GRAMMAR_CONSTANTS = require('../constants/grammars'); @@ -28,7 +29,7 @@ const unitToTypesMap = Object.entries(units).reduce((unitMap, [unit, { groups }] Promise.all( Object.entries(unitToTypesMap).map(([fileName, unitList]) => ( - fs.writeJson(`${PATHS.GENERATED_JSON_GRAMMAR_PATH}${fileName}.json`, [ + fs.writeJson(path.join(PATHS.GENERATED_JSON_GRAMMAR_PATH, `${fileName}.json`), [ [GRAMMAR_CONSTANTS.BASE_GRAMMAR_RULE_NAME, `( ${unitList.map(unit => `"${unit}"`).join(' | ')} )`], ], { spaces: 2 }) ))) diff --git a/test/InitialValuesTest.js b/test/InitialValuesTest.js index cca2d02..e043724 100644 --- a/test/InitialValuesTest.js +++ b/test/InitialValuesTest.js @@ -1,5 +1,5 @@ const { assert } = require('chai'); -const properties = require('../formatted-data/properties.json'); +const properties = require('../src/formatted-data/properties.json'); const { initialValue, initialValues, diff --git a/test/formatters/NearleyGrammarFormatterTest.js b/test/formatters/NearleyGrammarFormatterTest.js index 7dd5da1..5f3d41e 100644 --- a/test/formatters/NearleyGrammarFormatterTest.js +++ b/test/formatters/NearleyGrammarFormatterTest.js @@ -1,5 +1,6 @@ const sinon = require('sinon'); const fs = require('fs-extra'); +const path = require('path'); const { assert } = require('chai'); const PATHS = require('../../src/constants/paths'); const GRAMMAR_CONSTANTS = require('../../src/constants/grammars'); @@ -58,17 +59,17 @@ describe('NearleyGrammarFormatter#format', function () { describe('recursive cases', function () { it('should handle deeply recursive cases', function () { sandbox.stub(fs, 'readJsonSync') - .withArgs(`${PATHS.GENERATED_JSON_GRAMMAR_PATH}ra.json`) + .withArgs(path.join(PATHS.GENERATED_JSON_GRAMMAR_PATH, 'ra.json')) .returns([ [GRAMMAR_CONSTANTS.BASE_GRAMMAR_RULE_NAME, ''], [''], ]) - .withArgs(`${PATHS.GENERATED_JSON_GRAMMAR_PATH}rb.json`) + .withArgs(path.join(PATHS.GENERATED_JSON_GRAMMAR_PATH, 'rb.json')) .returns([ [GRAMMAR_CONSTANTS.BASE_GRAMMAR_RULE_NAME, ''], [''], ]) - .withArgs(`${PATHS.GENERATED_JSON_GRAMMAR_PATH}rc.json`) + .withArgs(path.join(PATHS.GENERATED_JSON_GRAMMAR_PATH, 'rc.json')) .returns([ [GRAMMAR_CONSTANTS.BASE_GRAMMAR_RULE_NAME, '"d"'], ]); diff --git a/updateCSSData.sh b/updateCSSData.sh index 56867f1..0e5e1d2 100755 --- a/updateCSSData.sh +++ b/updateCSSData.sh @@ -13,8 +13,8 @@ function realpath() echo "$dir$base" } cd "$(dirname "$(realpath "$0")")"; -rm -rf formatted-data src/grammars/generated/json -mkdir -p formatted-data src/grammars/generated/json +rm -rf src/formatted-data src/grammars/generated/json +mkdir -p src/formatted-data src/grammars/generated/json node ./node_modules/nearley/bin/nearleyc.js ./src/grammars/nearley/formalSyntax.ne > ./src/grammars/js/formalSyntax.js || exit 1 node ./src/scripts/updateBasicDataUnits.js || exit 1 node ./src/scripts/formatData.js || exit 1 From 560b2368f6976b3669f504bab8bdde80445a339b Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Wed, 28 Feb 2018 05:05:22 -0800 Subject: [PATCH 16/19] Don't create filenames containing an asterisk. Fixes #21. --- src/scripts/formatFormalSyntaxes.js | 3 ++- src/scripts/formatGrammars.js | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/scripts/formatFormalSyntaxes.js b/src/scripts/formatFormalSyntaxes.js index 3bef945..8f2c741 100644 --- a/src/scripts/formatFormalSyntaxes.js +++ b/src/scripts/formatFormalSyntaxes.js @@ -42,7 +42,8 @@ Object.entries(overriddenPropertySyntaxMap) // filter out any entries that we need to do manually .filter(([grammarName]) => !manualSyntaxes.includes(grammarName)) .forEach(([grammarName, formalSyntax]) => { - const filename = path.join(PATHS.GENERATED_JSON_GRAMMAR_PATH, `${grammarName}.json`); + const safeName = grammarName.replace('*', 'STAR'); + const filename = path.join(PATHS.GENERATED_JSON_GRAMMAR_PATH, `${safeName}.json`); console.log(`creating ${filename}`); const jsonGrammar = JsonGrammarFormatter.format(formalSyntax); fs.writeJson(filename, jsonGrammar, { spaces: 2 }); diff --git a/src/scripts/formatGrammars.js b/src/scripts/formatGrammars.js index a725a1e..d34ac03 100644 --- a/src/scripts/formatGrammars.js +++ b/src/scripts/formatGrammars.js @@ -65,8 +65,9 @@ const jsModules = []; const compilationCommands = fs.readdirSync(PATHS.GENERATED_NEARLEY_GRAMMAR_PATH) .map((fileName) => { const propName = fileName.replace(`.${GRAMMAR_CONSTANTS.GRAMMAR_FILE_EXTENSION}`, ''); - const jsFileName = `${propName}.${JAVASCRIPT_FILE_EXTENSION}`; - const nearleyFilePath = JSON.stringify(path.join(PATHS.GENERATED_NEARLEY_GRAMMAR_PATH, fileName)); + const safeFileName = propName.replace('*', 'STAR'); + const jsFileName = `${safeFileName}.${JAVASCRIPT_FILE_EXTENSION}`; + const nearleyFilePath = JSON.stringify(path.join(PATHS.GENERATED_NEARLEY_GRAMMAR_PATH, fileName.replace('*', 'STAR'))); const jsFilePath = JSON.stringify( path.join(PATHS.GENERATED_JS_GRAMMAR_PATH, jsFileName) ); From bd1a0ddaffa2c5acc64c5b919433ff5c298fe7d7 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Wed, 28 Feb 2018 05:06:54 -0800 Subject: [PATCH 17/19] Use bin scripts correctly in package.json. --- package.json | 6 +++--- src/grammars/js/formalSyntax.js | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 735ea04..15e6752 100644 --- a/package.json +++ b/package.json @@ -9,12 +9,12 @@ "main": "src/index.js", "scripts": { "prepublish": "npm start", - "test": "./node_modules/.bin/mocha --reporter spec --recursive", + "test": "mocha --reporter spec --recursive", "start": "./updateCSSData.sh", "clean": "rm -rf src/formatted-data src/grammars/generated", "benchmark": "node test/benchmark.js", - "doctoc": "node ./node_modules/doctoc/doctoc.js README.md", - "lint": "node node_modules/eslint/bin/eslint.js src/", + "doctoc": "doctoc README.md", + "lint": "eslint src/", "precommit-msg": "echo 'Pre-commit checks...' && exit 0" }, "pre-commit": [ diff --git a/src/grammars/js/formalSyntax.js b/src/grammars/js/formalSyntax.js index 13f9539..c28c2c1 100644 --- a/src/grammars/js/formalSyntax.js +++ b/src/grammars/js/formalSyntax.js @@ -1,7 +1,7 @@ -// Generated automatically by nearley +// Generated automatically by nearley, version 2.11.1 // http://github.com/Hardmath123/nearley (function () { -function id(x) {return x[0]; } +function id(x) { return x[0]; } var grammar = { Lexer: undefined, ParserRules: [ From 987e7d832fb44fc4a96a2ecc13c0bc11579b3e88 Mon Sep 17 00:00:00 2001 From: Chris Eppstein Date: Wed, 28 Feb 2018 05:07:48 -0800 Subject: [PATCH 18/19] Bump version to 1.0.6. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 15e6752..030afaa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "css-property-parser", - "version": "1.0.5", + "version": "1.0.6", "description": "Validate css properties and expand shorthand css properties", "keywords": [ "css" From 162156f3a3214d2c13c6aae8e8c5d1d7685c497f Mon Sep 17 00:00:00 2001 From: Alex Orekhov Date: Thu, 28 Jun 2018 12:51:22 +0300 Subject: [PATCH 19/19] Fix redundant quote in ParseError argument --- src/expandShorthandProperty.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/expandShorthandProperty.js b/src/expandShorthandProperty.js index 3946a89..0f84a3d 100644 --- a/src/expandShorthandProperty.js +++ b/src/expandShorthandProperty.js @@ -98,7 +98,7 @@ module.exports = function expandShorthandProperty(propertyName, try { parser = new nearley.Parser(nearley.Grammar.fromCompiled(grammar)).feed(formattedPropertyValue); } catch (parseError) { - throw new ParseError(`'Error parsing shorthand property ${propertyName}: ${propertyValue}. ${parseError.message}`); + throw new ParseError(`Error parsing shorthand property ${propertyName}: ${propertyValue}. ${parseError.message}`); } // get the first parsing and use the formatter for the specific shorthand type for this property