├── .editorconfig ├── .gitignore ├── .jscsrc ├── .jshintignore ├── .jshintrc ├── .npmignore ├── .travis.yml ├── LICENSE ├── README.md ├── index.js ├── package-lock.json ├── package.json └── test ├── mocha.opts └── test.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # This file is for unifying the coding style for different editors and IDEs. 2 | # More information at http://EditorConfig.org 3 | 4 | # No .editorconfig files above the root directory 5 | root = true 6 | 7 | [*] 8 | charset = utf-8 9 | indent_size = 4 10 | end_of_line = lf 11 | indent_style = space 12 | trim_trailing_whitespace = true 13 | insert_final_newline = true 14 | 15 | [*.{bemjson.js,deps.js}] 16 | indent_size = 4 17 | 18 | [{bower,package}.json] 19 | indent_size = 2 20 | 21 | [*.md] 22 | trim_trailing_whitespace = false 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS 2 | .DS_Store 3 | ._* 4 | 5 | # NODEJS 6 | node_modules 7 | npm-debug.log 8 | 9 | build 10 | -------------------------------------------------------------------------------- /.jscsrc: -------------------------------------------------------------------------------- 1 | { 2 | "excludeFiles": [ 3 | ".git/**", 4 | "node_modules/**" 5 | ], 6 | "fileExtensions": [".js"] 7 | } 8 | -------------------------------------------------------------------------------- /.jshintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "eqeqeq": true, 3 | "expr": true, 4 | "maxlen": 120, 5 | "undef": true, 6 | "unused": true, 7 | "node": true 8 | } 9 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .gitignore 2 | 3 | node_modules/ 4 | 5 | test/ 6 | npm-debug.log 7 | 8 | .editorconfig 9 | .jscsrc 10 | .jshintignore 11 | .jshintrc 12 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: node_js 3 | node_js: 4 | - "stable" 5 | - "4" 6 | - "0.12" 7 | 8 | env: 9 | global: 10 | - ISTANBUL_COVERAGE: yes 11 | 12 | after_success: 13 | - npm i coveralls 14 | - cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && echo "Coverage data was sent to coveralls!" 15 | 16 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License (MIT) 2 | 3 | Copyright (c) 2016 PostHTML Ivan Voischev 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![NPM][npm]][npm-url] 2 | [![Deps][deps]][deps-url] 3 | [![Tests][travis]][travis-url] 4 | [![Coverage][cover]][cover-url] 5 | 6 |
7 | 8 |

Custom Elements Plugin

9 |

Use custom elements now!

10 |
11 | 12 |

Install

13 | 14 | ```bash 15 | npm i -D posthtml-custom-elements 16 | ``` 17 | 18 |

Usage

