├── .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 |
74 | ```
75 |
76 | ```html
77 |
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 = '';
63 | var referense = '';
64 | test(html, referense, {}, done);
65 | });
66 |
67 | it('Camel Tags', function(done) {
68 | var html = '';
69 | var referense = '';
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 = '';
94 | var referense = '';
95 | test(html, referense, { skipTags: ['header']}, done);
96 | });
97 | });
98 | });
99 |
100 |
--------------------------------------------------------------------------------