├── .editorconfig
├── .gitattributes
├── .gitignore
├── .jshintrc
├── .npmignore
├── .travis.yml
├── LICENSE.txt
├── README.md
├── csscomb.jpg
├── index.js
├── package-lock.json
├── package.json
└── test.js
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs
2 | # http://editorconfig.org
3 |
4 | root = true
5 |
6 | [*]
7 |
8 | # change these settings to your own preference
9 | indent_style = space
10 | indent_size = 2
11 |
12 | # we recommend you to keep these unchanged
13 | end_of_line = lf
14 | charset = utf-8
15 | trim_trailing_whitespace = true
16 | insert_final_newline = true
17 |
18 | [*.md]
19 | trim_trailing_whitespace = false
20 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # These attributes affect how the contents stored in the repository are copied
2 | # to the working tree files when commands such as git checkout and git merge run.
3 | # http://git-scm.com/docs/gitattributes
4 |
5 | * text=auto
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Git uses this file to determine which files and directories to ignore
2 | # https://help.github.com/articles/ignoring-files
3 |
4 | # Node.js
5 | node_modules
6 | npm-debug.log
7 | tmp
8 |
9 | # NPM
10 | *.tgz
11 |
--------------------------------------------------------------------------------
/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "node": true,
3 | "esnext": true,
4 | "bitwise": true,
5 | "camelcase": true,
6 | "curly": true,
7 | "immed": true,
8 | "newcap": true,
9 | "noarg": true,
10 | "undef": true,
11 | "unused": "vars",
12 | "strict": true,
13 | "indent": 2
14 | }
15 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | *.tgz
2 | .idea
3 | .editorconfig
4 | .gitattributes
5 | .jshintrc
6 | .npmignore
7 | .travis.yml
8 | test.js
9 | csscomb.jpg
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - '0.10'
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) Konstantin Tarkus (@koistya)
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
13 | all 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
21 | THE SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # [gulp](http://gulpjs.com)-csscomb [](http://travis-ci.org/koistya/gulp-csscomb) [](https://david-dm.org/koistya/gulp-csscomb) [](https://gratipay.com/koistya)
2 |
3 | [
](http://csscomb.com)
4 |
5 | > Format CSS coding style with [CSScomb](http://csscomb.com).
6 |
7 | *If you have any difficulties with the output of this plugin, please use the
8 | [CSScomb tracker](https://github.com/csscomb/csscomb.js/issues).*
9 |
10 | ---
11 |
12 |
🔥 Want to strengthen your core JavaScript skills and master ES6?
I would personally recommend this awesome ES6 course by Wes Bos.
13 |
14 | ---
15 |
16 |
17 | ## Installation
18 |
19 | ```sh
20 | npm install gulp-csscomb --save-dev
21 | ```
22 |
23 | ## Example 1
24 |
25 | ```js
26 | var gulp = require('gulp');
27 | var csscomb = require('gulp-csscomb');
28 |
29 | gulp.task('styles', function() {
30 | return gulp.src('src/styles/main.css')
31 | .pipe(csscomb())
32 | .pipe(gulp.dest('./build/css'));
33 | });
34 | ```
35 |
36 | ## Example 2
37 |
38 | ```js
39 | var gulp = require('gulp');
40 | var $ = require('gulp-load-plugins')();
41 |
42 | gulp.task('styles', function() {
43 | return gulp.src('src/styles/bootstrap.less')
44 | .pipe($.less({strictMath: true}))
45 | .pipe($.autoprefixer([
46 | 'Android 2.3',
47 | 'Android >= 4',
48 | 'Chrome >= 20',
49 | 'Firefox >= 24', // Firefox 24 is the latest ESR
50 | 'Explorer >= 8',
51 | 'iOS >= 6',
52 | 'Opera >= 12',
53 | 'Safari >= 6']))
54 | .pipe($.csscomb())
55 | .pipe(gulp.dest('./build/css'));
56 | });
57 | ```
58 |
59 | If there is `.csscomb.json` file present in the same folder as the source file(s),
60 | or in the project root folder, `gulp-csscomb` will read config settings from it
61 | instead of default config.
62 |
63 | You can also specify a pre-defined configuration. Ex.: `csscomb('zen')`
64 |
65 | ## License
66 |
67 | The MIT License (MIT) © Konstantin Tarkus ([@koistya](https://twitter.com/koistya))
68 |
--------------------------------------------------------------------------------
/csscomb.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/koistya/gulp-csscomb/eab7b9c191a4a8bf991df3e4d248ce4738d15606/csscomb.jpg
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * gulp-csscomb | https://github.com/koistya/gulp-csscomb
3 | * Copyright (c) Konstantin Tarkus (@koistya). See LICENSE.txt
4 | */
5 |
6 | 'use strict';
7 |
8 | var Comb = require('csscomb');
9 | var fs = require('fs');
10 | var path = require('path');
11 | var through = require('through2');
12 | var PluginError = require('plugin-error');
13 | var fancyLog = require('fancy-log');
14 | var colors = require('ansi-colors');
15 |
16 | // Constants
17 | var PLUGIN_NAME = 'gulp-csscomb';
18 | var SUPPORTED_EXTENSIONS = ['.css', '.sass', '.scss', '.less'];
19 |
20 | // Plugin level function (dealing with files)
21 | function Plugin(configPath, options) {
22 |
23 | if (arguments.length == 1 && typeof configPath === 'object') {
24 | options = configPath;
25 | configPath = options.configPath;
26 | } else if (arguments.length == 2 && typeof options === 'boolean') {
27 | options = { verbose: options }; // for backward compatibility
28 | }
29 |
30 | options = options || {};
31 | configPath = configPath || null;
32 |
33 | var verbose = options.verbose || false;
34 | //var lint = options.lint || false; // TODO: Report about found issues in style sheets
35 |
36 | // Create a stream through which each file will pass
37 | var stream = through.obj(function(file, enc, cb) {
38 |
39 | if (file.isNull()) {
40 | // Do nothing
41 | } else if (file.isStream()) {
42 | this.emit('error', new PluginError(PLUGIN_NAME, 'Streams are not supported!'));
43 | return cb();
44 | } else if (file.isBuffer() && SUPPORTED_EXTENSIONS.indexOf(path.extname(file.path)) !== -1) {
45 |
46 | if (verbose) {
47 | fancyLog(PLUGIN_NAME, 'Processing ' + colors.magenta(file.path));
48 | }
49 |
50 | if (configPath && !fs.existsSync(configPath)) {
51 | this.emit('error', new PluginError(PLUGIN_NAME, 'Configuration file not found: ' + colors.magenta(configPath)));
52 | return cb();
53 | }
54 |
55 | configPath = Comb.getCustomConfigPath(configPath || path.join(path.dirname(file.path), '.csscomb.json'));
56 | var config = Comb.getCustomConfig(configPath);
57 |
58 | if (verbose) {
59 | fancyLog(PLUGIN_NAME, 'Using configuration file ' + colors.magenta(configPath));
60 | }
61 |
62 | var comb = new Comb(config || 'csscomb');
63 | var syntax = options.syntax || file.path.split('.').pop();
64 |
65 | try {
66 | var output = comb.processString(
67 | file.contents.toString('utf8'), {
68 | syntax: syntax,
69 | filename: file.path
70 | });
71 | file.contents = new Buffer(output);
72 | } catch (err) {
73 | this.emit('error', new PluginError(PLUGIN_NAME, file.path + '\n' + err));
74 | }
75 | }
76 |
77 | // make sure the file goes through the next gulp plugin
78 | this.push(file);
79 | // tell the stream engine that we are done with this file
80 | return cb();
81 | });
82 |
83 | // Return the file stream
84 | return stream;
85 | }
86 |
87 | // Export the plugin main function
88 | module.exports = Plugin;
89 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gulp-csscomb",
3 | "version": "3.1.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "ansi-colors": {
8 | "version": "1.1.0",
9 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz",
10 | "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
11 | "requires": {
12 | "ansi-wrap": "^0.1.0"
13 | }
14 | },
15 | "ansi-cyan": {
16 | "version": "0.1.1",
17 | "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz",
18 | "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
19 | "requires": {
20 | "ansi-wrap": "0.1.0"
21 | }
22 | },
23 | "ansi-gray": {
24 | "version": "0.1.1",
25 | "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
26 | "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
27 | "requires": {
28 | "ansi-wrap": "0.1.0"
29 | }
30 | },
31 | "ansi-red": {
32 | "version": "0.1.1",
33 | "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz",
34 | "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
35 | "requires": {
36 | "ansi-wrap": "0.1.0"
37 | }
38 | },
39 | "ansi-wrap": {
40 | "version": "0.1.0",
41 | "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
42 | "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768="
43 | },
44 | "arr-diff": {
45 | "version": "1.1.0",
46 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz",
47 | "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
48 | "requires": {
49 | "arr-flatten": "^1.0.1",
50 | "array-slice": "^0.2.3"
51 | }
52 | },
53 | "arr-flatten": {
54 | "version": "1.1.0",
55 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
56 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
57 | },
58 | "arr-union": {
59 | "version": "2.1.0",
60 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz",
61 | "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0="
62 | },
63 | "array-slice": {
64 | "version": "0.2.3",
65 | "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
66 | "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU="
67 | },
68 | "balanced-match": {
69 | "version": "1.0.0",
70 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
71 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
72 | "dev": true
73 | },
74 | "brace-expansion": {
75 | "version": "1.1.11",
76 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
77 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
78 | "dev": true,
79 | "requires": {
80 | "balanced-match": "^1.0.0",
81 | "concat-map": "0.0.1"
82 | }
83 | },
84 | "browser-stdout": {
85 | "version": "1.3.0",
86 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz",
87 | "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=",
88 | "dev": true
89 | },
90 | "cli": {
91 | "version": "1.0.1",
92 | "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz",
93 | "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=",
94 | "dev": true,
95 | "requires": {
96 | "exit": "0.1.2",
97 | "glob": "^7.1.1"
98 | },
99 | "dependencies": {
100 | "glob": {
101 | "version": "7.1.6",
102 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
103 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
104 | "dev": true,
105 | "requires": {
106 | "fs.realpath": "^1.0.0",
107 | "inflight": "^1.0.4",
108 | "inherits": "2",
109 | "minimatch": "^3.0.4",
110 | "once": "^1.3.0",
111 | "path-is-absolute": "^1.0.0"
112 | }
113 | },
114 | "minimatch": {
115 | "version": "3.0.4",
116 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
117 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
118 | "dev": true,
119 | "requires": {
120 | "brace-expansion": "^1.1.7"
121 | }
122 | }
123 | }
124 | },
125 | "clone": {
126 | "version": "2.1.2",
127 | "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
128 | "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
129 | "dev": true
130 | },
131 | "clone-buffer": {
132 | "version": "1.0.0",
133 | "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
134 | "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=",
135 | "dev": true
136 | },
137 | "clone-stats": {
138 | "version": "1.0.0",
139 | "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
140 | "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=",
141 | "dev": true
142 | },
143 | "cloneable-readable": {
144 | "version": "1.1.3",
145 | "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz",
146 | "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==",
147 | "dev": true,
148 | "requires": {
149 | "inherits": "^2.0.1",
150 | "process-nextick-args": "^2.0.0",
151 | "readable-stream": "^2.3.5"
152 | }
153 | },
154 | "color-support": {
155 | "version": "1.1.3",
156 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
157 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="
158 | },
159 | "commander": {
160 | "version": "2.0.0",
161 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz",
162 | "integrity": "sha1-0bhvkB+LZL2UG96tr5JFMDk76Sg="
163 | },
164 | "concat-map": {
165 | "version": "0.0.1",
166 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
167 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
168 | "dev": true
169 | },
170 | "console-browserify": {
171 | "version": "1.1.0",
172 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
173 | "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
174 | "dev": true,
175 | "requires": {
176 | "date-now": "^0.1.4"
177 | }
178 | },
179 | "core-util-is": {
180 | "version": "1.0.2",
181 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
182 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
183 | },
184 | "csscomb": {
185 | "version": "3.1.8",
186 | "resolved": "https://registry.npmjs.org/csscomb/-/csscomb-3.1.8.tgz",
187 | "integrity": "sha1-qKc4iE9Am6817JRhr8UuHHW9I6I=",
188 | "requires": {
189 | "commander": "2.0.0",
190 | "csscomb-core": "3.0.0-3.1",
191 | "gonzales-pe": "3.0.0-28",
192 | "vow": "0.4.4"
193 | }
194 | },
195 | "csscomb-core": {
196 | "version": "3.0.0-3.1",
197 | "resolved": "https://registry.npmjs.org/csscomb-core/-/csscomb-core-3.0.0-3.1.tgz",
198 | "integrity": "sha1-tBHI18/g3z8v4d+E0b1kpvAEbGg=",
199 | "requires": {
200 | "gonzales-pe": "3.0.0-28",
201 | "minimatch": "0.2.12",
202 | "vow": "0.4.4",
203 | "vow-fs": "0.3.2"
204 | }
205 | },
206 | "date-now": {
207 | "version": "0.1.4",
208 | "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
209 | "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
210 | "dev": true
211 | },
212 | "debug": {
213 | "version": "2.6.8",
214 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
215 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
216 | "dev": true,
217 | "requires": {
218 | "ms": "2.0.0"
219 | }
220 | },
221 | "diff": {
222 | "version": "3.2.0",
223 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz",
224 | "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=",
225 | "dev": true
226 | },
227 | "dom-serializer": {
228 | "version": "0.2.2",
229 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
230 | "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
231 | "dev": true,
232 | "requires": {
233 | "domelementtype": "^2.0.1",
234 | "entities": "^2.0.0"
235 | },
236 | "dependencies": {
237 | "domelementtype": {
238 | "version": "2.0.1",
239 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz",
240 | "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==",
241 | "dev": true
242 | },
243 | "entities": {
244 | "version": "2.0.0",
245 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz",
246 | "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==",
247 | "dev": true
248 | }
249 | }
250 | },
251 | "domelementtype": {
252 | "version": "1.3.1",
253 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
254 | "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
255 | "dev": true
256 | },
257 | "domhandler": {
258 | "version": "2.3.0",
259 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
260 | "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
261 | "dev": true,
262 | "requires": {
263 | "domelementtype": "1"
264 | }
265 | },
266 | "domutils": {
267 | "version": "1.5.1",
268 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
269 | "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
270 | "dev": true,
271 | "requires": {
272 | "dom-serializer": "0",
273 | "domelementtype": "1"
274 | }
275 | },
276 | "entities": {
277 | "version": "1.0.0",
278 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
279 | "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=",
280 | "dev": true
281 | },
282 | "escape-string-regexp": {
283 | "version": "1.0.5",
284 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
285 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
286 | "dev": true
287 | },
288 | "exit": {
289 | "version": "0.1.2",
290 | "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
291 | "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
292 | "dev": true
293 | },
294 | "extend-shallow": {
295 | "version": "1.1.4",
296 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz",
297 | "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
298 | "requires": {
299 | "kind-of": "^1.1.0"
300 | }
301 | },
302 | "fancy-log": {
303 | "version": "1.3.3",
304 | "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz",
305 | "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==",
306 | "requires": {
307 | "ansi-gray": "^0.1.1",
308 | "color-support": "^1.1.3",
309 | "parse-node-version": "^1.0.0",
310 | "time-stamp": "^1.0.0"
311 | }
312 | },
313 | "fs.realpath": {
314 | "version": "1.0.0",
315 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
316 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
317 | "dev": true
318 | },
319 | "glob": {
320 | "version": "3.2.8",
321 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.8.tgz",
322 | "integrity": "sha1-VQb0MRchvMYYx9jboUQYh1AwcHM=",
323 | "requires": {
324 | "inherits": "2",
325 | "minimatch": "~0.2.11"
326 | }
327 | },
328 | "gonzales-pe": {
329 | "version": "3.0.0-28",
330 | "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-3.0.0-28.tgz",
331 | "integrity": "sha1-3VC0HdFbaCooxA5fD/IAeQGsYr0="
332 | },
333 | "graceful-readlink": {
334 | "version": "1.0.1",
335 | "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
336 | "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
337 | "dev": true
338 | },
339 | "growl": {
340 | "version": "1.9.2",
341 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz",
342 | "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=",
343 | "dev": true
344 | },
345 | "has-flag": {
346 | "version": "1.0.0",
347 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
348 | "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
349 | "dev": true
350 | },
351 | "he": {
352 | "version": "1.1.1",
353 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
354 | "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
355 | "dev": true
356 | },
357 | "htmlparser2": {
358 | "version": "3.8.3",
359 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
360 | "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
361 | "dev": true,
362 | "requires": {
363 | "domelementtype": "1",
364 | "domhandler": "2.3",
365 | "domutils": "1.5",
366 | "entities": "1.0",
367 | "readable-stream": "1.1"
368 | },
369 | "dependencies": {
370 | "isarray": {
371 | "version": "0.0.1",
372 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
373 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
374 | "dev": true
375 | },
376 | "readable-stream": {
377 | "version": "1.1.14",
378 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
379 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
380 | "dev": true,
381 | "requires": {
382 | "core-util-is": "~1.0.0",
383 | "inherits": "~2.0.1",
384 | "isarray": "0.0.1",
385 | "string_decoder": "~0.10.x"
386 | }
387 | },
388 | "string_decoder": {
389 | "version": "0.10.31",
390 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
391 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
392 | "dev": true
393 | }
394 | }
395 | },
396 | "inflight": {
397 | "version": "1.0.6",
398 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
399 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
400 | "dev": true,
401 | "requires": {
402 | "once": "^1.3.0",
403 | "wrappy": "1"
404 | }
405 | },
406 | "inherits": {
407 | "version": "2.0.4",
408 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
409 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
410 | },
411 | "isarray": {
412 | "version": "1.0.0",
413 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
414 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
415 | },
416 | "jshint": {
417 | "version": "2.10.3",
418 | "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.10.3.tgz",
419 | "integrity": "sha512-d8AoXcNNYzmm7cdmulQ3dQApbrPYArtVBO6n4xOICe4QsXGNHCAKDcFORzqP52LhK61KX0VhY39yYzCsNq+bxQ==",
420 | "dev": true,
421 | "requires": {
422 | "cli": "~1.0.0",
423 | "console-browserify": "1.1.x",
424 | "exit": "0.1.x",
425 | "htmlparser2": "3.8.x",
426 | "lodash": "~4.17.11",
427 | "minimatch": "~3.0.2",
428 | "shelljs": "0.3.x",
429 | "strip-json-comments": "1.0.x"
430 | },
431 | "dependencies": {
432 | "minimatch": {
433 | "version": "3.0.4",
434 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
435 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
436 | "dev": true,
437 | "requires": {
438 | "brace-expansion": "^1.1.7"
439 | }
440 | }
441 | }
442 | },
443 | "json3": {
444 | "version": "3.3.2",
445 | "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
446 | "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
447 | "dev": true
448 | },
449 | "kind-of": {
450 | "version": "1.1.0",
451 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
452 | "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ="
453 | },
454 | "lodash": {
455 | "version": "4.17.15",
456 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
457 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
458 | "dev": true
459 | },
460 | "lodash._baseassign": {
461 | "version": "3.2.0",
462 | "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz",
463 | "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=",
464 | "dev": true,
465 | "requires": {
466 | "lodash._basecopy": "^3.0.0",
467 | "lodash.keys": "^3.0.0"
468 | }
469 | },
470 | "lodash._basecopy": {
471 | "version": "3.0.1",
472 | "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
473 | "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=",
474 | "dev": true
475 | },
476 | "lodash._basecreate": {
477 | "version": "3.0.3",
478 | "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz",
479 | "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=",
480 | "dev": true
481 | },
482 | "lodash._getnative": {
483 | "version": "3.9.1",
484 | "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
485 | "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=",
486 | "dev": true
487 | },
488 | "lodash._isiterateecall": {
489 | "version": "3.0.9",
490 | "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
491 | "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
492 | "dev": true
493 | },
494 | "lodash.create": {
495 | "version": "3.1.1",
496 | "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz",
497 | "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=",
498 | "dev": true,
499 | "requires": {
500 | "lodash._baseassign": "^3.0.0",
501 | "lodash._basecreate": "^3.0.0",
502 | "lodash._isiterateecall": "^3.0.0"
503 | }
504 | },
505 | "lodash.isarguments": {
506 | "version": "3.1.0",
507 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
508 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
509 | "dev": true
510 | },
511 | "lodash.isarray": {
512 | "version": "3.0.4",
513 | "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
514 | "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
515 | "dev": true
516 | },
517 | "lodash.keys": {
518 | "version": "3.1.2",
519 | "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
520 | "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
521 | "dev": true,
522 | "requires": {
523 | "lodash._getnative": "^3.0.0",
524 | "lodash.isarguments": "^3.0.0",
525 | "lodash.isarray": "^3.0.0"
526 | }
527 | },
528 | "lru-cache": {
529 | "version": "2.7.3",
530 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
531 | "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI="
532 | },
533 | "minimatch": {
534 | "version": "0.2.12",
535 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.12.tgz",
536 | "integrity": "sha1-6oKgEqxmLH3fqhRPHBR+aUb12vs=",
537 | "requires": {
538 | "lru-cache": "2",
539 | "sigmund": "~1.0.0"
540 | }
541 | },
542 | "minimist": {
543 | "version": "0.0.8",
544 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
545 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
546 | "dev": true
547 | },
548 | "mkdirp": {
549 | "version": "0.5.1",
550 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
551 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
552 | "dev": true,
553 | "requires": {
554 | "minimist": "0.0.8"
555 | }
556 | },
557 | "mocha": {
558 | "version": "3.5.3",
559 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz",
560 | "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==",
561 | "dev": true,
562 | "requires": {
563 | "browser-stdout": "1.3.0",
564 | "commander": "2.9.0",
565 | "debug": "2.6.8",
566 | "diff": "3.2.0",
567 | "escape-string-regexp": "1.0.5",
568 | "glob": "7.1.1",
569 | "growl": "1.9.2",
570 | "he": "1.1.1",
571 | "json3": "3.3.2",
572 | "lodash.create": "3.1.1",
573 | "mkdirp": "0.5.1",
574 | "supports-color": "3.1.2"
575 | },
576 | "dependencies": {
577 | "commander": {
578 | "version": "2.9.0",
579 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
580 | "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
581 | "dev": true,
582 | "requires": {
583 | "graceful-readlink": ">= 1.0.0"
584 | }
585 | },
586 | "glob": {
587 | "version": "7.1.1",
588 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz",
589 | "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=",
590 | "dev": true,
591 | "requires": {
592 | "fs.realpath": "^1.0.0",
593 | "inflight": "^1.0.4",
594 | "inherits": "2",
595 | "minimatch": "^3.0.2",
596 | "once": "^1.3.0",
597 | "path-is-absolute": "^1.0.0"
598 | }
599 | },
600 | "minimatch": {
601 | "version": "3.0.4",
602 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
603 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
604 | "dev": true,
605 | "requires": {
606 | "brace-expansion": "^1.1.7"
607 | }
608 | }
609 | }
610 | },
611 | "ms": {
612 | "version": "2.0.0",
613 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
614 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
615 | "dev": true
616 | },
617 | "node-uuid": {
618 | "version": "1.4.0",
619 | "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.0.tgz",
620 | "integrity": "sha1-B/myM3Vy/2J1x3Xh1IUT86RdemU="
621 | },
622 | "once": {
623 | "version": "1.4.0",
624 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
625 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
626 | "dev": true,
627 | "requires": {
628 | "wrappy": "1"
629 | }
630 | },
631 | "parse-node-version": {
632 | "version": "1.0.1",
633 | "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
634 | "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA=="
635 | },
636 | "path-is-absolute": {
637 | "version": "1.0.1",
638 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
639 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
640 | "dev": true
641 | },
642 | "plugin-error": {
643 | "version": "0.1.2",
644 | "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz",
645 | "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
646 | "requires": {
647 | "ansi-cyan": "^0.1.1",
648 | "ansi-red": "^0.1.1",
649 | "arr-diff": "^1.0.1",
650 | "arr-union": "^2.0.1",
651 | "extend-shallow": "^1.1.2"
652 | }
653 | },
654 | "process-nextick-args": {
655 | "version": "2.0.1",
656 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
657 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
658 | },
659 | "readable-stream": {
660 | "version": "2.3.6",
661 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
662 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
663 | "requires": {
664 | "core-util-is": "~1.0.0",
665 | "inherits": "~2.0.3",
666 | "isarray": "~1.0.0",
667 | "process-nextick-args": "~2.0.0",
668 | "safe-buffer": "~5.1.1",
669 | "string_decoder": "~1.1.1",
670 | "util-deprecate": "~1.0.1"
671 | }
672 | },
673 | "remove-trailing-separator": {
674 | "version": "1.1.0",
675 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
676 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
677 | "dev": true
678 | },
679 | "replace-ext": {
680 | "version": "1.0.0",
681 | "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
682 | "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
683 | "dev": true
684 | },
685 | "safe-buffer": {
686 | "version": "5.1.2",
687 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
688 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
689 | },
690 | "shelljs": {
691 | "version": "0.3.0",
692 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
693 | "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=",
694 | "dev": true
695 | },
696 | "sigmund": {
697 | "version": "1.0.1",
698 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
699 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA="
700 | },
701 | "string_decoder": {
702 | "version": "1.1.1",
703 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
704 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
705 | "requires": {
706 | "safe-buffer": "~5.1.0"
707 | }
708 | },
709 | "strip-json-comments": {
710 | "version": "1.0.4",
711 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
712 | "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=",
713 | "dev": true
714 | },
715 | "supports-color": {
716 | "version": "3.1.2",
717 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz",
718 | "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=",
719 | "dev": true,
720 | "requires": {
721 | "has-flag": "^1.0.0"
722 | }
723 | },
724 | "through2": {
725 | "version": "2.0.5",
726 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
727 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
728 | "requires": {
729 | "readable-stream": "~2.3.6",
730 | "xtend": "~4.0.1"
731 | }
732 | },
733 | "time-stamp": {
734 | "version": "1.1.0",
735 | "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
736 | "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM="
737 | },
738 | "util-deprecate": {
739 | "version": "1.0.2",
740 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
741 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
742 | },
743 | "vinyl": {
744 | "version": "2.2.0",
745 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz",
746 | "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==",
747 | "dev": true,
748 | "requires": {
749 | "clone": "^2.1.1",
750 | "clone-buffer": "^1.0.0",
751 | "clone-stats": "^1.0.0",
752 | "cloneable-readable": "^1.0.0",
753 | "remove-trailing-separator": "^1.0.1",
754 | "replace-ext": "^1.0.0"
755 | }
756 | },
757 | "vow": {
758 | "version": "0.4.4",
759 | "resolved": "https://registry.npmjs.org/vow/-/vow-0.4.4.tgz",
760 | "integrity": "sha1-yf5GCRKdf1qmIVCOvmS1HJW8e5g="
761 | },
762 | "vow-fs": {
763 | "version": "0.3.2",
764 | "resolved": "https://registry.npmjs.org/vow-fs/-/vow-fs-0.3.2.tgz",
765 | "integrity": "sha1-6isDTYXh24wnfrLpqG0cFfXTjno=",
766 | "requires": {
767 | "glob": "3.2.8",
768 | "node-uuid": "1.4.0",
769 | "vow": "0.4.4",
770 | "vow-queue": "0.3.1"
771 | }
772 | },
773 | "vow-queue": {
774 | "version": "0.3.1",
775 | "resolved": "https://registry.npmjs.org/vow-queue/-/vow-queue-0.3.1.tgz",
776 | "integrity": "sha1-WYxRoVsKgabV/AX0dhzrRi3h6Gg=",
777 | "requires": {
778 | "vow": "~0.4.0"
779 | }
780 | },
781 | "wrappy": {
782 | "version": "1.0.2",
783 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
784 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
785 | "dev": true
786 | },
787 | "xtend": {
788 | "version": "4.0.2",
789 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
790 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
791 | }
792 | }
793 | }
794 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gulp-csscomb",
3 | "description": "CSScomb is a coding style formatter for CSS.",
4 | "version": "3.1.0",
5 | "homepage": "http://github.com/koistya/gulp-csscomb",
6 | "repository": {
7 | "type": "git",
8 | "url": "http://github.com/koistya/gulp-csscomb.git"
9 | },
10 | "bugs": {
11 | "url": "https://github.com/koistya/gulp-csscomb/issues"
12 | },
13 | "author": "Konstantin Tarkus (@koistya)",
14 | "license": "MIT",
15 | "keywords": [
16 | "gulpplugin",
17 | "css",
18 | "csscomb",
19 | "lint",
20 | "linter",
21 | "preprocessor"
22 | ],
23 | "main": "./index.js",
24 | "files": [
25 | "index.js"
26 | ],
27 | "dependencies": {
28 | "ansi-colors": "^1.0.1",
29 | "csscomb": "^3.1.7",
30 | "fancy-log": "^1.3.2",
31 | "plugin-error": "^0.1.2",
32 | "through2": "^2.0.1"
33 | },
34 | "devDependencies": {
35 | "jshint": "^2.9.3",
36 | "mocha": "^3.0.2",
37 | "vinyl": "^2.1.0"
38 | },
39 | "engines": {
40 | "node": ">= 0.9.0"
41 | },
42 | "scripts": {
43 | "test": "jshint index.js test.js && mocha"
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/test.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * gulp-csscomb | https://github.com/koistya/gulp-csscomb
3 | * Copyright (c) Konstantin Tarkus (@koistya). See LICENSE.txt
4 | */
5 |
6 | /* global describe, it */
7 |
8 | 'use strict';
9 |
10 | var assert = require('assert');
11 | var Vinyl = require('vinyl');
12 | var csscomb = require('./index');
13 |
14 | var cssinput = 'h1 { color: yellow; } \n h1 { font-size: 2em; }';
15 | var cssoutput = 'h1\n{\n color: yellow;\n}\nh1\n{\n font-size: 2em;\n}\n';
16 |
17 | describe('gulp-csscomb', function() {
18 | it('should format CSS coding style', function (cb) {
19 |
20 | var stream = csscomb();
21 |
22 | stream.once('data', function(file) {
23 |
24 | // make sure it came out the same way it went in
25 | assert(file.isStream);
26 |
27 | // check the contents
28 | assert.equal(String(file.contents), cssoutput);
29 |
30 | cb();
31 | });
32 |
33 | stream.write(new Vinyl({
34 | path: 'style.css',
35 | contents: new Buffer(cssinput)
36 | }));
37 | });
38 | });
39 |
--------------------------------------------------------------------------------