19 | 20 | ```js 21 | const posthtml = require('posthtml') 22 | 23 | const custom = require('posthtml-custom-elements') 24 | 25 | const component = ` 26 | Text 27 | 30 | ` 31 | 32 | posthtml([ custom({ defaultTag: 'span' }) ]) 33 | .process(component) 34 | .then((result) => console.log(result.html)) 35 | ``` 36 | 37 | ```html 38 | 39 | Text 40 | 43 | 44 | ``` 45 | 46 | ## Options 47 | 48 | #### `defaultTag` 49 | 50 | __Default__: `div` 51 | 52 | Tag is used to replace the custom tag 53 | 54 | *Options* `{ defaultTag: 'span' }` 55 | 56 | ```html 57 | Test 58 | ``` 59 | 60 | ```html 61 | Test 62 | ``` 63 | 64 | #### `skipTags` 65 | 66 | __Default__: `[]` 67 | 68 | Skip HTML5 tag 69 | 70 | *Options* `{ skipTags: ['header'] }` 71 | 72 | ```html 73 |
Test
74 | ``` 75 | 76 | ```html 77 |
Test
78 | ``` 79 | 80 | ## Support 81 | 82 | #### `attribute tag` 83 | 84 | ```html 85 | Test 86 | ``` 87 | 88 | ```html 89 |
Test
90 | ``` 91 | 92 |

LICENSE

93 | 94 | > MIT License (MIT) 95 | 96 | > Copyright (c) 2016 PostHTML Ivan Voischev 97 | 98 | > Permission is hereby granted, free of charge, to any person obtaining a copy 99 | of this software and associated documentation files (the "Software"), to deal 100 | in the Software without restriction, including without limitation the rights 101 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 102 | copies of the Software, and to permit persons to whom the Software is 103 | furnished to do so, subject to the following conditions: 104 | 105 | > The above copyright notice and this permission notice shall be included in all 106 | copies or substantial portions of the Software. 107 | 108 | > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 109 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 110 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 111 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 112 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 113 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 114 | SOFTWARE. 115 | 116 | [npm]: https://img.shields.io/npm/v/posthtml-custom-elements.svg 117 | [npm-url]: https://npmjs.com/package/posthtml-custom-elements 118 | 119 | [deps]: https://david-dm.org/posthtml/posthtml-custom-elements.svg 120 | [deps-url]: https://david-dm.org/posthtml/posthtml-custom-elements 121 | 122 | [travis]: http://img.shields.io/travis/posthtml/posthtml-custom-elements/master.svg 123 | [travis-url]: https://travis-ci.org/posthtml/posthtml-custom-elements 124 | 125 | [cover]: https://coveralls.io/repos/github/posthtml/posthtml-custom-elements/badge.svg?branch=master 126 | [cover-url]: https://coveralls.io/github/posthtml/posthtml-custom-elements?branch=master 127 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | module.exports = function posthtmlCustomElements(options) { 2 | options = options || {}; 3 | var defaultTag = options.defaultTag || 'div', 4 | skipTags = options.skipTags || [], 5 | html5tags = [ 6 | 'a','abbr','address','area','article','aside','audio','b','base','bdi','bdo','blockquote', 7 | 'body','br','button','canvas','caption','cite','code','col','colgroup','datalist','dd','del','details','dfn', 8 | 'dialog','div','dl','dt','em','embed','fieldset','figcaption','figure','footer','form', 9 | 'h1','h2','h3','h4','h5','h6','head','header','hr','html','i','iframe','img','input','ins','kbd','keygen', 10 | 'label','legend','li','link','main','map','mark','menu','menuitem','meta','meter','nav','noscript','object', 11 | 'ol','optgroup','option','output','p','param','pre','progress','q','rp','rt','ruby','s','samp', 12 | 'script','section','select','small','source','span','strong','style','sub','summary','sup', 13 | 'table','tbody','td','textarea','tfoot','th','thead','time','title','tr','track','u','ul','var','video','wbr' 14 | ]; 15 | 16 | return function(tree) { 17 | tree.walk(function(node) { 18 | if(node.tag) { 19 | var tag = node.tag; 20 | 21 | if (skipTags.indexOf(tag) === -1 && html5tags.indexOf(tag.toLowerCase()) === -1) { 22 | 23 | node.tag = defaultTag; 24 | 25 | if (!node.attrs) { 26 | node.attrs = { class: tag }; 27 | } 28 | 29 | if (node.attrs.tag) { 30 | node.tag = node.attrs.tag; 31 | delete node.attrs.tag; 32 | } 33 | 34 | if (typeof node.attrs.class !== 'string') { 35 | node.attrs.class = tag; 36 | } 37 | 38 | var classes = node.attrs.class.split(' '); 39 | if(classes.indexOf(tag) === -1) { 40 | node.attrs.class = [tag].concat(classes).join(' '); 41 | } 42 | 43 | return node; 44 | } else { 45 | node.tag = node.tag.toLowerCase(); 46 | } 47 | } 48 | return node; 49 | }); 50 | return tree; 51 | }; 52 | }; 53 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "posthtml-custom-elements", 3 | "version": "1.1.2", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "JSV": { 8 | "version": "4.0.2", 9 | "resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz", 10 | "integrity": "sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c=", 11 | "dev": true 12 | }, 13 | "abbrev": { 14 | "version": "1.0.9", 15 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", 16 | "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", 17 | "dev": true 18 | }, 19 | "amdefine": { 20 | "version": "1.0.1", 21 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", 22 | "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", 23 | "dev": true, 24 | "optional": true 25 | }, 26 | "ansi-regex": { 27 | "version": "2.1.1", 28 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 29 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 30 | "dev": true 31 | }, 32 | "ansi-styles": { 33 | "version": "2.2.1", 34 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 35 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 36 | "dev": true 37 | }, 38 | "argparse": { 39 | "version": "1.0.10", 40 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 41 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 42 | "dev": true, 43 | "requires": { 44 | "sprintf-js": "~1.0.2" 45 | } 46 | }, 47 | "assertion-error": { 48 | "version": "1.1.0", 49 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", 50 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", 51 | "dev": true 52 | }, 53 | "async": { 54 | "version": "1.5.2", 55 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", 56 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", 57 | "dev": true 58 | }, 59 | "babel-runtime": { 60 | "version": "6.26.0", 61 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 62 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 63 | "dev": true, 64 | "requires": { 65 | "core-js": "^2.4.0", 66 | "regenerator-runtime": "^0.11.0" 67 | } 68 | }, 69 | "babylon": { 70 | "version": "6.18.0", 71 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", 72 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", 73 | "dev": true 74 | }, 75 | "balanced-match": { 76 | "version": "1.0.0", 77 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 78 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 79 | "dev": true 80 | }, 81 | "brace-expansion": { 82 | "version": "1.1.11", 83 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 84 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 85 | "dev": true, 86 | "requires": { 87 | "balanced-match": "^1.0.0", 88 | "concat-map": "0.0.1" 89 | } 90 | }, 91 | "browser-stdout": { 92 | "version": "1.3.0", 93 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", 94 | "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", 95 | "dev": true 96 | }, 97 | "chai": { 98 | "version": "3.5.0", 99 | "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", 100 | "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", 101 | "dev": true, 102 | "requires": { 103 | "assertion-error": "^1.0.1", 104 | "deep-eql": "^0.1.3", 105 | "type-detect": "^1.0.0" 106 | } 107 | }, 108 | "chalk": { 109 | "version": "1.1.3", 110 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 111 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 112 | "dev": true, 113 | "requires": { 114 | "ansi-styles": "^2.2.1", 115 | "escape-string-regexp": "^1.0.2", 116 | "has-ansi": "^2.0.0", 117 | "strip-ansi": "^3.0.0", 118 | "supports-color": "^2.0.0" 119 | }, 120 | "dependencies": { 121 | "supports-color": { 122 | "version": "2.0.0", 123 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 124 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 125 | "dev": true 126 | } 127 | } 128 | }, 129 | "cli": { 130 | "version": "1.0.1", 131 | "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", 132 | "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", 133 | "dev": true, 134 | "requires": { 135 | "exit": "0.1.2", 136 | "glob": "^7.1.1" 137 | }, 138 | "dependencies": { 139 | "glob": { 140 | "version": "7.1.2", 141 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 142 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 143 | "dev": true, 144 | "requires": { 145 | "fs.realpath": "^1.0.0", 146 | "inflight": "^1.0.4", 147 | "inherits": "2", 148 | "minimatch": "^3.0.4", 149 | "once": "^1.3.0", 150 | "path-is-absolute": "^1.0.0" 151 | } 152 | } 153 | } 154 | }, 155 | "cli-table": { 156 | "version": "0.3.1", 157 | "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", 158 | "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", 159 | "dev": true, 160 | "requires": { 161 | "colors": "1.0.3" 162 | } 163 | }, 164 | "colors": { 165 | "version": "1.0.3", 166 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", 167 | "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", 168 | "dev": true 169 | }, 170 | "commander": { 171 | "version": "2.9.0", 172 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", 173 | "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", 174 | "dev": true, 175 | "requires": { 176 | "graceful-readlink": ">= 1.0.0" 177 | } 178 | }, 179 | "comment-parser": { 180 | "version": "0.3.2", 181 | "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.3.2.tgz", 182 | "integrity": "sha1-PAPwd2uGo239mgosl8YwfzMggv4=", 183 | "dev": true, 184 | "requires": { 185 | "readable-stream": "^2.0.4" 186 | }, 187 | "dependencies": { 188 | "isarray": { 189 | "version": "1.0.0", 190 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 191 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 192 | "dev": true 193 | }, 194 | "readable-stream": { 195 | "version": "2.3.4", 196 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", 197 | "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", 198 | "dev": true, 199 | "requires": { 200 | "core-util-is": "~1.0.0", 201 | "inherits": "~2.0.3", 202 | "isarray": "~1.0.0", 203 | "process-nextick-args": "~2.0.0", 204 | "safe-buffer": "~5.1.1", 205 | "string_decoder": "~1.0.3", 206 | "util-deprecate": "~1.0.1" 207 | } 208 | }, 209 | "string_decoder": { 210 | "version": "1.0.3", 211 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 212 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 213 | "dev": true, 214 | "requires": { 215 | "safe-buffer": "~5.1.0" 216 | } 217 | } 218 | } 219 | }, 220 | "concat-map": { 221 | "version": "0.0.1", 222 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 223 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 224 | "dev": true 225 | }, 226 | "console-browserify": { 227 | "version": "1.1.0", 228 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", 229 | "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", 230 | "dev": true, 231 | "requires": { 232 | "date-now": "^0.1.4" 233 | } 234 | }, 235 | "core-js": { 236 | "version": "2.5.3", 237 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", 238 | "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", 239 | "dev": true 240 | }, 241 | "core-util-is": { 242 | "version": "1.0.2", 243 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 244 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 245 | "dev": true 246 | }, 247 | "cst": { 248 | "version": "0.4.10", 249 | "resolved": "https://registry.npmjs.org/cst/-/cst-0.4.10.tgz", 250 | "integrity": "sha512-U5ETe1IOjq2h56ZcBE3oe9rT7XryCH6IKgPMv0L7sSk6w29yR3p5egCK0T3BDNHHV95OoUBgXsqiVG+3a900Ag==", 251 | "dev": true, 252 | "requires": { 253 | "babel-runtime": "^6.9.2", 254 | "babylon": "^6.8.1", 255 | "source-map-support": "^0.4.0" 256 | } 257 | }, 258 | "cycle": { 259 | "version": "1.0.3", 260 | "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", 261 | "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", 262 | "dev": true 263 | }, 264 | "date-now": { 265 | "version": "0.1.4", 266 | "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", 267 | "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", 268 | "dev": true 269 | }, 270 | "debug": { 271 | "version": "2.6.8", 272 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", 273 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", 274 | "dev": true, 275 | "requires": { 276 | "ms": "2.0.0" 277 | } 278 | }, 279 | "deep-eql": { 280 | "version": "0.1.3", 281 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", 282 | "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", 283 | "dev": true, 284 | "requires": { 285 | "type-detect": "0.1.1" 286 | }, 287 | "dependencies": { 288 | "type-detect": { 289 | "version": "0.1.1", 290 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", 291 | "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", 292 | "dev": true 293 | } 294 | } 295 | }, 296 | "deep-equal": { 297 | "version": "1.0.1", 298 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", 299 | "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", 300 | "dev": true 301 | }, 302 | "deep-is": { 303 | "version": "0.1.3", 304 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 305 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 306 | "dev": true 307 | }, 308 | "diff": { 309 | "version": "3.2.0", 310 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", 311 | "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", 312 | "dev": true 313 | }, 314 | "dom-serializer": { 315 | "version": "0.1.0", 316 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", 317 | "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", 318 | "dev": true, 319 | "requires": { 320 | "domelementtype": "~1.1.1", 321 | "entities": "~1.1.1" 322 | }, 323 | "dependencies": { 324 | "domelementtype": { 325 | "version": "1.1.3", 326 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", 327 | "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", 328 | "dev": true 329 | }, 330 | "entities": { 331 | "version": "1.1.1", 332 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", 333 | "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", 334 | "dev": true 335 | } 336 | } 337 | }, 338 | "domelementtype": { 339 | "version": "1.3.0", 340 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", 341 | "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", 342 | "dev": true 343 | }, 344 | "domhandler": { 345 | "version": "2.3.0", 346 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", 347 | "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", 348 | "dev": true, 349 | "requires": { 350 | "domelementtype": "1" 351 | } 352 | }, 353 | "domutils": { 354 | "version": "1.5.1", 355 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", 356 | "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", 357 | "dev": true, 358 | "requires": { 359 | "dom-serializer": "0", 360 | "domelementtype": "1" 361 | } 362 | }, 363 | "entities": { 364 | "version": "1.0.0", 365 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", 366 | "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", 367 | "dev": true 368 | }, 369 | "escape-string-regexp": { 370 | "version": "1.0.5", 371 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 372 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 373 | "dev": true 374 | }, 375 | "escodegen": { 376 | "version": "1.8.1", 377 | "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", 378 | "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", 379 | "dev": true, 380 | "requires": { 381 | "esprima": "^2.7.1", 382 | "estraverse": "^1.9.1", 383 | "esutils": "^2.0.2", 384 | "optionator": "^0.8.1", 385 | "source-map": "~0.2.0" 386 | } 387 | }, 388 | "esprima": { 389 | "version": "2.7.3", 390 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", 391 | "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", 392 | "dev": true 393 | }, 394 | "estraverse": { 395 | "version": "1.9.3", 396 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", 397 | "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", 398 | "dev": true 399 | }, 400 | "esutils": { 401 | "version": "2.0.2", 402 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 403 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 404 | "dev": true 405 | }, 406 | "exit": { 407 | "version": "0.1.2", 408 | "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", 409 | "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", 410 | "dev": true 411 | }, 412 | "eyes": { 413 | "version": "0.1.8", 414 | "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", 415 | "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", 416 | "dev": true 417 | }, 418 | "fast-levenshtein": { 419 | "version": "2.0.6", 420 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 421 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 422 | "dev": true 423 | }, 424 | "fs.realpath": { 425 | "version": "1.0.0", 426 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 427 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 428 | "dev": true 429 | }, 430 | "glob": { 431 | "version": "5.0.15", 432 | "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", 433 | "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", 434 | "dev": true, 435 | "requires": { 436 | "inflight": "^1.0.4", 437 | "inherits": "2", 438 | "minimatch": "2 || 3", 439 | "once": "^1.3.0", 440 | "path-is-absolute": "^1.0.0" 441 | } 442 | }, 443 | "graceful-readlink": { 444 | "version": "1.0.1", 445 | "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", 446 | "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", 447 | "dev": true 448 | }, 449 | "growl": { 450 | "version": "1.9.2", 451 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", 452 | "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", 453 | "dev": true 454 | }, 455 | "handlebars": { 456 | "version": "4.5.3", 457 | "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", 458 | "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", 459 | "dev": true, 460 | "requires": { 461 | "neo-async": "^2.6.0", 462 | "optimist": "^0.6.1", 463 | "source-map": "^0.6.1", 464 | "uglify-js": "^3.1.4" 465 | }, 466 | "dependencies": { 467 | "source-map": { 468 | "version": "0.6.1", 469 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 470 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 471 | "dev": true 472 | } 473 | } 474 | }, 475 | "has-ansi": { 476 | "version": "2.0.0", 477 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 478 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 479 | "dev": true, 480 | "requires": { 481 | "ansi-regex": "^2.0.0" 482 | } 483 | }, 484 | "has-color": { 485 | "version": "0.1.7", 486 | "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", 487 | "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", 488 | "dev": true 489 | }, 490 | "has-flag": { 491 | "version": "1.0.0", 492 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", 493 | "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", 494 | "dev": true 495 | }, 496 | "he": { 497 | "version": "1.1.1", 498 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", 499 | "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", 500 | "dev": true 501 | }, 502 | "htmlparser2": { 503 | "version": "3.8.3", 504 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", 505 | "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", 506 | "dev": true, 507 | "requires": { 508 | "domelementtype": "1", 509 | "domhandler": "2.3", 510 | "domutils": "1.5", 511 | "entities": "1.0", 512 | "readable-stream": "1.1" 513 | } 514 | }, 515 | "i": { 516 | "version": "0.3.7", 517 | "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", 518 | "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==", 519 | "dev": true 520 | }, 521 | "inflight": { 522 | "version": "1.0.6", 523 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 524 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 525 | "dev": true, 526 | "requires": { 527 | "once": "^1.3.0", 528 | "wrappy": "1" 529 | } 530 | }, 531 | "inherit": { 532 | "version": "2.2.6", 533 | "resolved": "https://registry.npmjs.org/inherit/-/inherit-2.2.6.tgz", 534 | "integrity": "sha1-8WFLBshUToEo5CKchjR9tzrZeI0=", 535 | "dev": true 536 | }, 537 | "inherits": { 538 | "version": "2.0.3", 539 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 540 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 541 | "dev": true 542 | }, 543 | "is-utf8": { 544 | "version": "0.2.1", 545 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 546 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 547 | "dev": true 548 | }, 549 | "isarray": { 550 | "version": "0.0.1", 551 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 552 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 553 | "dev": true 554 | }, 555 | "isexe": { 556 | "version": "2.0.0", 557 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 558 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 559 | "dev": true 560 | }, 561 | "isobject": { 562 | "version": "2.1.0", 563 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 564 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 565 | "dev": true, 566 | "requires": { 567 | "isarray": "1.0.0" 568 | }, 569 | "dependencies": { 570 | "isarray": { 571 | "version": "1.0.0", 572 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 573 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 574 | "dev": true 575 | } 576 | } 577 | }, 578 | "isstream": { 579 | "version": "0.1.2", 580 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 581 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", 582 | "dev": true 583 | }, 584 | "istanbul": { 585 | "version": "0.4.5", 586 | "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", 587 | "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", 588 | "dev": true, 589 | "requires": { 590 | "abbrev": "1.0.x", 591 | "async": "1.x", 592 | "escodegen": "1.8.x", 593 | "esprima": "2.7.x", 594 | "glob": "^5.0.15", 595 | "handlebars": "^4.0.1", 596 | "js-yaml": "3.x", 597 | "mkdirp": "0.5.x", 598 | "nopt": "3.x", 599 | "once": "1.x", 600 | "resolve": "1.1.x", 601 | "supports-color": "^3.1.0", 602 | "which": "^1.1.1", 603 | "wordwrap": "^1.0.0" 604 | } 605 | }, 606 | "js-yaml": { 607 | "version": "3.10.0", 608 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", 609 | "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", 610 | "dev": true, 611 | "requires": { 612 | "argparse": "^1.0.7", 613 | "esprima": "^4.0.0" 614 | }, 615 | "dependencies": { 616 | "esprima": { 617 | "version": "4.0.0", 618 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", 619 | "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", 620 | "dev": true 621 | } 622 | } 623 | }, 624 | "jscs": { 625 | "version": "3.0.7", 626 | "resolved": "https://registry.npmjs.org/jscs/-/jscs-3.0.7.tgz", 627 | "integrity": "sha1-cUG03/W4bjLQ6Z12S4NnZ8MNIBo=", 628 | "dev": true, 629 | "requires": { 630 | "chalk": "~1.1.0", 631 | "cli-table": "~0.3.1", 632 | "commander": "~2.9.0", 633 | "cst": "^0.4.3", 634 | "estraverse": "^4.1.0", 635 | "exit": "~0.1.2", 636 | "glob": "^5.0.1", 637 | "htmlparser2": "3.8.3", 638 | "js-yaml": "~3.4.0", 639 | "jscs-jsdoc": "^2.0.0", 640 | "jscs-preset-wikimedia": "~1.0.0", 641 | "jsonlint": "~1.6.2", 642 | "lodash": "~3.10.0", 643 | "minimatch": "~3.0.0", 644 | "natural-compare": "~1.2.2", 645 | "pathval": "~0.1.1", 646 | "prompt": "~0.2.14", 647 | "reserved-words": "^0.1.1", 648 | "resolve": "^1.1.6", 649 | "strip-bom": "^2.0.0", 650 | "strip-json-comments": "~1.0.2", 651 | "to-double-quotes": "^2.0.0", 652 | "to-single-quotes": "^2.0.0", 653 | "vow": "~0.4.8", 654 | "vow-fs": "~0.3.4", 655 | "xmlbuilder": "^3.1.0" 656 | }, 657 | "dependencies": { 658 | "estraverse": { 659 | "version": "4.2.0", 660 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", 661 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", 662 | "dev": true 663 | }, 664 | "js-yaml": { 665 | "version": "3.4.6", 666 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.4.6.tgz", 667 | "integrity": "sha1-a+GyP2JJ9T0pM3D9TRqqY84bTrA=", 668 | "dev": true, 669 | "requires": { 670 | "argparse": "^1.0.2", 671 | "esprima": "^2.6.0", 672 | "inherit": "^2.2.2" 673 | } 674 | } 675 | } 676 | }, 677 | "jscs-jsdoc": { 678 | "version": "2.0.0", 679 | "resolved": "https://registry.npmjs.org/jscs-jsdoc/-/jscs-jsdoc-2.0.0.tgz", 680 | "integrity": "sha1-9T684CmqMSW9iCkLpQ1k1FEKSHE=", 681 | "dev": true, 682 | "requires": { 683 | "comment-parser": "^0.3.1", 684 | "jsdoctypeparser": "~1.2.0" 685 | } 686 | }, 687 | "jscs-preset-wikimedia": { 688 | "version": "1.0.0", 689 | "resolved": "https://registry.npmjs.org/jscs-preset-wikimedia/-/jscs-preset-wikimedia-1.0.0.tgz", 690 | "integrity": "sha1-//VjNCA4/C6IJre7cwnDrjQG/H4=", 691 | "dev": true 692 | }, 693 | "jsdoctypeparser": { 694 | "version": "1.2.0", 695 | "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-1.2.0.tgz", 696 | "integrity": "sha1-597cFToRhJ/8UUEUSuhqfvDCU5I=", 697 | "dev": true, 698 | "requires": { 699 | "lodash": "^3.7.0" 700 | } 701 | }, 702 | "jshint": { 703 | "version": "2.9.5", 704 | "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.5.tgz", 705 | "integrity": "sha1-HnJSkVzmgbQIJ+4UJIxG006apiw=", 706 | "dev": true, 707 | "requires": { 708 | "cli": "~1.0.0", 709 | "console-browserify": "1.1.x", 710 | "exit": "0.1.x", 711 | "htmlparser2": "3.8.x", 712 | "lodash": "3.7.x", 713 | "minimatch": "~3.0.2", 714 | "shelljs": "0.3.x", 715 | "strip-json-comments": "1.0.x" 716 | }, 717 | "dependencies": { 718 | "lodash": { 719 | "version": "3.7.0", 720 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz", 721 | "integrity": "sha1-Nni9irmVBXwHreg27S7wh9qBHUU=", 722 | "dev": true 723 | } 724 | } 725 | }, 726 | "json3": { 727 | "version": "3.3.2", 728 | "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", 729 | "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", 730 | "dev": true 731 | }, 732 | "jsonlint": { 733 | "version": "1.6.3", 734 | "resolved": "https://registry.npmjs.org/jsonlint/-/jsonlint-1.6.3.tgz", 735 | "integrity": "sha512-jMVTMzP+7gU/IyC6hvKyWpUU8tmTkK5b3BPNuMI9U8Sit+YAWLlZwB6Y6YrdCxfg2kNz05p3XY3Bmm4m26Nv3A==", 736 | "dev": true, 737 | "requires": { 738 | "JSV": "^4.0.x", 739 | "nomnom": "^1.5.x" 740 | } 741 | }, 742 | "levn": { 743 | "version": "0.3.0", 744 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 745 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 746 | "dev": true, 747 | "requires": { 748 | "prelude-ls": "~1.1.2", 749 | "type-check": "~0.3.2" 750 | } 751 | }, 752 | "lodash": { 753 | "version": "3.10.1", 754 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", 755 | "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", 756 | "dev": true 757 | }, 758 | "lodash._baseassign": { 759 | "version": "3.2.0", 760 | "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", 761 | "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", 762 | "dev": true, 763 | "requires": { 764 | "lodash._basecopy": "^3.0.0", 765 | "lodash.keys": "^3.0.0" 766 | } 767 | }, 768 | "lodash._basecopy": { 769 | "version": "3.0.1", 770 | "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", 771 | "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", 772 | "dev": true 773 | }, 774 | "lodash._basecreate": { 775 | "version": "3.0.3", 776 | "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", 777 | "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", 778 | "dev": true 779 | }, 780 | "lodash._getnative": { 781 | "version": "3.9.1", 782 | "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", 783 | "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", 784 | "dev": true 785 | }, 786 | "lodash._isiterateecall": { 787 | "version": "3.0.9", 788 | "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", 789 | "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", 790 | "dev": true 791 | }, 792 | "lodash.create": { 793 | "version": "3.1.1", 794 | "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", 795 | "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", 796 | "dev": true, 797 | "requires": { 798 | "lodash._baseassign": "^3.0.0", 799 | "lodash._basecreate": "^3.0.0", 800 | "lodash._isiterateecall": "^3.0.0" 801 | } 802 | }, 803 | "lodash.isarguments": { 804 | "version": "3.1.0", 805 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", 806 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", 807 | "dev": true 808 | }, 809 | "lodash.isarray": { 810 | "version": "3.0.4", 811 | "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", 812 | "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", 813 | "dev": true 814 | }, 815 | "lodash.keys": { 816 | "version": "3.1.2", 817 | "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", 818 | "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", 819 | "dev": true, 820 | "requires": { 821 | "lodash._getnative": "^3.0.0", 822 | "lodash.isarguments": "^3.0.0", 823 | "lodash.isarray": "^3.0.0" 824 | } 825 | }, 826 | "minimatch": { 827 | "version": "3.0.4", 828 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 829 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 830 | "dev": true, 831 | "requires": { 832 | "brace-expansion": "^1.1.7" 833 | } 834 | }, 835 | "minimist": { 836 | "version": "0.0.10", 837 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", 838 | "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", 839 | "dev": true 840 | }, 841 | "mkdirp": { 842 | "version": "0.5.1", 843 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 844 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 845 | "dev": true, 846 | "requires": { 847 | "minimist": "0.0.8" 848 | }, 849 | "dependencies": { 850 | "minimist": { 851 | "version": "0.0.8", 852 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 853 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 854 | "dev": true 855 | } 856 | } 857 | }, 858 | "mocha": { 859 | "version": "3.5.3", 860 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", 861 | "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", 862 | "dev": true, 863 | "requires": { 864 | "browser-stdout": "1.3.0", 865 | "commander": "2.9.0", 866 | "debug": "2.6.8", 867 | "diff": "3.2.0", 868 | "escape-string-regexp": "1.0.5", 869 | "glob": "7.1.1", 870 | "growl": "1.9.2", 871 | "he": "1.1.1", 872 | "json3": "3.3.2", 873 | "lodash.create": "3.1.1", 874 | "mkdirp": "0.5.1", 875 | "supports-color": "3.1.2" 876 | }, 877 | "dependencies": { 878 | "glob": { 879 | "version": "7.1.1", 880 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", 881 | "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", 882 | "dev": true, 883 | "requires": { 884 | "fs.realpath": "^1.0.0", 885 | "inflight": "^1.0.4", 886 | "inherits": "2", 887 | "minimatch": "^3.0.2", 888 | "once": "^1.3.0", 889 | "path-is-absolute": "^1.0.0" 890 | } 891 | }, 892 | "supports-color": { 893 | "version": "3.1.2", 894 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", 895 | "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", 896 | "dev": true, 897 | "requires": { 898 | "has-flag": "^1.0.0" 899 | } 900 | } 901 | } 902 | }, 903 | "ms": { 904 | "version": "2.0.0", 905 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 906 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 907 | "dev": true 908 | }, 909 | "mute-stream": { 910 | "version": "0.0.7", 911 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 912 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", 913 | "dev": true 914 | }, 915 | "natural-compare": { 916 | "version": "1.2.2", 917 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.2.2.tgz", 918 | "integrity": "sha1-H5bWDjFBysG20FZTzg2urHY69qo=", 919 | "dev": true 920 | }, 921 | "ncp": { 922 | "version": "0.4.2", 923 | "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", 924 | "integrity": "sha1-q8xsvT7C7Spyn/bnwfqPAXhKhXQ=", 925 | "dev": true 926 | }, 927 | "neo-async": { 928 | "version": "2.6.1", 929 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", 930 | "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", 931 | "dev": true 932 | }, 933 | "nomnom": { 934 | "version": "1.8.1", 935 | "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", 936 | "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", 937 | "dev": true, 938 | "requires": { 939 | "chalk": "~0.4.0", 940 | "underscore": "~1.6.0" 941 | }, 942 | "dependencies": { 943 | "ansi-styles": { 944 | "version": "1.0.0", 945 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", 946 | "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", 947 | "dev": true 948 | }, 949 | "chalk": { 950 | "version": "0.4.0", 951 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", 952 | "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", 953 | "dev": true, 954 | "requires": { 955 | "ansi-styles": "~1.0.0", 956 | "has-color": "~0.1.0", 957 | "strip-ansi": "~0.1.0" 958 | } 959 | }, 960 | "strip-ansi": { 961 | "version": "0.1.1", 962 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", 963 | "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", 964 | "dev": true 965 | } 966 | } 967 | }, 968 | "nopt": { 969 | "version": "3.0.6", 970 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", 971 | "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", 972 | "dev": true, 973 | "requires": { 974 | "abbrev": "1" 975 | } 976 | }, 977 | "once": { 978 | "version": "1.4.0", 979 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 980 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 981 | "dev": true, 982 | "requires": { 983 | "wrappy": "1" 984 | } 985 | }, 986 | "optimist": { 987 | "version": "0.6.1", 988 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", 989 | "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", 990 | "dev": true, 991 | "requires": { 992 | "minimist": "~0.0.1", 993 | "wordwrap": "~0.0.2" 994 | }, 995 | "dependencies": { 996 | "wordwrap": { 997 | "version": "0.0.3", 998 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", 999 | "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", 1000 | "dev": true 1001 | } 1002 | } 1003 | }, 1004 | "optionator": { 1005 | "version": "0.8.2", 1006 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", 1007 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", 1008 | "dev": true, 1009 | "requires": { 1010 | "deep-is": "~0.1.3", 1011 | "fast-levenshtein": "~2.0.4", 1012 | "levn": "~0.3.0", 1013 | "prelude-ls": "~1.1.2", 1014 | "type-check": "~0.3.2", 1015 | "wordwrap": "~1.0.0" 1016 | } 1017 | }, 1018 | "path-is-absolute": { 1019 | "version": "1.0.1", 1020 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1021 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1022 | "dev": true 1023 | }, 1024 | "pathval": { 1025 | "version": "0.1.1", 1026 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-0.1.1.tgz", 1027 | "integrity": "sha1-CPkRzcqczllCiA2ngXvAtyO2bYI=", 1028 | "dev": true 1029 | }, 1030 | "pkginfo": { 1031 | "version": "0.4.1", 1032 | "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", 1033 | "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=", 1034 | "dev": true 1035 | }, 1036 | "posthtml": { 1037 | "version": "0.9.2", 1038 | "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.9.2.tgz", 1039 | "integrity": "sha1-9MBtufZ7Yf0XxOJW5+PZUVv3Jv0=", 1040 | "dev": true, 1041 | "requires": { 1042 | "posthtml-parser": "^0.2.0", 1043 | "posthtml-render": "^1.0.5" 1044 | } 1045 | }, 1046 | "posthtml-parser": { 1047 | "version": "0.2.1", 1048 | "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.2.1.tgz", 1049 | "integrity": "sha1-NdUw3jhnQMK6JP8usvrznM3ycd0=", 1050 | "dev": true, 1051 | "requires": { 1052 | "htmlparser2": "^3.8.3", 1053 | "isobject": "^2.1.0" 1054 | } 1055 | }, 1056 | "posthtml-render": { 1057 | "version": "1.1.0", 1058 | "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.1.0.tgz", 1059 | "integrity": "sha512-EeUf38sN9VOS6sIe8HhgzE1qpZ+2ARXj/b7IJoUi0CQqxH4qeF6ZxAK808YhhWI4FsT3RCNiSKJ7tDSZ4rkd7w==", 1060 | "dev": true 1061 | }, 1062 | "prelude-ls": { 1063 | "version": "1.1.2", 1064 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1065 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 1066 | "dev": true 1067 | }, 1068 | "process-nextick-args": { 1069 | "version": "2.0.0", 1070 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 1071 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", 1072 | "dev": true 1073 | }, 1074 | "prompt": { 1075 | "version": "0.2.14", 1076 | "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", 1077 | "integrity": "sha1-V3VPZPVD/XsIRXB8gY7OYY8F/9w=", 1078 | "dev": true, 1079 | "requires": { 1080 | "pkginfo": "0.x.x", 1081 | "read": "1.0.x", 1082 | "revalidator": "0.1.x", 1083 | "utile": "0.2.x", 1084 | "winston": "0.8.x" 1085 | } 1086 | }, 1087 | "read": { 1088 | "version": "1.0.7", 1089 | "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", 1090 | "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", 1091 | "dev": true, 1092 | "requires": { 1093 | "mute-stream": "~0.0.4" 1094 | } 1095 | }, 1096 | "readable-stream": { 1097 | "version": "1.1.14", 1098 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 1099 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 1100 | "dev": true, 1101 | "requires": { 1102 | "core-util-is": "~1.0.0", 1103 | "inherits": "~2.0.1", 1104 | "isarray": "0.0.1", 1105 | "string_decoder": "~0.10.x" 1106 | } 1107 | }, 1108 | "regenerator-runtime": { 1109 | "version": "0.11.1", 1110 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 1111 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", 1112 | "dev": true 1113 | }, 1114 | "reserved-words": { 1115 | "version": "0.1.2", 1116 | "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz", 1117 | "integrity": "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=", 1118 | "dev": true 1119 | }, 1120 | "resolve": { 1121 | "version": "1.1.7", 1122 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", 1123 | "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", 1124 | "dev": true 1125 | }, 1126 | "revalidator": { 1127 | "version": "0.1.8", 1128 | "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", 1129 | "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=", 1130 | "dev": true 1131 | }, 1132 | "rimraf": { 1133 | "version": "2.6.2", 1134 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", 1135 | "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", 1136 | "dev": true, 1137 | "requires": { 1138 | "glob": "^7.0.5" 1139 | }, 1140 | "dependencies": { 1141 | "glob": { 1142 | "version": "7.1.2", 1143 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 1144 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 1145 | "dev": true, 1146 | "requires": { 1147 | "fs.realpath": "^1.0.0", 1148 | "inflight": "^1.0.4", 1149 | "inherits": "2", 1150 | "minimatch": "^3.0.4", 1151 | "once": "^1.3.0", 1152 | "path-is-absolute": "^1.0.0" 1153 | } 1154 | } 1155 | } 1156 | }, 1157 | "safe-buffer": { 1158 | "version": "5.1.1", 1159 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 1160 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", 1161 | "dev": true 1162 | }, 1163 | "shelljs": { 1164 | "version": "0.3.0", 1165 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", 1166 | "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", 1167 | "dev": true 1168 | }, 1169 | "source-map": { 1170 | "version": "0.2.0", 1171 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", 1172 | "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", 1173 | "dev": true, 1174 | "optional": true, 1175 | "requires": { 1176 | "amdefine": ">=0.0.4" 1177 | } 1178 | }, 1179 | "source-map-support": { 1180 | "version": "0.4.18", 1181 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 1182 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", 1183 | "dev": true, 1184 | "requires": { 1185 | "source-map": "^0.5.6" 1186 | }, 1187 | "dependencies": { 1188 | "source-map": { 1189 | "version": "0.5.7", 1190 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1191 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 1192 | "dev": true 1193 | } 1194 | } 1195 | }, 1196 | "sprintf-js": { 1197 | "version": "1.0.3", 1198 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1199 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1200 | "dev": true 1201 | }, 1202 | "stack-trace": { 1203 | "version": "0.0.10", 1204 | "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", 1205 | "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", 1206 | "dev": true 1207 | }, 1208 | "string_decoder": { 1209 | "version": "0.10.31", 1210 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 1211 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 1212 | "dev": true 1213 | }, 1214 | "strip-ansi": { 1215 | "version": "3.0.1", 1216 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1217 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1218 | "dev": true, 1219 | "requires": { 1220 | "ansi-regex": "^2.0.0" 1221 | } 1222 | }, 1223 | "strip-bom": { 1224 | "version": "2.0.0", 1225 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 1226 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 1227 | "dev": true, 1228 | "requires": { 1229 | "is-utf8": "^0.2.0" 1230 | } 1231 | }, 1232 | "strip-json-comments": { 1233 | "version": "1.0.4", 1234 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", 1235 | "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", 1236 | "dev": true 1237 | }, 1238 | "supports-color": { 1239 | "version": "3.2.3", 1240 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", 1241 | "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", 1242 | "dev": true, 1243 | "requires": { 1244 | "has-flag": "^1.0.0" 1245 | } 1246 | }, 1247 | "to-double-quotes": { 1248 | "version": "2.0.0", 1249 | "resolved": "https://registry.npmjs.org/to-double-quotes/-/to-double-quotes-2.0.0.tgz", 1250 | "integrity": "sha1-qvIx1vqUiUn4GTAburRITYWI5Kc=", 1251 | "dev": true 1252 | }, 1253 | "to-single-quotes": { 1254 | "version": "2.0.1", 1255 | "resolved": "https://registry.npmjs.org/to-single-quotes/-/to-single-quotes-2.0.1.tgz", 1256 | "integrity": "sha1-fMKRUfD18sQZRvEZ9ZMv5VQXASU=", 1257 | "dev": true 1258 | }, 1259 | "type-check": { 1260 | "version": "0.3.2", 1261 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 1262 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 1263 | "dev": true, 1264 | "requires": { 1265 | "prelude-ls": "~1.1.2" 1266 | } 1267 | }, 1268 | "type-detect": { 1269 | "version": "1.0.0", 1270 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", 1271 | "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", 1272 | "dev": true 1273 | }, 1274 | "uglify-js": { 1275 | "version": "3.7.2", 1276 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.2.tgz", 1277 | "integrity": "sha512-uhRwZcANNWVLrxLfNFEdltoPNhECUR3lc+UdJoG9CBpMcSnKyWA94tc3eAujB1GcMY5Uwq8ZMp4qWpxWYDQmaA==", 1278 | "dev": true, 1279 | "optional": true, 1280 | "requires": { 1281 | "commander": "~2.20.3", 1282 | "source-map": "~0.6.1" 1283 | }, 1284 | "dependencies": { 1285 | "commander": { 1286 | "version": "2.20.3", 1287 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 1288 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 1289 | "dev": true, 1290 | "optional": true 1291 | }, 1292 | "source-map": { 1293 | "version": "0.6.1", 1294 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1295 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1296 | "dev": true, 1297 | "optional": true 1298 | } 1299 | } 1300 | }, 1301 | "underscore": { 1302 | "version": "1.6.0", 1303 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", 1304 | "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", 1305 | "dev": true 1306 | }, 1307 | "util-deprecate": { 1308 | "version": "1.0.2", 1309 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1310 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 1311 | "dev": true 1312 | }, 1313 | "utile": { 1314 | "version": "0.2.1", 1315 | "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", 1316 | "integrity": "sha1-kwyI6ZCY1iIINMNWy9mncFItkNc=", 1317 | "dev": true, 1318 | "requires": { 1319 | "async": "~0.2.9", 1320 | "deep-equal": "*", 1321 | "i": "0.3.x", 1322 | "mkdirp": "0.x.x", 1323 | "ncp": "0.4.x", 1324 | "rimraf": "2.x.x" 1325 | }, 1326 | "dependencies": { 1327 | "async": { 1328 | "version": "0.2.10", 1329 | "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", 1330 | "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", 1331 | "dev": true 1332 | } 1333 | } 1334 | }, 1335 | "uuid": { 1336 | "version": "2.0.3", 1337 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", 1338 | "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", 1339 | "dev": true 1340 | }, 1341 | "vow": { 1342 | "version": "0.4.17", 1343 | "resolved": "https://registry.npmjs.org/vow/-/vow-0.4.17.tgz", 1344 | "integrity": "sha512-A3/9bWFqf6gT0jLR4/+bT+IPTe1mQf+tdsW6+WI5geP9smAp8Kbbu4R6QQCDKZN/8TSCqTlXVQm12QliB4rHfg==", 1345 | "dev": true 1346 | }, 1347 | "vow-fs": { 1348 | "version": "0.3.6", 1349 | "resolved": "https://registry.npmjs.org/vow-fs/-/vow-fs-0.3.6.tgz", 1350 | "integrity": "sha1-LUxZviLivyYY3fWXq0uqkjvnIA0=", 1351 | "dev": true, 1352 | "requires": { 1353 | "glob": "^7.0.5", 1354 | "uuid": "^2.0.2", 1355 | "vow": "^0.4.7", 1356 | "vow-queue": "^0.4.1" 1357 | }, 1358 | "dependencies": { 1359 | "glob": { 1360 | "version": "7.1.2", 1361 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 1362 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 1363 | "dev": true, 1364 | "requires": { 1365 | "fs.realpath": "^1.0.0", 1366 | "inflight": "^1.0.4", 1367 | "inherits": "2", 1368 | "minimatch": "^3.0.4", 1369 | "once": "^1.3.0", 1370 | "path-is-absolute": "^1.0.0" 1371 | } 1372 | } 1373 | } 1374 | }, 1375 | "vow-queue": { 1376 | "version": "0.4.3", 1377 | "resolved": "https://registry.npmjs.org/vow-queue/-/vow-queue-0.4.3.tgz", 1378 | "integrity": "sha512-/poAKDTFL3zYbeQg7cl4BGcfP4sGgXKrHnRFSKj97dteUFu8oyXMwIcdwu8NSx/RmPGIuYx1Bik/y5vU4H/VKw==", 1379 | "dev": true, 1380 | "requires": { 1381 | "vow": "^0.4.17" 1382 | } 1383 | }, 1384 | "which": { 1385 | "version": "1.3.0", 1386 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", 1387 | "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", 1388 | "dev": true, 1389 | "requires": { 1390 | "isexe": "^2.0.0" 1391 | } 1392 | }, 1393 | "winston": { 1394 | "version": "0.8.3", 1395 | "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", 1396 | "integrity": "sha1-ZLar9M0Brcrv1QCTk7HY6L7BnbA=", 1397 | "dev": true, 1398 | "requires": { 1399 | "async": "0.2.x", 1400 | "colors": "0.6.x", 1401 | "cycle": "1.0.x", 1402 | "eyes": "0.1.x", 1403 | "isstream": "0.1.x", 1404 | "pkginfo": "0.3.x", 1405 | "stack-trace": "0.0.x" 1406 | }, 1407 | "dependencies": { 1408 | "async": { 1409 | "version": "0.2.10", 1410 | "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", 1411 | "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", 1412 | "dev": true 1413 | }, 1414 | "colors": { 1415 | "version": "0.6.2", 1416 | "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", 1417 | "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", 1418 | "dev": true 1419 | }, 1420 | "pkginfo": { 1421 | "version": "0.3.1", 1422 | "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", 1423 | "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=", 1424 | "dev": true 1425 | } 1426 | } 1427 | }, 1428 | "wordwrap": { 1429 | "version": "1.0.0", 1430 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 1431 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 1432 | "dev": true 1433 | }, 1434 | "wrappy": { 1435 | "version": "1.0.2", 1436 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1437 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1438 | "dev": true 1439 | }, 1440 | "xmlbuilder": { 1441 | "version": "3.1.0", 1442 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-3.1.0.tgz", 1443 | "integrity": "sha1-LIaIjy1OrehQ+jjKf3Ij9yCVFuE=", 1444 | "dev": true, 1445 | "requires": { 1446 | "lodash": "^3.5.0" 1447 | } 1448 | } 1449 | } 1450 | } 1451 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "posthtml-custom-elements", 3 | "version": "1.1.2", 4 | "description": "PostHTML plugin. Use HTML Custom Element now.", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "npm run lint && mocha -R dot && npm run cover", 8 | "clean": "rm -rf coverage jsdoc-api", 9 | "cover": "istanbul cover --report text --report html --report lcov node_modules/mocha/bin/_mocha -- -R tap", 10 | "lint": "jshint . && jscs ." 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git+https://github.com/posthtml/posthtml-custom-elements.git" 15 | }, 16 | "keywords": [ 17 | "posthtml", 18 | "plugin", 19 | "html", 20 | "xml", 21 | "custom-elements", 22 | "processor", 23 | "htmlnext", 24 | "transforming", 25 | "transform", 26 | "manipulation", 27 | "preprocessor", 28 | "parser" 29 | ], 30 | "author": "Ivan Voischev ", 31 | "license": "MIT", 32 | "bugs": { 33 | "url": "https://github.com/posthtml/posthtml-custom-elements/issues" 34 | }, 35 | "homepage": "https://github.com/posthtml/posthtml-custom-elements#readme", 36 | "devDependencies": { 37 | "chai": "^3.2.0", 38 | "istanbul": "^0.4.2", 39 | "jscs": "^3.0.7", 40 | "jshint": "^2.8.0", 41 | "mocha": "^3.2.0", 42 | "posthtml": "^0.9.2" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /test/mocha.opts: -------------------------------------------------------------------------------- 1 | --inline-diffs 2 | --reporter spec 3 | -------------------------------------------------------------------------------- /test/test.js: -------------------------------------------------------------------------------- 1 | /* jshint mocha: true, maxlen: false */ 2 | var posthtml = require('posthtml'); 3 | var custom = require('../index.js'); 4 | var expect = require('chai').expect; 5 | 6 | function test(html, referense, options, done) { 7 | expect(posthtml([custom(options)]) 8 | .process(html) 9 | .then(function(result) { 10 | expect(referense).to.eql(result.html); 11 | done(); 12 | }).catch(function(error) { 13 | done(error); 14 | })); 15 | } 16 | 17 | describe('Custom Elements test', function() { 18 | describe('DOM', function() { 19 | it('Simple test', function(done) { 20 | var html = 'Test'; 21 | var referense = '
Test
'; 22 | test(html, referense, {}, done); 23 | }); 24 | 25 | it('Simple test custom camel case tag', function(done) { 26 | var html = 'Test'; 27 | var referense = '
Test
'; 28 | test(html, referense, {}, done); 29 | }); 30 | 31 | it('Simple test custom camel case tag include attribute', function(done) { 32 | var html = 'Test'; 33 | var referense = '
Test
'; 34 | test(html, referense, {}, done); 35 | }); 36 | 37 | it('Class', function(done) { 38 | var html = 'Test'; 39 | var referense = '
Test
'; 40 | test(html, referense, {}, done); 41 | }); 42 | 43 | it('Class inside', function(done) { 44 | var html = 'Test'; 45 | var referense = '
Test
'; 46 | test(html, referense, {}, done); 47 | }); 48 | 49 | it('Class inside', function(done) { 50 | var html = 'Test'; 51 | var referense = '
Test
'; 52 | test(html, referense, {}, done); 53 | }); 54 | 55 | it('Attrs tags', function(done) { 56 | var html = 'Test'; 57 | var referense = '
  • Test
  • '; 58 | test(html, referense, {}, done); 59 | }); 60 | 61 | it('Tags', function(done) { 62 | var html = '
    Test
    '; 63 | var referense = '
    Test
    '; 64 | test(html, referense, {}, done); 65 | }); 66 | 67 | it('Camel Tags', function(done) { 68 | var html = '
    Test
    '; 69 | var referense = '
    Test
    '; 70 | test(html, referense, {}, done); 71 | }); 72 | }); 73 | 74 | describe('Options', function() { 75 | it('undefined', function(done) { 76 | var html = '
    Test
    '; 77 | var referense = '
    Test
    '; 78 | test(html, referense, undefined, done); 79 | }); 80 | 81 | it('defaultTag', function(done) { 82 | var html = 'Test'; 83 | var referense = 'Test'; 84 | test(html, referense, { defaultTag: 'span'}, done); 85 | }); 86 | 87 | it('Class inside', function(done) { 88 | var html = 'Test'; 89 | var referense = '
    Test
    '; 90 | test(html, referense, {}, done); 91 | }); 92 | it('skipTags', function(done) { 93 | var html = '
    Test
    '; 94 | var referense = '
    Test
    '; 95 | test(html, referense, { skipTags: ['header']}, done); 96 | }); 97 | }); 98 | }); 99 | 100 | --------------------------------------------------------------------------------