diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-05-03 15:35:00 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-05-03 15:35:00 +0200 |
commit | de98e0b232509d5f40c135d540a70e415272ff85 (patch) | |
tree | a79222a5b58484ab3b80d18efcaaa7ccc4769b33 /node_modules/gulp-sym | |
parent | e0c9d480a73fa629c1e4a47d3e721f1d2d345406 (diff) |
node_modules
Diffstat (limited to 'node_modules/gulp-sym')
98 files changed, 4354 insertions, 0 deletions
diff --git a/node_modules/gulp-sym/node_modules/ansi-styles/index.js b/node_modules/gulp-sym/node_modules/ansi-styles/index.js new file mode 100644 index 000000000..2d8b4726d --- /dev/null +++ b/node_modules/gulp-sym/node_modules/ansi-styles/index.js @@ -0,0 +1,40 @@ +'use strict'; +var styles = module.exports; + +var codes = { + reset: [0, 0], + + bold: [1, 22], // 21 isn't widely supported and 22 does the same thing + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29], + + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39], + + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49] +}; + +Object.keys(codes).forEach(function (key) { + var val = codes[key]; + var style = styles[key] = {}; + style.open = '\u001b[' + val[0] + 'm'; + style.close = '\u001b[' + val[1] + 'm'; +}); diff --git a/node_modules/gulp-sym/node_modules/ansi-styles/package.json b/node_modules/gulp-sym/node_modules/ansi-styles/package.json new file mode 100644 index 000000000..a9ba60766 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/ansi-styles/package.json @@ -0,0 +1,46 @@ +{ + "name": "ansi-styles", + "version": "1.1.0", + "description": "ANSI escape codes for styling strings in the terminal", + "license": "MIT", + "repository": "sindresorhus/ansi-styles", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js" + ], + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "devDependencies": { + "mocha": "*" + } +} diff --git a/node_modules/gulp-sym/node_modules/ansi-styles/readme.md b/node_modules/gulp-sym/node_modules/ansi-styles/readme.md new file mode 100644 index 000000000..73584cc95 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/ansi-styles/readme.md @@ -0,0 +1,70 @@ +# ansi-styles [![Build Status](https://travis-ci.org/sindresorhus/ansi-styles.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-styles) + +> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal + +You probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings. + +![screenshot](screenshot.png) + + +## Install + +```sh +$ npm install --save ansi-styles +``` + + +## Usage + +```js +var ansi = require('ansi-styles'); + +console.log(ansi.green.open + 'Hello world!' + ansi.green.close); +``` + + +## API + +Each style has an `open` and `close` property. + + +## Styles + +### General + +- `reset` +- `bold` +- `dim` +- `italic` *(not widely supported)* +- `underline` +- `inverse` +- `hidden` +- `strikethrough` *(not widely supported)* + +### Text colors + +- `black` +- `red` +- `green` +- `yellow` +- `blue` +- `magenta` +- `cyan` +- `white` +- `gray` + +### Background colors + +- `bgBlack` +- `bgRed` +- `bgGreen` +- `bgYellow` +- `bgBlue` +- `bgMagenta` +- `bgCyan` +- `bgWhite` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/gulp-sym/node_modules/chalk/index.js b/node_modules/gulp-sym/node_modules/chalk/index.js new file mode 100644 index 000000000..ac1f16820 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/chalk/index.js @@ -0,0 +1,95 @@ +'use strict'; +var escapeStringRegexp = require('escape-string-regexp'); +var ansiStyles = require('ansi-styles'); +var stripAnsi = require('strip-ansi'); +var hasAnsi = require('has-ansi'); +var supportsColor = require('supports-color'); +var defineProps = Object.defineProperties; +var chalk = module.exports; + +function build(_styles) { + var builder = function builder() { + return applyStyle.apply(builder, arguments); + }; + builder._styles = _styles; + // __proto__ is used because we must return a function, but there is + // no way to create a function with a different prototype. + builder.__proto__ = proto; + return builder; +} + +var styles = (function () { + var ret = {}; + + ansiStyles.grey = ansiStyles.gray; + + Object.keys(ansiStyles).forEach(function (key) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); + + ret[key] = { + get: function () { + return build(this._styles.concat(key)); + } + }; + }); + + return ret; +})(); + +var proto = defineProps(function chalk() {}, styles); + +function applyStyle() { + // support varags, but simply cast to string in case there's only one arg + var args = arguments; + var argsLen = args.length; + var str = argsLen !== 0 && String(arguments[0]); + if (argsLen > 1) { + // don't slice `arguments`, it prevents v8 optimizations + for (var a = 1; a < argsLen; a++) { + str += ' ' + args[a]; + } + } + + if (!chalk.enabled || !str) { + return str; + } + + /*jshint validthis: true*/ + var nestedStyles = this._styles; + + for (var i = 0; i < nestedStyles.length; i++) { + var code = ansiStyles[nestedStyles[i]]; + // Replace any instances already present with a re-opening code + // otherwise only the part of the string until said closing code + // will be colored, and the rest will simply be 'plain'. + str = code.open + str.replace(code.closeRe, code.open) + code.close; + } + + return str; +} + +function init() { + var ret = {}; + + Object.keys(styles).forEach(function (name) { + ret[name] = { + get: function () { + return build([name]); + } + }; + }); + + return ret; +} + +defineProps(chalk, init()); + +chalk.styles = ansiStyles; +chalk.hasColor = hasAnsi; +chalk.stripColor = stripAnsi; +chalk.supportsColor = supportsColor; + +// detect mode if not set manually +if (chalk.enabled === undefined) { + chalk.enabled = chalk.supportsColor; +} diff --git a/node_modules/gulp-sym/node_modules/chalk/node_modules/.bin/has-ansi b/node_modules/gulp-sym/node_modules/chalk/node_modules/.bin/has-ansi new file mode 120000 index 000000000..957e9f8cf --- /dev/null +++ b/node_modules/gulp-sym/node_modules/chalk/node_modules/.bin/has-ansi @@ -0,0 +1 @@ +../../../has-ansi/cli.js
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/chalk/node_modules/.bin/strip-ansi b/node_modules/gulp-sym/node_modules/chalk/node_modules/.bin/strip-ansi new file mode 120000 index 000000000..f7646606c --- /dev/null +++ b/node_modules/gulp-sym/node_modules/chalk/node_modules/.bin/strip-ansi @@ -0,0 +1 @@ +../../../strip-ansi/cli.js
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/chalk/node_modules/.bin/supports-color b/node_modules/gulp-sym/node_modules/chalk/node_modules/.bin/supports-color new file mode 120000 index 000000000..886732fac --- /dev/null +++ b/node_modules/gulp-sym/node_modules/chalk/node_modules/.bin/supports-color @@ -0,0 +1 @@ +../../../supports-color/cli.js
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/chalk/package.json b/node_modules/gulp-sym/node_modules/chalk/package.json new file mode 100644 index 000000000..e58fe486a --- /dev/null +++ b/node_modules/gulp-sym/node_modules/chalk/package.json @@ -0,0 +1,53 @@ +{ + "name": "chalk", + "version": "0.5.1", + "description": "Terminal string styling done right. Created because the `colors` module does some really horrible things.", + "license": "MIT", + "repository": "sindresorhus/chalk", + "maintainers": [ + "Sindre Sorhus <sindresorhus@gmail.com> (http://sindresorhus.com)", + "Joshua Appelman <joshua@jbna.nl>" + ], + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha", + "bench": "matcha benchmark.js" + }, + "files": [ + "index.js" + ], + "keywords": [ + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "ansi", + "styles", + "tty", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "ansi-styles": "^1.1.0", + "escape-string-regexp": "^1.0.0", + "has-ansi": "^0.1.0", + "strip-ansi": "^0.3.0", + "supports-color": "^0.2.0" + }, + "devDependencies": { + "matcha": "^0.5.0", + "mocha": "*" + } +} diff --git a/node_modules/gulp-sym/node_modules/chalk/readme.md b/node_modules/gulp-sym/node_modules/chalk/readme.md new file mode 100644 index 000000000..239c791f8 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/chalk/readme.md @@ -0,0 +1,175 @@ +# <img width="300" src="https://cdn.rawgit.com/sindresorhus/chalk/77ae94f63ab1ac61389b190e5a59866569d1a376/logo.svg" alt="chalk"> + +> Terminal string styling done right + +[![Build Status](https://travis-ci.org/sindresorhus/chalk.svg?branch=master)](https://travis-ci.org/sindresorhus/chalk) +![](http://img.shields.io/badge/unicorn-approved-ff69b4.svg) + +[colors.js](https://github.com/Marak/colors.js) is currently the most popular string styling module, but it has serious deficiencies like extending String.prototype which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough. + +**Chalk is a clean and focused alternative.** + +![screenshot](https://github.com/sindresorhus/ansi-styles/raw/master/screenshot.png) + + +## Why + +- Highly performant +- Doesn't extend String.prototype +- Expressive API +- Ability to nest styles +- Clean and focused +- Auto-detects color support +- Actively maintained +- [Used by 1000+ modules](https://npmjs.org/browse/depended/chalk) + + +## Install + +```sh +$ npm install --save chalk +``` + + +## Usage + +Chalk comes with an easy to use composable API where you just chain and nest the styles you want. + +```js +var chalk = require('chalk'); + +// style a string +console.log( chalk.blue('Hello world!') ); + +// combine styled and normal strings +console.log( chalk.blue('Hello'), 'World' + chalk.red('!') ); + +// compose multiple styles using the chainable API +console.log( chalk.blue.bgRed.bold('Hello world!') ); + +// pass in multiple arguments +console.log( chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz') ); + +// nest styles +console.log( chalk.red('Hello', chalk.underline.bgBlue('world') + '!') ); + +// nest styles of the same type even (color, underline, background) +console.log( chalk.green('I am a green line ' + chalk.blue('with a blue substring') + ' that becomes green again!') ); +``` + +Easily define your own themes. + +```js +var chalk = require('chalk'); +var error = chalk.bold.red; +console.log(error('Error!')); +``` + +Take advantage of console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data). + +```js +var name = 'Sindre'; +console.log(chalk.green('Hello %s'), name); +//=> Hello Sindre +``` + + +## API + +### chalk.`<style>[.<style>...](string, [string...])` + +Example: `chalk.red.bold.underline('Hello', 'world');` + +Chain [styles](#styles) and call the last one as a method with a string argument. Order doesn't matter. + +Multiple arguments will be separated by space. + +### chalk.enabled + +Color support is automatically detected, but you can override it. + +### chalk.supportsColor + +Detect whether the terminal [supports color](https://github.com/sindresorhus/supports-color). + +Can be overridden by the user with the flags `--color` and `--no-color`. + +Used internally and handled for you, but exposed for convenience. + +### chalk.styles + +Exposes the styles as [ANSI escape codes](https://github.com/sindresorhus/ansi-styles). + +Generally not useful, but you might need just the `.open` or `.close` escape code if you're mixing externally styled strings with yours. + +```js +var chalk = require('chalk'); + +console.log(chalk.styles.red); +//=> {open: '\u001b[31m', close: '\u001b[39m'} + +console.log(chalk.styles.red.open + 'Hello' + chalk.styles.red.close); +``` + +### chalk.hasColor(string) + +Check whether a string [has color](https://github.com/sindresorhus/has-ansi). + +### chalk.stripColor(string) + +[Strip color](https://github.com/sindresorhus/strip-ansi) from a string. + +Can be useful in combination with `.supportsColor` to strip color on externally styled text when it's not supported. + +Example: + +```js +var chalk = require('chalk'); +var styledString = getText(); + +if (!chalk.supportsColor) { + styledString = chalk.stripColor(styledString); +} +``` + + +## Styles + +### General + +- `reset` +- `bold` +- `dim` +- `italic` *(not widely supported)* +- `underline` +- `inverse` +- `hidden` +- `strikethrough` *(not widely supported)* + +### Text colors + +- `black` +- `red` +- `green` +- `yellow` +- `blue` +- `magenta` +- `cyan` +- `white` +- `gray` + +### Background colors + +- `bgBlack` +- `bgRed` +- `bgGreen` +- `bgYellow` +- `bgBlue` +- `bgMagenta` +- `bgCyan` +- `bgWhite` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/gulp-sym/node_modules/dateformat/.npmignore b/node_modules/gulp-sym/node_modules/dateformat/.npmignore new file mode 100644 index 000000000..830d0ff74 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/dateformat/.npmignore @@ -0,0 +1,57 @@ +# .gitignore <https://github.com/tunnckoCore/dotfiles> +# +# Copyright (c) 2014 Charlike Mike Reagent, contributors. +# Released under the MIT license. +# + +# Always-ignore dirs # +# #################### +_gh_pages +node_modules +bower_components +components +vendor +build +dest +dist +src +lib-cov +coverage +nbproject +cache +temp +tmp + +# Packages # +# ########## +*.7z +*.dmg +*.gz +*.iso +*.jar +*.rar +*.tar +*.zip + +# OS, Logs and databases # +# ######################### +*.pid +*.dat +*.log +*.sql +*.sqlite +*~ +~* + +# Another files # +# ############### +Icon? +.DS_Store* +Thumbs.db +ehthumbs.db +Desktop.ini +npm-debug.log +.directory +._* + +koa-better-body
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/dateformat/.travis.yml b/node_modules/gulp-sym/node_modules/dateformat/.travis.yml new file mode 100644 index 000000000..18ae2d89c --- /dev/null +++ b/node_modules/gulp-sym/node_modules/dateformat/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "0.11" + - "0.10" diff --git a/node_modules/gulp-sym/node_modules/dateformat/LICENSE b/node_modules/gulp-sym/node_modules/dateformat/LICENSE new file mode 100644 index 000000000..57d44e2ac --- /dev/null +++ b/node_modules/gulp-sym/node_modules/dateformat/LICENSE @@ -0,0 +1,20 @@ +(c) 2007-2009 Steven Levithan <stevenlevithan.com> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/gulp-sym/node_modules/dateformat/Readme.md b/node_modules/gulp-sym/node_modules/dateformat/Readme.md new file mode 100644 index 000000000..0aaf1e822 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/dateformat/Readme.md @@ -0,0 +1,82 @@ +# dateformat + +A node.js package for Steven Levithan's excellent [dateFormat()][dateformat] function. + +[![Build Status](https://travis-ci.org/felixge/node-dateformat.svg)](https://travis-ci.org/felixge/node-dateformat) + +## Modifications + +* Removed the `Date.prototype.format` method. Sorry folks, but extending native prototypes is for suckers. +* Added a `module.exports = dateFormat;` statement at the bottom +* Added the placeholder `N` to get the ISO 8601 numeric representation of the day of the week + +## Installation + +```bash +$ npm install dateformat +$ dateformat --help +``` + +## Usage + +As taken from Steven's post, modified to match the Modifications listed above: +```js + var dateFormat = require('dateformat'); + var now = new Date(); + + // Basic usage + dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT"); + // Saturday, June 9th, 2007, 5:46:21 PM + + // You can use one of several named masks + dateFormat(now, "isoDateTime"); + // 2007-06-09T17:46:21 + + // ...Or add your own + dateFormat.masks.hammerTime = 'HH:MM! "Can\'t touch this!"'; + dateFormat(now, "hammerTime"); + // 17:46! Can't touch this! + + // When using the standalone dateFormat function, + // you can also provide the date as a string + dateFormat("Jun 9 2007", "fullDate"); + // Saturday, June 9, 2007 + + // Note that if you don't include the mask argument, + // dateFormat.masks.default is used + dateFormat(now); + // Sat Jun 09 2007 17:46:21 + + // And if you don't include the date argument, + // the current date and time is used + dateFormat(); + // Sat Jun 09 2007 17:46:22 + + // You can also skip the date argument (as long as your mask doesn't + // contain any numbers), in which case the current date/time is used + dateFormat("longTime"); + // 5:46:22 PM EST + + // And finally, you can convert local time to UTC time. Simply pass in + // true as an additional argument (no argument skipping allowed in this case): + dateFormat(now, "longTime", true); + // 10:46:21 PM UTC + + // ...Or add the prefix "UTC:" or "GMT:" to your mask. + dateFormat(now, "UTC:h:MM:ss TT Z"); + // 10:46:21 PM UTC + + // You can also get the ISO 8601 week of the year: + dateFormat(now, "W"); + // 42 + + // and also get the ISO 8601 numeric representation of the day of the week: + dateFormat(now,"N"); + // 6 +``` +## License + +(c) 2007-2009 Steven Levithan [stevenlevithan.com][stevenlevithan], MIT license. + +[dateformat]: http://blog.stevenlevithan.com/archives/date-time-format +[stevenlevithan]: http://stevenlevithan.com/ diff --git a/node_modules/gulp-sym/node_modules/dateformat/bin/cli.js b/node_modules/gulp-sym/node_modules/dateformat/bin/cli.js new file mode 100755 index 000000000..e095ddc68 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/dateformat/bin/cli.js @@ -0,0 +1,75 @@ +#!/usr/bin/env node +/** + * dateformat <https://github.com/felixge/node-dateformat> + * + * Copyright (c) 2014 Charlike Mike Reagent (cli), contributors. + * Released under the MIT license. + */ + +'use strict'; + +/** + * Module dependencies. + */ + +var dateFormat = require('../lib/dateformat'); +var meow = require('meow'); +var stdin = require('get-stdin'); + +var cli = meow({ + pkg: '../package.json', + help: [ + 'Options', + ' --help Show this help', + ' --version Current version of package', + ' -d | --date Date that want to format (Date object as Number or String)', + ' -m | --mask Mask that will use to format the date', + ' -u | --utc Convert local time to UTC time or use `UTC:` prefix in mask', + ' -g | --gmt You can use `GMT:` prefix in mask', + '', + 'Usage', + ' dateformat [date] [mask]', + ' dateformat "Nov 26 2014" "fullDate"', + ' dateformat 1416985417095 "dddd, mmmm dS, yyyy, h:MM:ss TT"', + ' dateformat 1315361943159 "W"', + ' dateformat "UTC:h:MM:ss TT Z"', + ' dateformat "longTime" true', + ' dateformat "longTime" false true', + ' dateformat "Jun 9 2007" "fullDate" true', + ' date +%s | dateformat', + '' + ].join('\n') +}) + +var date = cli.input[0] || cli.flags.d || cli.flags.date || Date.now(); +var mask = cli.input[1] || cli.flags.m || cli.flags.mask || dateFormat.masks.default; +var utc = cli.input[2] || cli.flags.u || cli.flags.utc || false; +var gmt = cli.input[3] || cli.flags.g || cli.flags.gmt || false; + +utc = utc === 'true' ? true : false; +gmt = gmt === 'true' ? true : false; + +if (!cli.input.length) { + stdin(function(date) { + console.log(dateFormat(date, dateFormat.masks.default, utc, gmt)); + }); + return; +} + +if (cli.input.length === 1 && date) { + mask = date; + date = Date.now(); + console.log(dateFormat(date, mask, utc, gmt)); + return; +} + +if (cli.input.length >= 2 && date && mask) { + if (mask === 'true' || mask === 'false') { + utc = mask === 'true' ? true : false; + gmt = !utc; + mask = date + date = Date.now(); + } + console.log(dateFormat(date, mask, utc, gmt)); + return; +} diff --git a/node_modules/gulp-sym/node_modules/dateformat/lib/dateformat.js b/node_modules/gulp-sym/node_modules/dateformat/lib/dateformat.js new file mode 100644 index 000000000..eb2574649 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/dateformat/lib/dateformat.js @@ -0,0 +1,226 @@ +/* + * Date Format 1.2.3 + * (c) 2007-2009 Steven Levithan <stevenlevithan.com> + * MIT license + * + * Includes enhancements by Scott Trenda <scott.trenda.net> + * and Kris Kowal <cixar.com/~kris.kowal/> + * + * Accepts a date, a mask, or a date and a mask. + * Returns a formatted version of the given date. + * The date defaults to the current date/time. + * The mask defaults to dateFormat.masks.default. + */ + +(function(global) { + 'use strict'; + + var dateFormat = (function() { + var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|'[^']*'|'[^']*'/g; + var timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g; + var timezoneClip = /[^-+\dA-Z]/g; + + // Regexes and supporting functions are cached through closure + return function (date, mask, utc, gmt) { + + // You can't provide utc if you skip other args (use the 'UTC:' mask prefix) + if (arguments.length === 1 && kindOf(date) === 'string' && !/\d/.test(date)) { + mask = date; + date = undefined; + } + + date = date || new Date; + + if(!(date instanceof Date)) { + date = new Date(date); + } + + if (isNaN(date)) { + throw TypeError('Invalid date'); + } + + mask = String(dateFormat.masks[mask] || mask || dateFormat.masks['default']); + + // Allow setting the utc/gmt argument via the mask + var maskSlice = mask.slice(0, 4); + if (maskSlice === 'UTC:' || maskSlice === 'GMT:') { + mask = mask.slice(4); + utc = true; + if (maskSlice === 'GMT:') { + gmt = true; + } + } + + var _ = utc ? 'getUTC' : 'get'; + var d = date[_ + 'Date'](); + var D = date[_ + 'Day'](); + var m = date[_ + 'Month'](); + var y = date[_ + 'FullYear'](); + var H = date[_ + 'Hours'](); + var M = date[_ + 'Minutes'](); + var s = date[_ + 'Seconds'](); + var L = date[_ + 'Milliseconds'](); + var o = utc ? 0 : date.getTimezoneOffset(); + var W = getWeek(date); + var N = getDayOfWeek(date); + var flags = { + d: d, + dd: pad(d), + ddd: dateFormat.i18n.dayNames[D], + dddd: dateFormat.i18n.dayNames[D + 7], + m: m + 1, + mm: pad(m + 1), + mmm: dateFormat.i18n.monthNames[m], + mmmm: dateFormat.i18n.monthNames[m + 12], + yy: String(y).slice(2), + yyyy: y, + h: H % 12 || 12, + hh: pad(H % 12 || 12), + H: H, + HH: pad(H), + M: M, + MM: pad(M), + s: s, + ss: pad(s), + l: pad(L, 3), + L: pad(Math.round(L / 10)), + t: H < 12 ? 'a' : 'p', + tt: H < 12 ? 'am' : 'pm', + T: H < 12 ? 'A' : 'P', + TT: H < 12 ? 'AM' : 'PM', + Z: gmt ? 'GMT' : utc ? 'UTC' : (String(date).match(timezone) || ['']).pop().replace(timezoneClip, ''), + o: (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), + S: ['th', 'st', 'nd', 'rd'][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10], + W: W, + N: N + }; + + return mask.replace(token, function (match) { + if (match in flags) { + return flags[match]; + } + return match.slice(1, match.length - 1); + }); + }; + })(); + + dateFormat.masks = { + 'default': 'ddd mmm dd yyyy HH:MM:ss', + 'shortDate': 'm/d/yy', + 'mediumDate': 'mmm d, yyyy', + 'longDate': 'mmmm d, yyyy', + 'fullDate': 'dddd, mmmm d, yyyy', + 'shortTime': 'h:MM TT', + 'mediumTime': 'h:MM:ss TT', + 'longTime': 'h:MM:ss TT Z', + 'isoDate': 'yyyy-mm-dd', + 'isoTime': 'HH:MM:ss', + 'isoDateTime': 'yyyy-mm-dd\'T\'HH:MM:sso', + 'isoUtcDateTime': 'UTC:yyyy-mm-dd\'T\'HH:MM:ss\'Z\'', + 'expiresHeaderFormat': 'ddd, dd mmm yyyy HH:MM:ss Z' + }; + + // Internationalization strings + dateFormat.i18n = { + dayNames: [ + 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', + 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' + ], + monthNames: [ + 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', + 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' + ] + }; + +function pad(val, len) { + val = String(val); + len = len || 2; + while (val.length < len) { + val = '0' + val; + } + return val; +} + +/** + * Get the ISO 8601 week number + * Based on comments from + * http://techblog.procurios.nl/k/n618/news/view/33796/14863/Calculate-ISO-8601-week-and-year-in-javascript.html + * + * @param {Object} `date` + * @return {Number} + */ +function getWeek(date) { + // Remove time components of date + var targetThursday = new Date(date.getFullYear(), date.getMonth(), date.getDate()); + + // Change date to Thursday same week + targetThursday.setDate(targetThursday.getDate() - ((targetThursday.getDay() + 6) % 7) + 3); + + // Take January 4th as it is always in week 1 (see ISO 8601) + var firstThursday = new Date(targetThursday.getFullYear(), 0, 4); + + // Change date to Thursday same week + firstThursday.setDate(firstThursday.getDate() - ((firstThursday.getDay() + 6) % 7) + 3); + + // Check if daylight-saving-time-switch occured and correct for it + var ds = targetThursday.getTimezoneOffset() - firstThursday.getTimezoneOffset(); + targetThursday.setHours(targetThursday.getHours() - ds); + + // Number of weeks between target Thursday and first Thursday + var weekDiff = (targetThursday - firstThursday) / (86400000*7); + return 1 + Math.floor(weekDiff); +} + +/** + * Get ISO-8601 numeric representation of the day of the week + * 1 (for Monday) through 7 (for Sunday) + * + * @param {Object} `date` + * @return {Number} + */ +function getDayOfWeek(date) { + var dow = date.getDay(); + if(dow === 0) { + dow = 7; + } + return dow; +} + +/** + * kind-of shortcut + * @param {*} val + * @return {String} + */ +function kindOf(val) { + if (val === null) { + return 'null'; + } + + if (val === undefined) { + return 'undefined'; + } + + if (typeof val !== 'object') { + return typeof val; + } + + if (Array.isArray(val)) { + return 'array'; + } + + return {}.toString.call(val) + .slice(8, -1).toLowerCase(); +}; + + + + if (typeof define === 'function' && define.amd) { + define(function () { + return dateFormat; + }); + } else if (typeof exports === 'object') { + module.exports = dateFormat; + } else { + global.dateFormat = dateFormat; + } +})(this); diff --git a/node_modules/gulp-sym/node_modules/dateformat/package.json b/node_modules/gulp-sym/node_modules/dateformat/package.json new file mode 100644 index 000000000..362956d47 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/dateformat/package.json @@ -0,0 +1,36 @@ +{ + "name": "dateformat", + "description": "A node.js package for Steven Levithan's excellent dateFormat() function.", + "maintainers": "Felix Geisendörfer <felix@debuggable.com>", + "homepage": "https://github.com/felixge/node-dateformat", + "author": "Steven Levithan", + "contributors": [ + "Steven Levithan", + "Felix Geisendörfer <felix@debuggable.com>", + "Christoph Tavan <dev@tavan.de>" + ], + "version": "1.0.12", + "license": "MIT", + "main": "lib/dateformat", + "bin": { + "dateformat": "bin/cli.js" + }, + "dependencies": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + }, + "devDependencies": { + "underscore": "1.7.0", + "mocha": "2.0.1" + }, + "engines": { + "node": "*" + }, + "scripts": { + "test": "mocha" + }, + "repository": { + "type": "git", + "url": "https://github.com/felixge/node-dateformat.git" + } +} diff --git a/node_modules/gulp-sym/node_modules/dateformat/test/test_dayofweek.js b/node_modules/gulp-sym/node_modules/dateformat/test/test_dayofweek.js new file mode 100644 index 000000000..7f37407cd --- /dev/null +++ b/node_modules/gulp-sym/node_modules/dateformat/test/test_dayofweek.js @@ -0,0 +1,15 @@ +var assert = require('assert'); + +var dateFormat = require('./../lib/dateformat'); + +describe('dayOfWeek', function() { + it('should correctly format the timezone part', function(done) { + var start = 10; // the 10 of March 2013 is a Sunday + for(var dow = 1; dow <= 7; dow++){ + var date = new Date('2013-03-' + (start + dow)); + var N = dateFormat(date, 'N'); + assert.strictEqual(N, String(dow)); + } + done(); + }); +}); diff --git a/node_modules/gulp-sym/node_modules/dateformat/test/test_formats.js b/node_modules/gulp-sym/node_modules/dateformat/test/test_formats.js new file mode 100644 index 000000000..df186caef --- /dev/null +++ b/node_modules/gulp-sym/node_modules/dateformat/test/test_formats.js @@ -0,0 +1,76 @@ +var assert = require('assert'); + +var _ = require('underscore'); + +var dateFormat = require('../lib/dateformat'); + +var expects = { + 'default': 'Wed Nov 26 2014 13:19:44', + 'shortDate': '11/26/14', + 'mediumDate': 'Nov 26, 2014', + 'longDate': 'November 26, 2014', + 'fullDate': 'Wednesday, November 26, 2014', + 'shortTime': '1:19 PM', + 'mediumTime': '1:19:44 PM', + 'longTime': '1:19:44 PM %TZ_PREFIX%%TZ_OFFSET%', + 'isoDate': '2014-11-26', + 'isoTime': '13:19:44', + 'isoDateTime': '2014-11-26T13:19:44%TZ_OFFSET%', + 'isoUtcDateTime': '', + 'expiresHeaderFormat': 'Wed, 26 Nov 2014 13:19:44 %TZ_PREFIX%%TZ_OFFSET%' +}; + +function pad(num, size) { + var s = num + ''; + while (s.length < size) { + s = '0' + s; + } + return s; +} + +function parseOffset(date) { + var offset = date.getTimezoneOffset(); + var hours = Math.floor(-1 * offset / 60); + var minutes = (-1 * offset) - (hours * 60); + var sign = offset > 0 ? '-' : '+'; + return { + offset: offset, + hours: hours, + minutes: minutes, + sign: sign, + }; +} + +function timezoneOffset(date) { + var offset = parseOffset(date); + return offset.sign + pad(offset.hours, 2) + pad(offset.minutes, 2); +} + +describe('dateformat([now], [mask])', function() { + _.each(dateFormat.masks, function(value, key) { + it('should format `' + key + '` mask', function(done) { + var now = new Date(2014, 10, 26, 13, 19, 44); + var tzOffset = timezoneOffset(now); + var expected = expects[key].replace(/%TZ_PREFIX%/, 'GMT') + .replace(/%TZ_OFFSET%/g, tzOffset) + .replace(/GMT\+0000/g, 'UTC'); + if (key === 'isoUtcDateTime') { + var offset = parseOffset(now); + now.setHours(now.getHours() - offset.hours, + now.getMinutes() - offset.minutes); + var expected = now.toISOString().replace(/\.000/g, ''); + } + var actual = dateFormat(now, key); + assert.strictEqual(actual, expected); + done(); + }); + }); + it('should use `default` mask, when `mask` is empty', function(done) { + var now = new Date(2014, 10, 26, 13, 19, 44); + var expected = expects['default']; + var actual = dateFormat(now); + + assert.strictEqual(actual, expected); + done(); + }); +}); diff --git a/node_modules/gulp-sym/node_modules/dateformat/test/test_isoutcdatetime.js b/node_modules/gulp-sym/node_modules/dateformat/test/test_isoutcdatetime.js new file mode 100644 index 000000000..886b7a5bd --- /dev/null +++ b/node_modules/gulp-sym/node_modules/dateformat/test/test_isoutcdatetime.js @@ -0,0 +1,11 @@ +var assert = require('assert'); + +var dateFormat = require('./../lib/dateformat'); + +describe('isoUtcDateTime', function() { + it('should correctly format the timezone part', function(done) { + var actual = dateFormat('2014-06-02T13:23:21-08:00', 'isoUtcDateTime'); + assert.strictEqual(actual, '2014-06-02T21:23:21Z'); + done(); + }); +}); diff --git a/node_modules/gulp-sym/node_modules/dateformat/test/weekofyear/test_weekofyear.js b/node_modules/gulp-sym/node_modules/dateformat/test/weekofyear/test_weekofyear.js new file mode 100644 index 000000000..d1ddbe818 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/dateformat/test/weekofyear/test_weekofyear.js @@ -0,0 +1,4 @@ +var dateFormat = require('../lib/dateformat.js'); + +var val = process.argv[2] || new Date(); +console.log(dateFormat(val, 'W')); diff --git a/node_modules/gulp-sym/node_modules/dateformat/test/weekofyear/test_weekofyear.sh b/node_modules/gulp-sym/node_modules/dateformat/test/weekofyear/test_weekofyear.sh new file mode 100644 index 000000000..3c3e69b31 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/dateformat/test/weekofyear/test_weekofyear.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# this just takes php's date() function as a reference to check if week of year +# is calculated correctly in the range from 1970 .. 2038 by brute force... + +SEQ="seq" +SYSTEM=`uname` +if [ "$SYSTEM" = "Darwin" ]; then + SEQ="jot" +fi + +for YEAR in {1970..2038}; do + for MONTH in {1..12}; do + DAYS=$(cal $MONTH $YEAR | egrep "28|29|30|31" |tail -1 |awk '{print $NF}') + for DAY in $( $SEQ $DAYS ); do + DATE=$YEAR-$MONTH-$DAY + echo -n $DATE ... + NODEVAL=$(node test_weekofyear.js $DATE) + PHPVAL=$(php -r "echo intval(date('W', strtotime('$DATE')));") + if [ "$NODEVAL" -ne "$PHPVAL" ]; then + echo "MISMATCH: node: $NODEVAL vs php: $PHPVAL for date $DATE" + else + echo " OK" + fi + done + done +done diff --git a/node_modules/gulp-sym/node_modules/gulp-util/.npmignore b/node_modules/gulp-sym/node_modules/gulp-util/.npmignore new file mode 100644 index 000000000..5cdb2e5e9 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/.npmignore @@ -0,0 +1,7 @@ +.DS_Store +*.log +node_modules +build +*.node +components +test
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/gulp-util/.travis.yml b/node_modules/gulp-sym/node_modules/gulp-util/.travis.yml new file mode 100644 index 000000000..7c1662070 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - "0.10" +after_script: + - npm run coveralls
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/gulp-util/LICENSE b/node_modules/gulp-sym/node_modules/gulp-util/LICENSE new file mode 100755 index 000000000..7cbe012c6 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2014 Fractal <contact@wearefractal.com> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/gulp-sym/node_modules/gulp-util/README.md b/node_modules/gulp-sym/node_modules/gulp-util/README.md new file mode 100644 index 000000000..a8d9b19ef --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/README.md @@ -0,0 +1,140 @@ +# gulp-util [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Dependency Status][depstat-image]][depstat-url] + +## Information + +<table> +<tr> +<td>Package</td><td>gulp-util</td> +</tr> +<tr> +<td>Description</td> +<td>Utility functions for gulp plugins</td> +</tr> +<tr> +<td>Node Version</td> +<td>>= 0.9</td> +</tr> +</table> + +## Usage + +```javascript +var gutil = require('gulp-util'); + +gutil.log('stuff happened', 'Really it did', gutil.colors.cyan('123')); +gutil.beep(); + +gutil.replaceExtension('file.coffee', '.js'); // file.js + +var opt = { + name: 'todd', + file: someGulpFile +}; +gutil.template('test <%= name %> <%= file.path %>', opt) // test todd /js/hi.js +``` + +### log(msg...) + +Logs stuff. Already prefixed with [gulp] and all that. Use the right colors for values. If you pass in multiple arguments it will join them by a space. + +``` +values (files, module names, etc.) = magenta +numbers (times, counts, etc) = cyan +``` + +### replaceExtension(path, newExtension) + +Replaces a file extension in a path. Returns the new path. + +### isStream(obj) + +Returns true or false if an object is a stream. + +### isBuffer(obj) + +Returns true or false if an object is a Buffer. + +### template(string[, data]) + +This is a lodash.template function wrapper. You must pass in a valid gulp file object so it is available to the user or it will error. You can not configure any of the delimiters. Look at the [lodash docs](http://lodash.com/docs#template) for more info. + +## new File(obj) + +This is just [vinyl](https://github.com/wearefractal/vinyl) + +```javascript +var file = new gutil.File({ + base: join(__dirname, './fixtures/'), + cwd: __dirname, + path: join(__dirname, './fixtures/test.coffee') +}); +``` + +## noop() + +Returns a stream that does nothing but pass data straight through. + +```javascript +// gulp should be called like this : +// $ gulp --type production +gulp.task('scripts', function() { + gulp.src('src/**/*.js') + .pipe(concat('script.js')) + .pipe(gutil.env.type === 'production' ? uglify() : gutil.noop()) + .pipe(gulp.dest('dist/'); +}); +``` + +## buffer(cb) + +This is similar to es.wait but instead of buffering text into one string it buffers anything into an array (so very useful for file objects). + +Returns a stream that can be piped to. + +The stream will emit one data event after the stream piped to it has ended. The data will be the same array passed to the callback. + +Callback is optional and receives two arguments: error and data + +```javascript +gulp.src('stuff/*.js') + .pipe(gutil.buffer(function(err, files){ + + }); +``` + +## new PluginError(pluginName, message[, options]) + +- pluginName should be the module name of your plugin +- message can be a string or an existing error +- By default the stack will not be shown. Set `options.showStack` to true if you think the stack is important for your error. +- If you pass an error in as the message the stack will be pulled from that, otherwise one will be created. +- Note that if you pass in a custom stack string you need to include the message along with that. + +These are all acceptable forms of instantiation: + +```javascript +var err = new gutil.PluginError('test', { + message: 'something broke' +}); + +var err = new gutil.PluginError({ + plugin: 'test', + message: 'something broke' +}); + +var err = new gutil.PluginError('test', 'something broke'); + +var err = new gutil.PluginError('test', 'something broke', {showStack: true}); + +var existingError = new Error('OMG'); +var err = new gutil.PluginError('test', existingError, {showStack: true}); +``` + +[npm-url]: https://npmjs.org/package/gulp-util +[npm-image]: https://badge.fury.io/js/gulp-util.svg +[travis-url]: https://travis-ci.org/gulpjs/gulp-util +[travis-image]: https://travis-ci.org/gulpjs/gulp-util.svg?branch=master +[coveralls-url]: https://coveralls.io/r/gulpjs/gulp-util +[coveralls-image]: https://coveralls.io/repos/gulpjs/gulp-util/badge.png +[depstat-url]: https://david-dm.org/gulpjs/gulp-util +[depstat-image]: https://david-dm.org/gulpjs/gulp-util.svg diff --git a/node_modules/gulp-sym/node_modules/gulp-util/index.js b/node_modules/gulp-sym/node_modules/gulp-util/index.js new file mode 100644 index 000000000..6746ee4be --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/index.js @@ -0,0 +1,18 @@ +module.exports = { + File: require('./lib/File'), + replaceExtension: require('./lib/replaceExtension'), + colors: require('./lib/colors'), + date: require('./lib/date'), + log: require('./lib/log'), + template: require('./lib/template'), + env: require('./lib/env'), + beep: require('./lib/beep'), + noop: require('./lib/noop'), + isStream: require('./lib/isStream'), + isBuffer: require('./lib/isBuffer'), + isNull: require('./lib/isNull'), + linefeed: require('./lib/linefeed'), + combine: require('./lib/combine'), + buffer: require('./lib/buffer'), + PluginError: require('./lib/PluginError') +};
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/gulp-util/lib/File.js b/node_modules/gulp-sym/node_modules/gulp-util/lib/File.js new file mode 100644 index 000000000..690a508a6 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/lib/File.js @@ -0,0 +1 @@ +module.exports = require('vinyl');
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/gulp-util/lib/PluginError.js b/node_modules/gulp-sym/node_modules/gulp-util/lib/PluginError.js new file mode 100644 index 000000000..6640346ed --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/lib/PluginError.js @@ -0,0 +1,64 @@ +var util = require('util'); +var colors = require('./colors'); + +// wow what a clusterfuck +var parseOptions = function(plugin, message, opt) { + if (!opt) opt = {}; + if (typeof plugin === 'object') { + opt = plugin; + } else if (message instanceof Error) { + opt.error = message; + opt.plugin = plugin; + } else if (typeof message === 'object') { + opt = message; + opt.plugin = plugin; + } else if (typeof opt === 'object') { + opt.plugin = plugin; + opt.message = message; + } + return opt; +}; + +function PluginError(plugin, message, opt) { + if (!(this instanceof PluginError)) throw new Error('Call PluginError using new'); + + Error.call(this); + + var options = parseOptions(plugin, message, opt); + + this.plugin = options.plugin; + this.showStack = options.showStack === true; + + var properties = ['name', 'message', 'fileName', 'lineNumber', 'stack']; + + // if options has an error, grab details from it + if (options.error) { + properties.forEach(function(prop) { + if (prop in options.error) this[prop] = options.error[prop]; + }, this); + } + + // options object can override + properties.forEach(function(prop) { + if (prop in options) this[prop] = options[prop]; + }, this); + + // defaults + if (!this.name) this.name = 'Error'; + + // TODO: figure out why this explodes mocha + if (!this.stack) Error.captureStackTrace(this, arguments.callee || this.constructor); + + if (!this.plugin) throw new Error('Missing plugin name'); + if (!this.message) throw new Error('Missing error message'); +} + +util.inherits(PluginError, Error); + +PluginError.prototype.toString = function () { + var sig = this.name+' in plugin \''+colors.cyan(this.plugin)+'\''; + var msg = this.showStack ? (this._stack || this.stack) : this.message; + return sig+'\n'+msg; +}; + +module.exports = PluginError; diff --git a/node_modules/gulp-sym/node_modules/gulp-util/lib/beep.js b/node_modules/gulp-sym/node_modules/gulp-util/lib/beep.js new file mode 100644 index 000000000..5473d7548 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/lib/beep.js @@ -0,0 +1,3 @@ +module.exports = function() { + process.stdout.write('\x07'); +}; diff --git a/node_modules/gulp-sym/node_modules/gulp-util/lib/buffer.js b/node_modules/gulp-sym/node_modules/gulp-util/lib/buffer.js new file mode 100644 index 000000000..4cb064aca --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/lib/buffer.js @@ -0,0 +1,15 @@ +var through = require('through2'); + +module.exports = function(fn) { + var buf = []; + var end = function(cb) { + this.push(buf); + cb(); + if(fn) fn(null, buf); + }; + var push = function(data, enc, cb) { + buf.push(data); + cb(); + }; + return through.obj(push, end); +};
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/gulp-util/lib/colors.js b/node_modules/gulp-sym/node_modules/gulp-util/lib/colors.js new file mode 100644 index 000000000..bc8049406 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/lib/colors.js @@ -0,0 +1 @@ +module.exports = require('chalk');
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/gulp-util/lib/combine.js b/node_modules/gulp-sym/node_modules/gulp-util/lib/combine.js new file mode 100644 index 000000000..f20712d20 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/lib/combine.js @@ -0,0 +1,11 @@ +var pipeline = require('multipipe'); + +module.exports = function(){ + var args = arguments; + if (args.length === 1 && Array.isArray(args[0])) { + args = args[0]; + } + return function(){ + return pipeline.apply(pipeline, args); + }; +}; diff --git a/node_modules/gulp-sym/node_modules/gulp-util/lib/date.js b/node_modules/gulp-sym/node_modules/gulp-util/lib/date.js new file mode 100644 index 000000000..935793cc6 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/lib/date.js @@ -0,0 +1 @@ +module.exports = require('dateformat');
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/gulp-util/lib/env.js b/node_modules/gulp-sym/node_modules/gulp-util/lib/env.js new file mode 100644 index 000000000..ea1e03e4a --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/lib/env.js @@ -0,0 +1,4 @@ +var parseArgs = require('minimist'); +var argv = parseArgs(process.argv.slice(2)); + +module.exports = argv;
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/gulp-util/lib/isBuffer.js b/node_modules/gulp-sym/node_modules/gulp-util/lib/isBuffer.js new file mode 100644 index 000000000..0e23782c4 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/lib/isBuffer.js @@ -0,0 +1,7 @@ +var buf = require('buffer'); +var Buffer = buf.Buffer; + +// could use Buffer.isBuffer but this is the same exact thing... +module.exports = function(o) { + return typeof o === 'object' && o instanceof Buffer; +};
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/gulp-util/lib/isNull.js b/node_modules/gulp-sym/node_modules/gulp-util/lib/isNull.js new file mode 100644 index 000000000..403bb30e8 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/lib/isNull.js @@ -0,0 +1,3 @@ +module.exports = function(v) { + return v === null; +};
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/gulp-util/lib/isStream.js b/node_modules/gulp-sym/node_modules/gulp-util/lib/isStream.js new file mode 100644 index 000000000..9ce0929b0 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/lib/isStream.js @@ -0,0 +1,5 @@ +var Stream = require('stream').Stream; + +module.exports = function(o) { + return !!o && o instanceof Stream; +};
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/gulp-util/lib/linefeed.js b/node_modules/gulp-sym/node_modules/gulp-util/lib/linefeed.js new file mode 100644 index 000000000..5b0dfa4b1 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/lib/linefeed.js @@ -0,0 +1 @@ +module.exports = '\n';
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/gulp-util/lib/log.js b/node_modules/gulp-sym/node_modules/gulp-util/lib/log.js new file mode 100644 index 000000000..e33d15ed9 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/lib/log.js @@ -0,0 +1,10 @@ +var colors = require('./colors'); +var date = require('./date'); + +module.exports = function(){ + var time = '['+colors.grey(date(new Date(), 'HH:MM:ss'))+']'; + var args = Array.prototype.slice.call(arguments); + args.unshift(time); + console.log.apply(console, args); + return this; +}; diff --git a/node_modules/gulp-sym/node_modules/gulp-util/lib/noop.js b/node_modules/gulp-sym/node_modules/gulp-util/lib/noop.js new file mode 100644 index 000000000..7862cb161 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/lib/noop.js @@ -0,0 +1,5 @@ +var through = require('through2'); + +module.exports = function () { + return through.obj(); +}; diff --git a/node_modules/gulp-sym/node_modules/gulp-util/lib/replaceExtension.js b/node_modules/gulp-sym/node_modules/gulp-util/lib/replaceExtension.js new file mode 100644 index 000000000..3f76938e4 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/lib/replaceExtension.js @@ -0,0 +1,9 @@ +var path = require('path'); + +module.exports = function(npath, ext) { + if (typeof npath !== 'string') return npath; + if (npath.length === 0) return npath; + + var nFileName = path.basename(npath, path.extname(npath))+ext; + return path.join(path.dirname(npath), nFileName); +};
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/gulp-util/lib/template.js b/node_modules/gulp-sym/node_modules/gulp-util/lib/template.js new file mode 100644 index 000000000..c467820f3 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/lib/template.js @@ -0,0 +1,19 @@ +var template = require('lodash.template'); +var reInterpolate = require('lodash._reinterpolate'); + +var forcedSettings = { + escape: /<%-([\s\S]+?)%>/g, + evaluate: /<%([\s\S]+?)%>/g, + interpolate: reInterpolate +}; + +module.exports = function(tmpl, data){ + var fn = template(tmpl, null, forcedSettings); + + var wrapped = function(o) { + if (typeof o === 'undefined' || typeof o.file === 'undefined') throw new Error('Failed to provide the current file as "file" to the template'); + return fn(o); + }; + + return (data ? wrapped(data) : wrapped); +}; diff --git a/node_modules/gulp-sym/node_modules/gulp-util/node_modules/.bin/dateformat b/node_modules/gulp-sym/node_modules/gulp-util/node_modules/.bin/dateformat new file mode 120000 index 000000000..017f21508 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/node_modules/.bin/dateformat @@ -0,0 +1 @@ +../../../dateformat/bin/cli.js
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/gulp-util/package.json b/node_modules/gulp-sym/node_modules/gulp-util/package.json new file mode 100644 index 000000000..f4bd92d5e --- /dev/null +++ b/node_modules/gulp-sym/node_modules/gulp-util/package.json @@ -0,0 +1,44 @@ +{ + "name": "gulp-util", + "description": "Utility functions for gulp plugins", + "version": "2.2.20", + "homepage": "http://github.com/wearefractal/gulp-util", + "repository": "git://github.com/wearefractal/gulp-util.git", + "author": "Fractal <contact@wearefractal.com> (http://wearefractal.com/)", + "main": "./index.js", + "dependencies": { + "chalk": "^0.5.0", + "dateformat": "^1.0.7-1.2.3", + "lodash._reinterpolate": "^2.4.1", + "lodash.template": "^2.4.1", + "minimist": "^0.2.0", + "multipipe": "^0.1.0", + "through2": "^0.5.0", + "vinyl": "^0.2.1" + }, + "devDependencies": { + "mocha": "^1.17.0", + "should": "^4.0.0", + "mocha-lcov-reporter": "^0.0.1", + "coveralls": "^2.7.0", + "istanbul": "^0.2.3", + "rimraf": "^2.2.5", + "jshint": "^2.4.1", + "buffer-equal": "~0.0.1", + "lodash.templatesettings": "^2.4.1", + "event-stream": "^3.1.0" + }, + "scripts": { + "test": "mocha --reporter spec && jshint", + "coveralls": "istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage" + }, + "engines": { + "node": ">= 0.9" + }, + "licenses": [ + { + "type": "MIT", + "url": "http://github.com/wearefractal/gulp-util/raw/master/LICENSE" + } + ] +} diff --git a/node_modules/gulp-sym/node_modules/has-ansi/cli.js b/node_modules/gulp-sym/node_modules/has-ansi/cli.js new file mode 100755 index 000000000..e0956fcc7 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/has-ansi/cli.js @@ -0,0 +1,53 @@ +#!/usr/bin/env node +'use strict'; +var pkg = require('./package.json'); +var hasAnsi = require('./'); +var input = process.argv[2]; + +function stdin(cb) { + var ret = ''; + process.stdin.setEncoding('utf8'); + process.stdin.on('data', function (data) { + ret += data; + }); + process.stdin.on('end', function () { + cb(ret); + }); +} + +function help() { + console.log([ + pkg.description, + '', + 'Usage', + ' $ has-ansi <string>', + ' $ echo <string> | has-ansi', + '', + 'Exits with code 0 if input has ANSI escape codes and 1 if not' + ].join('\n')); +} + +function init(data) { + process.exit(hasAnsi(data) ? 0 : 1); +} + +if (process.argv.indexOf('--help') !== -1) { + help(); + return; +} + +if (process.argv.indexOf('--version') !== -1) { + console.log(pkg.version); + return; +} + +if (process.stdin.isTTY) { + if (!input) { + help(); + return; + } + + init(input); +} else { + stdin(init); +} diff --git a/node_modules/gulp-sym/node_modules/has-ansi/index.js b/node_modules/gulp-sym/node_modules/has-ansi/index.js new file mode 100644 index 000000000..98fae0676 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/has-ansi/index.js @@ -0,0 +1,4 @@ +'use strict'; +var ansiRegex = require('ansi-regex'); +var re = new RegExp(ansiRegex().source); // remove the `g` flag +module.exports = re.test.bind(re); diff --git a/node_modules/gulp-sym/node_modules/has-ansi/package.json b/node_modules/gulp-sym/node_modules/has-ansi/package.json new file mode 100644 index 000000000..047ff0d07 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/has-ansi/package.json @@ -0,0 +1,57 @@ +{ + "name": "has-ansi", + "version": "0.1.0", + "description": "Check if a string has ANSI escape codes", + "license": "MIT", + "repository": "sindresorhus/has-ansi", + "bin": { + "has-ansi": "cli.js" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js", + "cli.js" + ], + "keywords": [ + "cli", + "bin", + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "string", + "tty", + "escape", + "shell", + "xterm", + "command-line", + "text", + "regex", + "regexp", + "re", + "match", + "test", + "find", + "pattern", + "has" + ], + "dependencies": { + "ansi-regex": "^0.2.0" + }, + "devDependencies": { + "mocha": "*" + } +} diff --git a/node_modules/gulp-sym/node_modules/has-ansi/readme.md b/node_modules/gulp-sym/node_modules/has-ansi/readme.md new file mode 100644 index 000000000..070221231 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/has-ansi/readme.md @@ -0,0 +1,45 @@ +# has-ansi [![Build Status](https://travis-ci.org/sindresorhus/has-ansi.svg?branch=master)](https://travis-ci.org/sindresorhus/has-ansi) + +> Check if a string has [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) + + +## Install + +```sh +$ npm install --save has-ansi +``` + + +## Usage + +```js +var hasAnsi = require('has-ansi'); + +hasAnsi('\u001b[4mcake\u001b[0m'); +//=> true + +hasAnsi('cake'); +//=> false +``` + + +## CLI + +```sh +$ npm install --global has-ansi +``` + +``` +$ has-ansi --help + +Usage + $ has-ansi <string> + $ echo <string> | has-ansi + +Exits with code 0 if input has ANSI escape codes and 1 if not +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/gulp-sym/node_modules/lodash.template/LICENSE.txt b/node_modules/gulp-sym/node_modules/lodash.template/LICENSE.txt new file mode 100644 index 000000000..49869bbab --- /dev/null +++ b/node_modules/gulp-sym/node_modules/lodash.template/LICENSE.txt @@ -0,0 +1,22 @@ +Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/> +Based on Underscore.js 1.5.2, copyright 2009-2013 Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/lodash.template/README.md b/node_modules/gulp-sym/node_modules/lodash.template/README.md new file mode 100644 index 000000000..e89bd0db6 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/lodash.template/README.md @@ -0,0 +1,15 @@ +# lodash.template v2.4.1 + +The [Lo-Dash](http://lodash.com/) function [`_.template`](http://lodash.com/docs#template) as a [Node.js](http://nodejs.org/) module generated by [lodash-cli](https://npmjs.org/package/lodash-cli). + +## Author + +| [![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](https://twitter.com/jdalton "Follow @jdalton on Twitter") | +|---| +| [John-David Dalton](http://allyoucanleet.com/) | + +## Contributors + +| [![twitter/blainebublitz](http://gravatar.com/avatar/ac1c67fd906c9fecd823ce302283b4c1?s=70)](https://twitter.com/blainebublitz "Follow @BlaineBublitz on Twitter") | [![twitter/kitcambridge](http://gravatar.com/avatar/6662a1d02f351b5ef2f8b4d815804661?s=70)](https://twitter.com/kitcambridge "Follow @kitcambridge on Twitter") | [![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") | +|---|---|---| +| [Blaine Bublitz](http://www.iceddev.com/) | [Kit Cambridge](http://kitcambridge.be/) | [Mathias Bynens](http://mathiasbynens.be/) | diff --git a/node_modules/gulp-sym/node_modules/lodash.template/index.js b/node_modules/gulp-sym/node_modules/lodash.template/index.js new file mode 100644 index 000000000..230f8ee86 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/lodash.template/index.js @@ -0,0 +1,216 @@ +/** + * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/> + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/> + * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE> + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license <http://lodash.com/license> + */ +var defaults = require('lodash.defaults'), + escape = require('lodash.escape'), + escapeStringChar = require('lodash._escapestringchar'), + keys = require('lodash.keys'), + reInterpolate = require('lodash._reinterpolate'), + templateSettings = require('lodash.templatesettings'), + values = require('lodash.values'); + +/** Used to match empty string literals in compiled template source */ +var reEmptyStringLeading = /\b__p \+= '';/g, + reEmptyStringMiddle = /\b(__p \+=) '' \+/g, + reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; + +/** + * Used to match ES6 template delimiters + * http://people.mozilla.org/~jorendorff/es6-draft.html#sec-literals-string-literals + */ +var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; + +/** Used to ensure capturing order of template delimiters */ +var reNoMatch = /($^)/; + +/** Used to match unescaped characters in compiled string literals */ +var reUnescapedString = /['\n\r\t\u2028\u2029\\]/g; + +/** + * A micro-templating method that handles arbitrary delimiters, preserves + * whitespace, and correctly escapes quotes within interpolated code. + * + * Note: In the development build, `_.template` utilizes sourceURLs for easier + * debugging. See http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl + * + * For more information on precompiling templates see: + * http://lodash.com/custom-builds + * + * For more information on Chrome extension sandboxes see: + * http://developer.chrome.com/stable/extensions/sandboxingEval.html + * + * @static + * @memberOf _ + * @category Utilities + * @param {string} text The template text. + * @param {Object} data The data object used to populate the text. + * @param {Object} [options] The options object. + * @param {RegExp} [options.escape] The "escape" delimiter. + * @param {RegExp} [options.evaluate] The "evaluate" delimiter. + * @param {Object} [options.imports] An object to import into the template as local variables. + * @param {RegExp} [options.interpolate] The "interpolate" delimiter. + * @param {string} [sourceURL] The sourceURL of the template's compiled source. + * @param {string} [variable] The data object variable name. + * @returns {Function|string} Returns a compiled function when no `data` object + * is given, else it returns the interpolated text. + * @example + * + * // using the "interpolate" delimiter to create a compiled template + * var compiled = _.template('hello <%= name %>'); + * compiled({ 'name': 'fred' }); + * // => 'hello fred' + * + * // using the "escape" delimiter to escape HTML in data property values + * _.template('<b><%- value %></b>', { 'value': '<script>' }); + * // => '<b><script></b>' + * + * // using the "evaluate" delimiter to generate HTML + * var list = '<% _.forEach(people, function(name) { %><li><%- name %></li><% }); %>'; + * _.template(list, { 'people': ['fred', 'barney'] }); + * // => '<li>fred</li><li>barney</li>' + * + * // using the ES6 delimiter as an alternative to the default "interpolate" delimiter + * _.template('hello ${ name }', { 'name': 'pebbles' }); + * // => 'hello pebbles' + * + * // using the internal `print` function in "evaluate" delimiters + * _.template('<% print("hello " + name); %>!', { 'name': 'barney' }); + * // => 'hello barney!' + * + * // using a custom template delimiters + * _.templateSettings = { + * 'interpolate': /{{([\s\S]+?)}}/g + * }; + * + * _.template('hello {{ name }}!', { 'name': 'mustache' }); + * // => 'hello mustache!' + * + * // using the `imports` option to import jQuery + * var list = '<% jq.each(people, function(name) { %><li><%- name %></li><% }); %>'; + * _.template(list, { 'people': ['fred', 'barney'] }, { 'imports': { 'jq': jQuery } }); + * // => '<li>fred</li><li>barney</li>' + * + * // using the `sourceURL` option to specify a custom sourceURL for the template + * var compiled = _.template('hello <%= name %>', null, { 'sourceURL': '/basic/greeting.jst' }); + * compiled(data); + * // => find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector + * + * // using the `variable` option to ensure a with-statement isn't used in the compiled template + * var compiled = _.template('hi <%= data.name %>!', null, { 'variable': 'data' }); + * compiled.source; + * // => function(data) { + * var __t, __p = '', __e = _.escape; + * __p += 'hi ' + ((__t = ( data.name )) == null ? '' : __t) + '!'; + * return __p; + * } + * + * // using the `source` property to inline compiled templates for meaningful + * // line numbers in error messages and a stack trace + * fs.writeFileSync(path.join(cwd, 'jst.js'), '\ + * var JST = {\ + * "main": ' + _.template(mainText).source + '\ + * };\ + * '); + */ +function template(text, data, options) { + // based on John Resig's `tmpl` implementation + // http://ejohn.org/blog/javascript-micro-templating/ + // and Laura Doktorova's doT.js + // https://github.com/olado/doT + var settings = templateSettings.imports._.templateSettings || templateSettings; + text = String(text || ''); + + // avoid missing dependencies when `iteratorTemplate` is not defined + options = defaults({}, options, settings); + + var imports = defaults({}, options.imports, settings.imports), + importsKeys = keys(imports), + importsValues = values(imports); + + var isEvaluating, + index = 0, + interpolate = options.interpolate || reNoMatch, + source = "__p += '"; + + // compile the regexp to match each delimiter + var reDelimiters = RegExp( + (options.escape || reNoMatch).source + '|' + + interpolate.source + '|' + + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' + + (options.evaluate || reNoMatch).source + '|$' + , 'g'); + + text.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) { + interpolateValue || (interpolateValue = esTemplateValue); + + // escape characters that cannot be included in string literals + source += text.slice(index, offset).replace(reUnescapedString, escapeStringChar); + + // replace delimiters with snippets + if (escapeValue) { + source += "' +\n__e(" + escapeValue + ") +\n'"; + } + if (evaluateValue) { + isEvaluating = true; + source += "';\n" + evaluateValue + ";\n__p += '"; + } + if (interpolateValue) { + source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'"; + } + index = offset + match.length; + + // the JS engine embedded in Adobe products requires returning the `match` + // string in order to produce the correct `offset` value + return match; + }); + + source += "';\n"; + + // if `variable` is not specified, wrap a with-statement around the generated + // code to add the data object to the top of the scope chain + var variable = options.variable, + hasVariable = variable; + + if (!hasVariable) { + variable = 'obj'; + source = 'with (' + variable + ') {\n' + source + '\n}\n'; + } + // cleanup code by stripping empty strings + source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source) + .replace(reEmptyStringMiddle, '$1') + .replace(reEmptyStringTrailing, '$1;'); + + // frame code as the function body + source = 'function(' + variable + ') {\n' + + (hasVariable ? '' : variable + ' || (' + variable + ' = {});\n') + + "var __t, __p = '', __e = _.escape" + + (isEvaluating + ? ', __j = Array.prototype.join;\n' + + "function print() { __p += __j.call(arguments, '') }\n" + : ';\n' + ) + + source + + 'return __p\n}'; + + try { + var result = Function(importsKeys, 'return ' + source ).apply(undefined, importsValues); + } catch(e) { + e.source = source; + throw e; + } + if (data) { + return result(data); + } + // provide the compiled function's source by its `toString` method, in + // supported environments, or the `source` property as a convenience for + // inlining compiled templates during the build process + result.source = source; + return result; +} + +module.exports = template; diff --git a/node_modules/gulp-sym/node_modules/lodash.template/package.json b/node_modules/gulp-sym/node_modules/lodash.template/package.json new file mode 100644 index 000000000..56b517ec4 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/lodash.template/package.json @@ -0,0 +1,26 @@ +{ + "name": "lodash.template", + "version": "2.4.1", + "description": "The Lo-Dash function `_.template` as a Node.js module generated by lodash-cli.", + "homepage": "http://lodash.com/custom-builds", + "license": "MIT", + "keywords": ["functional", "lodash", "lodash-modularized", "server", "util"], + "author": "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)", + "contributors": [ + "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)", + "Blaine Bublitz <blaine@iceddev.com> (http://www.iceddev.com/)", + "Kit Cambridge <github@kitcambridge.be> (http://kitcambridge.be/)", + "Mathias Bynens <mathias@qiwi.be> (http://mathiasbynens.be/)" + ], + "bugs": "https://github.com/lodash/lodash-cli/issues", + "repository": { "type": "git", "url": "https://github.com/lodash/lodash-cli.git" }, + "dependencies": { + "lodash.defaults": "~2.4.1", + "lodash.escape": "~2.4.1", + "lodash._escapestringchar": "~2.4.1", + "lodash.keys": "~2.4.1", + "lodash._reinterpolate": "~2.4.1", + "lodash.templatesettings": "~2.4.1", + "lodash.values": "~2.4.1" + } +} diff --git a/node_modules/gulp-sym/node_modules/lodash.templatesettings/LICENSE.txt b/node_modules/gulp-sym/node_modules/lodash.templatesettings/LICENSE.txt new file mode 100644 index 000000000..49869bbab --- /dev/null +++ b/node_modules/gulp-sym/node_modules/lodash.templatesettings/LICENSE.txt @@ -0,0 +1,22 @@ +Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/> +Based on Underscore.js 1.5.2, copyright 2009-2013 Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/lodash.templatesettings/README.md b/node_modules/gulp-sym/node_modules/lodash.templatesettings/README.md new file mode 100644 index 000000000..d9ce72bcf --- /dev/null +++ b/node_modules/gulp-sym/node_modules/lodash.templatesettings/README.md @@ -0,0 +1,15 @@ +# lodash.templatesettings v2.4.1 + +The [Lo-Dash](http://lodash.com/) object [`_.templateSettings`](http://lodash.com/docs#templateSettings) as a [Node.js](http://nodejs.org/) module generated by [lodash-cli](https://npmjs.org/package/lodash-cli). + +## Author + +| [![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](https://twitter.com/jdalton "Follow @jdalton on Twitter") | +|---| +| [John-David Dalton](http://allyoucanleet.com/) | + +## Contributors + +| [![twitter/blainebublitz](http://gravatar.com/avatar/ac1c67fd906c9fecd823ce302283b4c1?s=70)](https://twitter.com/blainebublitz "Follow @BlaineBublitz on Twitter") | [![twitter/kitcambridge](http://gravatar.com/avatar/6662a1d02f351b5ef2f8b4d815804661?s=70)](https://twitter.com/kitcambridge "Follow @kitcambridge on Twitter") | [![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") | +|---|---|---| +| [Blaine Bublitz](http://www.iceddev.com/) | [Kit Cambridge](http://kitcambridge.be/) | [Mathias Bynens](http://mathiasbynens.be/) | diff --git a/node_modules/gulp-sym/node_modules/lodash.templatesettings/index.js b/node_modules/gulp-sym/node_modules/lodash.templatesettings/index.js new file mode 100644 index 000000000..bba7e231c --- /dev/null +++ b/node_modules/gulp-sym/node_modules/lodash.templatesettings/index.js @@ -0,0 +1,73 @@ +/** + * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/> + * Build: `lodash modularize modern exports="npm" -o ./npm/` + * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/> + * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE> + * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license <http://lodash.com/license> + */ +var escape = require('lodash.escape'), + reInterpolate = require('lodash._reinterpolate'); + +/** + * By default, the template delimiters used by Lo-Dash are similar to those in + * embedded Ruby (ERB). Change the following template settings to use alternative + * delimiters. + * + * @static + * @memberOf _ + * @type Object + */ +var templateSettings = { + + /** + * Used to detect `data` property values to be HTML-escaped. + * + * @memberOf _.templateSettings + * @type RegExp + */ + 'escape': /<%-([\s\S]+?)%>/g, + + /** + * Used to detect code to be evaluated. + * + * @memberOf _.templateSettings + * @type RegExp + */ + 'evaluate': /<%([\s\S]+?)%>/g, + + /** + * Used to detect `data` property values to inject. + * + * @memberOf _.templateSettings + * @type RegExp + */ + 'interpolate': reInterpolate, + + /** + * Used to reference the data object in the template text. + * + * @memberOf _.templateSettings + * @type string + */ + 'variable': '', + + /** + * Used to import variables into the compiled template. + * + * @memberOf _.templateSettings + * @type Object + */ + 'imports': { + + /** + * A reference to the `lodash` function. + * + * @memberOf _.templateSettings.imports + * @type Function + */ + '_': { 'escape': escape } + } +}; + +module.exports = templateSettings; diff --git a/node_modules/gulp-sym/node_modules/lodash.templatesettings/package.json b/node_modules/gulp-sym/node_modules/lodash.templatesettings/package.json new file mode 100644 index 000000000..e4959713d --- /dev/null +++ b/node_modules/gulp-sym/node_modules/lodash.templatesettings/package.json @@ -0,0 +1,21 @@ +{ + "name": "lodash.templatesettings", + "version": "2.4.1", + "description": "The Lo-Dash object `_.templateSettings` as a Node.js module generated by lodash-cli.", + "homepage": "http://lodash.com/custom-builds", + "license": "MIT", + "keywords": ["functional", "lodash", "lodash-modularized", "server", "util"], + "author": "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)", + "contributors": [ + "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)", + "Blaine Bublitz <blaine@iceddev.com> (http://www.iceddev.com/)", + "Kit Cambridge <github@kitcambridge.be> (http://kitcambridge.be/)", + "Mathias Bynens <mathias@qiwi.be> (http://mathiasbynens.be/)" + ], + "bugs": "https://github.com/lodash/lodash-cli/issues", + "repository": { "type": "git", "url": "https://github.com/lodash/lodash-cli.git" }, + "dependencies": { + "lodash.escape": "~2.4.1", + "lodash._reinterpolate": "~2.4.1" + } +} diff --git a/node_modules/gulp-sym/node_modules/minimist/.travis.yml b/node_modules/gulp-sym/node_modules/minimist/.travis.yml new file mode 100644 index 000000000..cc4dba29d --- /dev/null +++ b/node_modules/gulp-sym/node_modules/minimist/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "0.8" + - "0.10" diff --git a/node_modules/gulp-sym/node_modules/minimist/LICENSE b/node_modules/gulp-sym/node_modules/minimist/LICENSE new file mode 100644 index 000000000..ee27ba4b4 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/minimist/LICENSE @@ -0,0 +1,18 @@ +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/gulp-sym/node_modules/minimist/example/parse.js b/node_modules/gulp-sym/node_modules/minimist/example/parse.js new file mode 100644 index 000000000..abff3e8ee --- /dev/null +++ b/node_modules/gulp-sym/node_modules/minimist/example/parse.js @@ -0,0 +1,2 @@ +var argv = require('../')(process.argv.slice(2)); +console.dir(argv); diff --git a/node_modules/gulp-sym/node_modules/minimist/index.js b/node_modules/gulp-sym/node_modules/minimist/index.js new file mode 100644 index 000000000..9549c96fb --- /dev/null +++ b/node_modules/gulp-sym/node_modules/minimist/index.js @@ -0,0 +1,200 @@ +module.exports = function (args, opts) { + if (!opts) opts = {}; + + var flags = { bools : {}, strings : {} }; + + if (typeof opts['boolean'] === 'boolean' && opts['boolean']) { + flags.allBools = true; + } else { + [].concat(opts['boolean']).filter(Boolean).forEach(function (key) { + flags.bools[key] = true; + }); + } + + var aliases = {}; + Object.keys(opts.alias || {}).forEach(function (key) { + aliases[key] = [].concat(opts.alias[key]); + aliases[key].forEach(function (x) { + aliases[x] = [key].concat(aliases[key].filter(function (y) { + return x !== y; + })); + }); + }); + + [].concat(opts.string).filter(Boolean).forEach(function (key) { + flags.strings[key] = true; + if (aliases[key]) { + flags.strings[aliases[key]] = true; + } + }); + + var defaults = opts['default'] || {}; + + var argv = { _ : [] }; + Object.keys(flags.bools).forEach(function (key) { + setArg(key, defaults[key] === undefined ? false : defaults[key]); + }); + + var notFlags = []; + + if (args.indexOf('--') !== -1) { + notFlags = args.slice(args.indexOf('--')+1); + args = args.slice(0, args.indexOf('--')); + } + + function setArg (key, val) { + var value = !flags.strings[key] && isNumber(val) + ? Number(val) : val + ; + setKey(argv, key.split('.'), value); + + (aliases[key] || []).forEach(function (x) { + setKey(argv, x.split('.'), value); + }); + } + + for (var i = 0; i < args.length; i++) { + var arg = args[i]; + + if (/^--.+=/.test(arg)) { + // Using [\s\S] instead of . because js doesn't support the + // 'dotall' regex modifier. See: + // http://stackoverflow.com/a/1068308/13216 + var m = arg.match(/^--([^=]+)=([\s\S]*)$/); + setArg(m[1], m[2]); + } + else if (/^--no-.+/.test(arg)) { + var key = arg.match(/^--no-(.+)/)[1]; + setArg(key, false); + } + else if (/^--.+/.test(arg)) { + var key = arg.match(/^--(.+)/)[1]; + var next = args[i + 1]; + if (next !== undefined && !/^-/.test(next) + && !flags.bools[key] + && !flags.allBools + && (aliases[key] ? !flags.bools[aliases[key]] : true)) { + setArg(key, next); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next === 'true'); + i++; + } + else { + setArg(key, flags.strings[key] ? '' : true); + } + } + else if (/^-[^-]+/.test(arg)) { + var letters = arg.slice(1,-1).split(''); + + var broken = false; + for (var j = 0; j < letters.length; j++) { + var next = arg.slice(j+2); + + if (next === '-') { + setArg(letters[j], next) + continue; + } + + if (/[A-Za-z]/.test(letters[j]) + && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) { + setArg(letters[j], next); + broken = true; + break; + } + + if (letters[j+1] && letters[j+1].match(/\W/)) { + setArg(letters[j], arg.slice(j+2)); + broken = true; + break; + } + else { + setArg(letters[j], flags.strings[letters[j]] ? '' : true); + } + } + + var key = arg.slice(-1)[0]; + if (!broken && key !== '-') { + if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1]) + && !flags.bools[key] + && (aliases[key] ? !flags.bools[aliases[key]] : true)) { + setArg(key, args[i+1]); + i++; + } + else if (args[i+1] && /true|false/.test(args[i+1])) { + setArg(key, args[i+1] === 'true'); + i++; + } + else { + setArg(key, flags.strings[key] ? '' : true); + } + } + } + else { + argv._.push( + flags.strings['_'] || !isNumber(arg) ? arg : Number(arg) + ); + } + } + + Object.keys(defaults).forEach(function (key) { + if (!hasKey(argv, key.split('.'))) { + setKey(argv, key.split('.'), defaults[key]); + + (aliases[key] || []).forEach(function (x) { + setKey(argv, x.split('.'), defaults[key]); + }); + } + }); + + if (opts['--']) { + argv['--'] = new Array(); + notFlags.forEach(function(key) { + argv['--'].push(key); + }); + } + else { + notFlags.forEach(function(key) { + argv._.push(key); + }); + } + + return argv; +}; + +function hasKey (obj, keys) { + var o = obj; + keys.slice(0,-1).forEach(function (key) { + o = (o[key] || {}); + }); + + var key = keys[keys.length - 1]; + return key in o; +} + +function setKey (obj, keys, value) { + var o = obj; + keys.slice(0,-1).forEach(function (key) { + if (o[key] === undefined) o[key] = {}; + o = o[key]; + }); + + var key = keys[keys.length - 1]; + if (o[key] === undefined || typeof o[key] === 'boolean') { + o[key] = value; + } + else if (Array.isArray(o[key])) { + o[key].push(value); + } + else { + o[key] = [ o[key], value ]; + } +} + +function isNumber (x) { + if (typeof x === 'number') return true; + if (/^0x[0-9a-f]+$/i.test(x)) return true; + return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); +} + diff --git a/node_modules/gulp-sym/node_modules/minimist/package.json b/node_modules/gulp-sym/node_modules/minimist/package.json new file mode 100644 index 000000000..5935fc34a --- /dev/null +++ b/node_modules/gulp-sym/node_modules/minimist/package.json @@ -0,0 +1,40 @@ +{ + "name": "minimist", + "version": "0.2.0", + "description": "parse argument options", + "main": "index.js", + "devDependencies": { + "tape": "~1.0.4", + "tap": "~0.4.0" + }, + "scripts": { + "test": "tap test/*.js" + }, + "testling" : { + "files" : "test/*.js", + "browsers" : [ + "ie/6..latest", + "ff/5", "firefox/latest", + "chrome/10", "chrome/latest", + "safari/5.1", "safari/latest", + "opera/12" + ] + }, + "repository": { + "type": "git", + "url": "git://github.com/substack/minimist.git" + }, + "homepage": "https://github.com/substack/minimist", + "keywords": [ + "argv", + "getopt", + "parser", + "optimist" + ], + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "license": "MIT" +} diff --git a/node_modules/gulp-sym/node_modules/minimist/readme.markdown b/node_modules/gulp-sym/node_modules/minimist/readme.markdown new file mode 100644 index 000000000..82532210a --- /dev/null +++ b/node_modules/gulp-sym/node_modules/minimist/readme.markdown @@ -0,0 +1,86 @@ +# minimist + +parse argument options + +This module is the guts of optimist's argument parser without all the +fanciful decoration. + +[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist) + +[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist) + +# example + +``` js +var argv = require('minimist')(process.argv.slice(2)); +console.dir(argv); +``` + +``` +$ node example/parse.js -a beep -b boop +{ _: [], a: 'beep', b: 'boop' } +``` + +``` +$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz +{ _: [ 'foo', 'bar', 'baz' ], + x: 3, + y: 4, + n: 5, + a: true, + b: true, + c: true, + beep: 'boop' } +``` + +# methods + +``` js +var parseArgs = require('minimist') +``` + +## var argv = parseArgs(args, opts={}) + +Return an argument object `argv` populated with the array arguments from `args`. + +`argv._` contains all the arguments that didn't have an option associated with +them. + +Numeric-looking arguments will be returned as numbers unless `opts.string` or +`opts.boolean` is set for that argument name. + +Any arguments after `'--'` will not be parsed and will end up in `argv._`. + +options can be: + +* `opts.string` - a string or array of strings argument names to always treat as +strings +* `opts.boolean` - a boolean, string or array of strings to always treat as +booleans. if `true` will treat all double hyphenated arguments without equal signs +as boolean (e.g. affects `--foo`, not `-f` or `--foo=bar`) +* `opts.alias` - an object mapping string names to strings or arrays of string +argument names to use as aliases +* `opts.default` - an object mapping string argument names to default values +* `opts['--']` - when true, populate `argv._` with everything before the `--` +and `argv['--']` with everything after the `--`. Here's an example: + +``` +> require('./')('one two three -- four five --six'.split(' '), { '--': true }) +{ _: [ 'one', 'two', 'three' ], + '--': [ 'four', 'five', '--six' ] } +``` + +Note that with `opts['--']` set, parsing for arguments still stops after the +`--`. + +# install + +With [npm](https://npmjs.org) do: + +``` +npm install minimist +``` + +# license + +MIT diff --git a/node_modules/gulp-sym/node_modules/minimist/test/all_bool.js b/node_modules/gulp-sym/node_modules/minimist/test/all_bool.js new file mode 100644 index 000000000..4575ec0b4 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/minimist/test/all_bool.js @@ -0,0 +1,32 @@ +var parse = require('../'); +var test = require('tape'); + +test('flag boolean true (default all --args to boolean)', function (t) { + var argv = parse(['moo', '--honk', 'cow'], { + boolean: true + }); + + t.deepEqual(argv, { + honk: true, + _: ['moo', 'cow'] + }); + + t.deepEqual(typeof argv.honk, 'boolean'); + t.end(); +}); + +test('flag boolean true only affects double hyphen arguments without equals signs', function (t) { + var argv = parse(['moo', '--honk', 'cow', '-p', '55', '--tacos=good'], { + boolean: true + }); + + t.deepEqual(argv, { + honk: true, + tacos: 'good', + p: '55', + _: ['moo', 'cow'] + }); + + t.deepEqual(typeof argv.honk, 'boolean'); + t.end(); +}); diff --git a/node_modules/gulp-sym/node_modules/minimist/test/bool.js b/node_modules/gulp-sym/node_modules/minimist/test/bool.js new file mode 100644 index 000000000..749e083cb --- /dev/null +++ b/node_modules/gulp-sym/node_modules/minimist/test/bool.js @@ -0,0 +1,119 @@ +var parse = require('../'); +var test = require('tape'); + +test('flag boolean default false', function (t) { + var argv = parse(['moo'], { + boolean: ['t', 'verbose'], + default: { verbose: false, t: false } + }); + + t.deepEqual(argv, { + verbose: false, + t: false, + _: ['moo'] + }); + + t.deepEqual(typeof argv.verbose, 'boolean'); + t.deepEqual(typeof argv.t, 'boolean'); + t.end(); + +}); + +test('boolean groups', function (t) { + var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], { + boolean: ['x','y','z'] + }); + + t.deepEqual(argv, { + x : true, + y : false, + z : true, + _ : [ 'one', 'two', 'three' ] + }); + + t.deepEqual(typeof argv.x, 'boolean'); + t.deepEqual(typeof argv.y, 'boolean'); + t.deepEqual(typeof argv.z, 'boolean'); + t.end(); +}); +test('boolean and alias with chainable api', function (t) { + var aliased = [ '-h', 'derp' ]; + var regular = [ '--herp', 'derp' ]; + var opts = { + herp: { alias: 'h', boolean: true } + }; + var aliasedArgv = parse(aliased, { + boolean: 'herp', + alias: { h: 'herp' } + }); + var propertyArgv = parse(regular, { + boolean: 'herp', + alias: { h: 'herp' } + }); + var expected = { + herp: true, + h: true, + '_': [ 'derp' ] + }; + + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +test('boolean and alias with options hash', function (t) { + var aliased = [ '-h', 'derp' ]; + var regular = [ '--herp', 'derp' ]; + var opts = { + alias: { 'h': 'herp' }, + boolean: 'herp' + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + var expected = { + herp: true, + h: true, + '_': [ 'derp' ] + }; + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +test('boolean and alias using explicit true', function (t) { + var aliased = [ '-h', 'true' ]; + var regular = [ '--herp', 'true' ]; + var opts = { + alias: { h: 'herp' }, + boolean: 'h' + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + var expected = { + herp: true, + h: true, + '_': [ ] + }; + + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +// regression, see https://github.com/substack/node-optimist/issues/71 +test('boolean and --x=true', function(t) { + var parsed = parse(['--boool', '--other=true'], { + boolean: 'boool' + }); + + t.same(parsed.boool, true); + t.same(parsed.other, 'true'); + + parsed = parse(['--boool', '--other=false'], { + boolean: 'boool' + }); + + t.same(parsed.boool, true); + t.same(parsed.other, 'false'); + t.end(); +}); diff --git a/node_modules/gulp-sym/node_modules/minimist/test/dash.js b/node_modules/gulp-sym/node_modules/minimist/test/dash.js new file mode 100644 index 000000000..5a4fa5be4 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/minimist/test/dash.js @@ -0,0 +1,31 @@ +var parse = require('../'); +var test = require('tape'); + +test('-', function (t) { + t.plan(5); + t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] }); + t.deepEqual(parse([ '-' ]), { _: [ '-' ] }); + t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] }); + t.deepEqual( + parse([ '-b', '-' ], { boolean: 'b' }), + { b: true, _: [ '-' ] } + ); + t.deepEqual( + parse([ '-s', '-' ], { string: 's' }), + { s: '-', _: [] } + ); +}); + +test('-a -- b', function (t) { + t.plan(3); + t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] }); + t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] }); + t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] }); +}); + +test('move arguments after the -- into their own `--` array', function(t) { + t.plan(1); + t.deepEqual( + parse([ '--name', 'John', 'before', '--', 'after' ], { '--': true }), + { name: 'John', _: [ 'before' ], '--': [ 'after' ] }); +}); diff --git a/node_modules/gulp-sym/node_modules/minimist/test/default_bool.js b/node_modules/gulp-sym/node_modules/minimist/test/default_bool.js new file mode 100644 index 000000000..f0041ee40 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/minimist/test/default_bool.js @@ -0,0 +1,20 @@ +var test = require('tape'); +var parse = require('../'); + +test('boolean default true', function (t) { + var argv = parse([], { + boolean: 'sometrue', + default: { sometrue: true } + }); + t.equal(argv.sometrue, true); + t.end(); +}); + +test('boolean default false', function (t) { + var argv = parse([], { + boolean: 'somefalse', + default: { somefalse: false } + }); + t.equal(argv.somefalse, false); + t.end(); +}); diff --git a/node_modules/gulp-sym/node_modules/minimist/test/dotted.js b/node_modules/gulp-sym/node_modules/minimist/test/dotted.js new file mode 100644 index 000000000..d8b3e856e --- /dev/null +++ b/node_modules/gulp-sym/node_modules/minimist/test/dotted.js @@ -0,0 +1,22 @@ +var parse = require('../'); +var test = require('tape'); + +test('dotted alias', function (t) { + var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}}); + t.equal(argv.a.b, 22); + t.equal(argv.aa.bb, 22); + t.end(); +}); + +test('dotted default', function (t) { + var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}}); + t.equal(argv.a.b, 11); + t.equal(argv.aa.bb, 11); + t.end(); +}); + +test('dotted default with no alias', function (t) { + var argv = parse('', {default: {'a.b': 11}}); + t.equal(argv.a.b, 11); + t.end(); +}); diff --git a/node_modules/gulp-sym/node_modules/minimist/test/long.js b/node_modules/gulp-sym/node_modules/minimist/test/long.js new file mode 100644 index 000000000..5d3a1e09d --- /dev/null +++ b/node_modules/gulp-sym/node_modules/minimist/test/long.js @@ -0,0 +1,31 @@ +var test = require('tape'); +var parse = require('../'); + +test('long opts', function (t) { + t.deepEqual( + parse([ '--bool' ]), + { bool : true, _ : [] }, + 'long boolean' + ); + t.deepEqual( + parse([ '--pow', 'xixxle' ]), + { pow : 'xixxle', _ : [] }, + 'long capture sp' + ); + t.deepEqual( + parse([ '--pow=xixxle' ]), + { pow : 'xixxle', _ : [] }, + 'long capture eq' + ); + t.deepEqual( + parse([ '--host', 'localhost', '--port', '555' ]), + { host : 'localhost', port : 555, _ : [] }, + 'long captures sp' + ); + t.deepEqual( + parse([ '--host=localhost', '--port=555' ]), + { host : 'localhost', port : 555, _ : [] }, + 'long captures eq' + ); + t.end(); +}); diff --git a/node_modules/gulp-sym/node_modules/minimist/test/num.js b/node_modules/gulp-sym/node_modules/minimist/test/num.js new file mode 100644 index 000000000..2cc77f4d6 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/minimist/test/num.js @@ -0,0 +1,36 @@ +var parse = require('../'); +var test = require('tape'); + +test('nums', function (t) { + var argv = parse([ + '-x', '1234', + '-y', '5.67', + '-z', '1e7', + '-w', '10f', + '--hex', '0xdeadbeef', + '789' + ]); + t.deepEqual(argv, { + x : 1234, + y : 5.67, + z : 1e7, + w : '10f', + hex : 0xdeadbeef, + _ : [ 789 ] + }); + t.deepEqual(typeof argv.x, 'number'); + t.deepEqual(typeof argv.y, 'number'); + t.deepEqual(typeof argv.z, 'number'); + t.deepEqual(typeof argv.w, 'string'); + t.deepEqual(typeof argv.hex, 'number'); + t.deepEqual(typeof argv._[0], 'number'); + t.end(); +}); + +test('already a number', function (t) { + var argv = parse([ '-x', 1234, 789 ]); + t.deepEqual(argv, { x : 1234, _ : [ 789 ] }); + t.deepEqual(typeof argv.x, 'number'); + t.deepEqual(typeof argv._[0], 'number'); + t.end(); +}); diff --git a/node_modules/gulp-sym/node_modules/minimist/test/parse.js b/node_modules/gulp-sym/node_modules/minimist/test/parse.js new file mode 100644 index 000000000..7b4a2a17c --- /dev/null +++ b/node_modules/gulp-sym/node_modules/minimist/test/parse.js @@ -0,0 +1,197 @@ +var parse = require('../'); +var test = require('tape'); + +test('parse args', function (t) { + t.deepEqual( + parse([ '--no-moo' ]), + { moo : false, _ : [] }, + 'no' + ); + t.deepEqual( + parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]), + { v : ['a','b','c'], _ : [] }, + 'multi' + ); + t.end(); +}); + +test('comprehensive', function (t) { + t.deepEqual( + parse([ + '--name=meowmers', 'bare', '-cats', 'woo', + '-h', 'awesome', '--multi=quux', + '--key', 'value', + '-b', '--bool', '--no-meep', '--multi=baz', + '--', '--not-a-flag', 'eek' + ]), + { + c : true, + a : true, + t : true, + s : 'woo', + h : 'awesome', + b : true, + bool : true, + key : 'value', + multi : [ 'quux', 'baz' ], + meep : false, + name : 'meowmers', + _ : [ 'bare', '--not-a-flag', 'eek' ] + } + ); + t.end(); +}); + +test('flag boolean', function (t) { + var argv = parse([ '-t', 'moo' ], { boolean: 't' }); + t.deepEqual(argv, { t : true, _ : [ 'moo' ] }); + t.deepEqual(typeof argv.t, 'boolean'); + t.end(); +}); + +test('flag boolean value', function (t) { + var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], { + boolean: [ 't', 'verbose' ], + default: { verbose: true } + }); + + t.deepEqual(argv, { + verbose: false, + t: true, + _: ['moo'] + }); + + t.deepEqual(typeof argv.verbose, 'boolean'); + t.deepEqual(typeof argv.t, 'boolean'); + t.end(); +}); + +test('newlines in params' , function (t) { + var args = parse([ '-s', "X\nX" ]) + t.deepEqual(args, { _ : [], s : "X\nX" }); + + // reproduce in bash: + // VALUE="new + // line" + // node program.js --s="$VALUE" + args = parse([ "--s=X\nX" ]) + t.deepEqual(args, { _ : [], s : "X\nX" }); + t.end(); +}); + +test('strings' , function (t) { + var s = parse([ '-s', '0001234' ], { string: 's' }).s; + t.equal(s, '0001234'); + t.equal(typeof s, 'string'); + + var x = parse([ '-x', '56' ], { string: 'x' }).x; + t.equal(x, '56'); + t.equal(typeof x, 'string'); + t.end(); +}); + +test('stringArgs', function (t) { + var s = parse([ ' ', ' ' ], { string: '_' })._; + t.same(s.length, 2); + t.same(typeof s[0], 'string'); + t.same(s[0], ' '); + t.same(typeof s[1], 'string'); + t.same(s[1], ' '); + t.end(); +}); + +test('empty strings', function(t) { + var s = parse([ '-s' ], { string: 's' }).s; + t.equal(s, ''); + t.equal(typeof s, 'string'); + + var str = parse([ '--str' ], { string: 'str' }).str; + t.equal(str, ''); + t.equal(typeof str, 'string'); + + var letters = parse([ '-art' ], { + string: [ 'a', 't' ] + }); + + t.equal(letters.a, ''); + t.equal(letters.r, true); + t.equal(letters.t, ''); + + t.end(); +}); + + +test('string and alias', function(t) { + var x = parse([ '--str', '000123' ], { + string: 's', + alias: { s: 'str' } + }); + + t.equal(x.str, '000123'); + t.equal(typeof x.str, 'string'); + t.equal(x.s, '000123'); + t.equal(typeof x.s, 'string'); + + var y = parse([ '-s', '000123' ], { + string: 'str', + alias: { str: 's' } + }); + + t.equal(y.str, '000123'); + t.equal(typeof y.str, 'string'); + t.equal(y.s, '000123'); + t.equal(typeof y.s, 'string'); + t.end(); +}); + +test('slashBreak', function (t) { + t.same( + parse([ '-I/foo/bar/baz' ]), + { I : '/foo/bar/baz', _ : [] } + ); + t.same( + parse([ '-xyz/foo/bar/baz' ]), + { x : true, y : true, z : '/foo/bar/baz', _ : [] } + ); + t.end(); +}); + +test('alias', function (t) { + var argv = parse([ '-f', '11', '--zoom', '55' ], { + alias: { z: 'zoom' } + }); + t.equal(argv.zoom, 55); + t.equal(argv.z, argv.zoom); + t.equal(argv.f, 11); + t.end(); +}); + +test('multiAlias', function (t) { + var argv = parse([ '-f', '11', '--zoom', '55' ], { + alias: { z: [ 'zm', 'zoom' ] } + }); + t.equal(argv.zoom, 55); + t.equal(argv.z, argv.zoom); + t.equal(argv.z, argv.zm); + t.equal(argv.f, 11); + t.end(); +}); + +test('nested dotted objects', function (t) { + var argv = parse([ + '--foo.bar', '3', '--foo.baz', '4', + '--foo.quux.quibble', '5', '--foo.quux.o_O', + '--beep.boop' + ]); + + t.same(argv.foo, { + bar : 3, + baz : 4, + quux : { + quibble : 5, + o_O : true + } + }); + t.same(argv.beep, { boop : true }); + t.end(); +}); diff --git a/node_modules/gulp-sym/node_modules/minimist/test/parse_modified.js b/node_modules/gulp-sym/node_modules/minimist/test/parse_modified.js new file mode 100644 index 000000000..21851b036 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/minimist/test/parse_modified.js @@ -0,0 +1,9 @@ +var parse = require('../'); +var test = require('tape'); + +test('parse with modifier functions' , function (t) { + t.plan(1); + + var argv = parse([ '-b', '123' ], { boolean: 'b' }); + t.deepEqual(argv, { b: true, _: ['123'] }); +}); diff --git a/node_modules/gulp-sym/node_modules/minimist/test/short.js b/node_modules/gulp-sym/node_modules/minimist/test/short.js new file mode 100644 index 000000000..d513a1c25 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/minimist/test/short.js @@ -0,0 +1,67 @@ +var parse = require('../'); +var test = require('tape'); + +test('numeric short args', function (t) { + t.plan(2); + t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] }); + t.deepEqual( + parse([ '-123', '456' ]), + { 1: true, 2: true, 3: 456, _: [] } + ); +}); + +test('short', function (t) { + t.deepEqual( + parse([ '-b' ]), + { b : true, _ : [] }, + 'short boolean' + ); + t.deepEqual( + parse([ 'foo', 'bar', 'baz' ]), + { _ : [ 'foo', 'bar', 'baz' ] }, + 'bare' + ); + t.deepEqual( + parse([ '-cats' ]), + { c : true, a : true, t : true, s : true, _ : [] }, + 'group' + ); + t.deepEqual( + parse([ '-cats', 'meow' ]), + { c : true, a : true, t : true, s : 'meow', _ : [] }, + 'short group next' + ); + t.deepEqual( + parse([ '-h', 'localhost' ]), + { h : 'localhost', _ : [] }, + 'short capture' + ); + t.deepEqual( + parse([ '-h', 'localhost', '-p', '555' ]), + { h : 'localhost', p : 555, _ : [] }, + 'short captures' + ); + t.end(); +}); + +test('mixed short bool and capture', function (t) { + t.same( + parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), + { + f : true, p : 555, h : 'localhost', + _ : [ 'script.js' ] + } + ); + t.end(); +}); + +test('short and long', function (t) { + t.deepEqual( + parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), + { + f : true, p : 555, h : 'localhost', + _ : [ 'script.js' ] + } + ); + t.end(); +}); diff --git a/node_modules/gulp-sym/node_modules/minimist/test/whitespace.js b/node_modules/gulp-sym/node_modules/minimist/test/whitespace.js new file mode 100644 index 000000000..8a52a58ce --- /dev/null +++ b/node_modules/gulp-sym/node_modules/minimist/test/whitespace.js @@ -0,0 +1,8 @@ +var parse = require('../'); +var test = require('tape'); + +test('whitespace should be whitespace' , function (t) { + t.plan(1); + var x = parse([ '-x', '\t' ]).x; + t.equal(x, '\t'); +}); diff --git a/node_modules/gulp-sym/node_modules/strip-ansi/cli.js b/node_modules/gulp-sym/node_modules/strip-ansi/cli.js new file mode 100755 index 000000000..602ae00e8 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/strip-ansi/cli.js @@ -0,0 +1,39 @@ +#!/usr/bin/env node +'use strict'; +var fs = require('fs'); +var pkg = require('./package.json'); +var strip = require('./'); +var input = process.argv[2]; + +function help() { + console.log([ + pkg.description, + '', + 'Usage', + ' $ strip-ansi <input-file> > <output-file>', + ' $ cat <input-file> | strip-ansi > <output-file>', + '', + 'Example', + ' $ strip-ansi unicorn.txt > unicorn-stripped.txt' + ].join('\n')); +} + +if (process.argv.indexOf('--help') !== -1) { + help(); + return; +} + +if (process.argv.indexOf('--version') !== -1) { + console.log(pkg.version); + return; +} + +if (input) { + process.stdout.write(strip(fs.readFileSync(input, 'utf8'))); + return; +} + +process.stdin.setEncoding('utf8'); +process.stdin.on('data', function (data) { + process.stdout.write(strip(data)); +}); diff --git a/node_modules/gulp-sym/node_modules/strip-ansi/index.js b/node_modules/gulp-sym/node_modules/strip-ansi/index.js new file mode 100644 index 000000000..099480fbf --- /dev/null +++ b/node_modules/gulp-sym/node_modules/strip-ansi/index.js @@ -0,0 +1,6 @@ +'use strict'; +var ansiRegex = require('ansi-regex')(); + +module.exports = function (str) { + return typeof str === 'string' ? str.replace(ansiRegex, '') : str; +}; diff --git a/node_modules/gulp-sym/node_modules/strip-ansi/package.json b/node_modules/gulp-sym/node_modules/strip-ansi/package.json new file mode 100644 index 000000000..3bacc6706 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/strip-ansi/package.json @@ -0,0 +1,56 @@ +{ + "name": "strip-ansi", + "version": "0.3.0", + "description": "Strip ANSI escape codes", + "license": "MIT", + "bin": { + "strip-ansi": "cli.js" + }, + "repository": "sindresorhus/strip-ansi", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js", + "cli.js" + ], + "keywords": [ + "strip", + "trim", + "remove", + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "ansi-regex": "^0.2.1" + }, + "devDependencies": { + "mocha": "*" + } +} diff --git a/node_modules/gulp-sym/node_modules/strip-ansi/readme.md b/node_modules/gulp-sym/node_modules/strip-ansi/readme.md new file mode 100644 index 000000000..5477079d0 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/strip-ansi/readme.md @@ -0,0 +1,43 @@ +# strip-ansi [![Build Status](https://travis-ci.org/sindresorhus/strip-ansi.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-ansi) + +> Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) + + +## Install + +```sh +$ npm install --save strip-ansi +``` + + +## Usage + +```js +var stripAnsi = require('strip-ansi'); + +stripAnsi('\x1b[4mcake\x1b[0m'); +//=> 'cake' +``` + + +## CLI + +```sh +$ npm install --global strip-ansi +``` + +```sh +$ strip-ansi --help + +Usage + $ strip-ansi <input-file> > <output-file> + $ cat <input-file> | strip-ansi > <output-file> + +Example + $ strip-ansi unicorn.txt > unicorn-stripped.txt +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/gulp-sym/node_modules/supports-color/cli.js b/node_modules/gulp-sym/node_modules/supports-color/cli.js new file mode 100755 index 000000000..0617971e6 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/supports-color/cli.js @@ -0,0 +1,28 @@ +#!/usr/bin/env node +'use strict'; +var pkg = require('./package.json'); +var supportsColor = require('./'); +var input = process.argv[2]; + +function help() { + console.log([ + pkg.description, + '', + 'Usage', + ' $ supports-color', + '', + 'Exits with code 0 if color is supported and 1 if not' + ].join('\n')); +} + +if (!input || process.argv.indexOf('--help') !== -1) { + help(); + return; +} + +if (process.argv.indexOf('--version') !== -1) { + console.log(pkg.version); + return; +} + +process.exit(supportsColor ? 0 : 1); diff --git a/node_modules/gulp-sym/node_modules/supports-color/index.js b/node_modules/gulp-sym/node_modules/supports-color/index.js new file mode 100644 index 000000000..092d0baef --- /dev/null +++ b/node_modules/gulp-sym/node_modules/supports-color/index.js @@ -0,0 +1,32 @@ +'use strict'; +module.exports = (function () { + if (process.argv.indexOf('--no-color') !== -1) { + return false; + } + + if (process.argv.indexOf('--color') !== -1) { + return true; + } + + if (process.stdout && !process.stdout.isTTY) { + return false; + } + + if (process.platform === 'win32') { + return true; + } + + if ('COLORTERM' in process.env) { + return true; + } + + if (process.env.TERM === 'dumb') { + return false; + } + + if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) { + return true; + } + + return false; +})(); diff --git a/node_modules/gulp-sym/node_modules/supports-color/package.json b/node_modules/gulp-sym/node_modules/supports-color/package.json new file mode 100644 index 000000000..02b019789 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/supports-color/package.json @@ -0,0 +1,50 @@ +{ + "name": "supports-color", + "version": "0.2.0", + "description": "Detect whether a terminal supports color", + "license": "MIT", + "repository": "sindresorhus/supports-color", + "bin": { + "supports-color": "cli.js" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "http://sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "mocha" + }, + "files": [ + "index.js", + "cli.js" + ], + "keywords": [ + "cli", + "bin", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "ansi", + "styles", + "tty", + "rgb", + "256", + "shell", + "xterm", + "command-line", + "support", + "supports", + "capability", + "detect" + ], + "devDependencies": { + "mocha": "*" + } +} diff --git a/node_modules/gulp-sym/node_modules/supports-color/readme.md b/node_modules/gulp-sym/node_modules/supports-color/readme.md new file mode 100644 index 000000000..7f07e5fb0 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/supports-color/readme.md @@ -0,0 +1,44 @@ +# supports-color [![Build Status](https://travis-ci.org/sindresorhus/supports-color.svg?branch=master)](https://travis-ci.org/sindresorhus/supports-color) + +> Detect whether a terminal supports color + + +## Install + +```sh +$ npm install --save supports-color +``` + + +## Usage + +```js +var supportsColor = require('supports-color'); + +if (supportsColor) { + console.log('Terminal supports color'); +} +``` + +It obeys the `--color` and `--no-color` CLI flags. + + +## CLI + +```sh +$ npm install --global supports-color +``` + +```sh +$ supports-color --help + +Usage + $ supports-color + +# Exits with code 0 if color is supported and 1 if not +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/node_modules/gulp-sym/node_modules/vinyl/.npmignore b/node_modules/gulp-sym/node_modules/vinyl/.npmignore new file mode 100644 index 000000000..b5ef13a3c --- /dev/null +++ b/node_modules/gulp-sym/node_modules/vinyl/.npmignore @@ -0,0 +1,6 @@ +.DS_Store +*.log +node_modules +build +*.node +components
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/vinyl/.travis.yml b/node_modules/gulp-sym/node_modules/vinyl/.travis.yml new file mode 100644 index 000000000..33ad9f8c8 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/vinyl/.travis.yml @@ -0,0 +1,6 @@ +language: node_js +node_js: + - "0.9" + - "0.10" +after_script: + - npm run coveralls
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/vinyl/LICENSE b/node_modules/gulp-sym/node_modules/vinyl/LICENSE new file mode 100755 index 000000000..4f482f9ba --- /dev/null +++ b/node_modules/gulp-sym/node_modules/vinyl/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2013 Fractal <contact@wearefractal.com> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/gulp-sym/node_modules/vinyl/README.md b/node_modules/gulp-sym/node_modules/vinyl/README.md new file mode 100644 index 000000000..3f97efc56 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/vinyl/README.md @@ -0,0 +1,123 @@ +# vinyl [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Dependency Status](https://david-dm.org/wearefractal/vinyl.png?theme=shields.io)](https://david-dm.org/wearefractal/vinyl) + + +## Information + +<table> +<tr> +<td>Package</td><td>vinyl</td> +</tr> +<tr> +<td>Description</td> +<td>A virtual file format</td> +</tr> +<tr> +<td>Node Version</td> +<td>>= 0.9</td> +</tr> +</table> + +## File + +```javascript +var File = require('vinyl'); + +var coffeeFile = new File({ + cwd: "/", + base: "/test/", + path: "/test/file.coffee" + contents: new Buffer("test = 123") +}); +``` + +### constructor(options) + +#### options.cwd + +Type: `String` +Default: `process.cwd()` + +#### options.base + +Used for relative pathing. Typically where a glob starts. + +Type: `String` +Default: `options.cwd` + +#### options.path + +Full path to the file. + +Type: `String` +Default: `null` + +#### options.stat + +The result of an fs.stat call. See [fs.Stats](http://nodejs.org/api/fs.html#fs_class_fs_stats) for more information. + +Type: `fs.Stats` +Default: `null` + +#### options.contents + +File contents. + +Type: `Buffer, Stream, or null` +Default: `null` + +### isBuffer() + +Returns true if file.contents is a Buffer. + +### isStream() + +Returns true if file.contents is a Stream. + +### isNull() + +Returns true if file.contents is null. + +### clone() + +Returns a new File object with all attributes cloned. + +### pipe(stream[, opt]) + +If file.contents is a Buffer, it will write it to the stream. + +If file.contents is a Stream, it will pipe it to the stream. + +If file.contents is null, it will do nothing. + +If opt.end is true, the destination stream will not be ended (same as node core). + +Returns the stream. + +### inspect() + +Returns a pretty String interpretation of the File. Useful for console.log. + +### relative + +Returns path.relative for the file base and file path. + +Example: + +```javascript +var file = new File({ + cwd: "/", + base: "/test/", + path: "/test/file.coffee" +}); + +console.log(file.relative); // file.coffee +``` + +[npm-url]: https://npmjs.org/package/vinyl +[npm-image]: https://badge.fury.io/js/vinyl.png +[travis-url]: https://travis-ci.org/wearefractal/vinyl +[travis-image]: https://travis-ci.org/wearefractal/vinyl.png?branch=master +[coveralls-url]: https://coveralls.io/r/wearefractal/vinyl +[coveralls-image]: https://coveralls.io/repos/wearefractal/vinyl/badge.png +[depstat-url]: https://david-dm.org/wearefractal/vinyl +[depstat-image]: https://david-dm.org/wearefractal/vinyl.png
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/vinyl/index.js b/node_modules/gulp-sym/node_modules/vinyl/index.js new file mode 100644 index 000000000..97f5c7529 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/vinyl/index.js @@ -0,0 +1,128 @@ +var path = require('path'); + +var cloneStats = require('clone-stats'); + +var isBuffer = require('./lib/isBuffer'); +var isStream = require('./lib/isStream'); +var isNull = require('./lib/isNull'); +var inspectStream = require('./lib/inspectStream'); +var cloneBuffer = require('./lib/cloneBuffer'); + +function File(file) { + if (!file) file = {}; + + // TODO: should this be moved to vinyl-fs? + this.cwd = file.cwd || process.cwd(); + this.base = file.base || this.cwd; + + this.path = file.path || null; + + // stat = fs stats object + // TODO: should this be moved to vinyl-fs? + this.stat = file.stat || null; + + // contents = stream, buffer, or null if not read + this.contents = file.contents || null; +} + +File.prototype.isBuffer = function() { + return isBuffer(this.contents); +}; + +File.prototype.isStream = function() { + return isStream(this.contents); +}; + +File.prototype.isNull = function() { + return isNull(this.contents); +}; + +// TODO: should this be moved to vinyl-fs? +File.prototype.isDirectory = function() { + return this.isNull() && this.stat && this.stat.isDirectory(); +}; + +File.prototype.clone = function() { + var clonedContents = this.isBuffer() ? cloneBuffer(this.contents) : this.contents; + var clonedStat = this.stat ? cloneStats(this.stat) : null; + + return new File({ + cwd: this.cwd, + base: this.base, + path: this.path, + stat: clonedStat, + contents: clonedContents + }); +}; + +File.prototype.pipe = function(stream, opt) { + if (!opt) opt = {}; + if (typeof opt.end === 'undefined') opt.end = true; + + if (this.isStream()) { + return this.contents.pipe(stream, opt); + } + if (this.isBuffer()) { + if (opt.end) { + stream.end(this.contents); + } else { + stream.write(this.contents); + } + return stream; + } + if (this.isNull()) { + if (opt.end) stream.end(); + return stream; + } + + return stream; +}; + +File.prototype.inspect = function() { + var inspect = []; + + // use relative path if possible + var filePath = (this.base && this.path) ? this.relative : this.path; + + if (filePath) { + inspect.push('"'+filePath+'"'); + } + + if (this.isBuffer()) { + inspect.push(this.contents.inspect()); + } + + if (this.isStream()) { + inspect.push(inspectStream(this.contents)); + } + + return '<File '+inspect.join(' ')+'>'; +}; + +// virtual attributes +// or stuff with extra logic +Object.defineProperty(File.prototype, 'contents', { + get: function() { + return this._contents; + }, + set: function(val) { + if (!isBuffer(val) && !isStream(val) && !isNull(val)) { + throw new Error("File.contents can only be a Buffer, a Stream, or null."); + } + this._contents = val; + } +}); + +// TODO: should this be moved to vinyl-fs? +Object.defineProperty(File.prototype, 'relative', { + get: function() { + if (!this.base) throw new Error('No base specified! Can not get relative.'); + if (!this.path) throw new Error('No path specified! Can not get relative.'); + return path.relative(this.base, this.path); + }, + set: function() { + throw new Error('File.relative is generated from the base and path attributes. Do not modify it.'); + } +}); + +module.exports = File; diff --git a/node_modules/gulp-sym/node_modules/vinyl/lib/cloneBuffer.js b/node_modules/gulp-sym/node_modules/vinyl/lib/cloneBuffer.js new file mode 100644 index 000000000..3a861f22f --- /dev/null +++ b/node_modules/gulp-sym/node_modules/vinyl/lib/cloneBuffer.js @@ -0,0 +1,7 @@ +var Buffer = require('buffer').Buffer; + +module.exports = function(buf) { + var out = new Buffer(buf.length); + buf.copy(out); + return out; +};
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/vinyl/lib/inspectStream.js b/node_modules/gulp-sym/node_modules/vinyl/lib/inspectStream.js new file mode 100644 index 000000000..2c9067892 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/vinyl/lib/inspectStream.js @@ -0,0 +1,12 @@ +var Stream = require('stream').Stream; +var isStream = require('./isStream'); + +module.exports = function(stream) { + if (!isStream(stream)) return; + + var streamType = stream.constructor.name; + // avoid StreamStream + if (streamType === 'Stream') streamType = ''; + + return '<'+streamType+'Stream>'; +};
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/vinyl/lib/isBuffer.js b/node_modules/gulp-sym/node_modules/vinyl/lib/isBuffer.js new file mode 100644 index 000000000..0e23782c4 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/vinyl/lib/isBuffer.js @@ -0,0 +1,7 @@ +var buf = require('buffer'); +var Buffer = buf.Buffer; + +// could use Buffer.isBuffer but this is the same exact thing... +module.exports = function(o) { + return typeof o === 'object' && o instanceof Buffer; +};
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/vinyl/lib/isNull.js b/node_modules/gulp-sym/node_modules/vinyl/lib/isNull.js new file mode 100644 index 000000000..403bb30e8 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/vinyl/lib/isNull.js @@ -0,0 +1,3 @@ +module.exports = function(v) { + return v === null; +};
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/vinyl/lib/isStream.js b/node_modules/gulp-sym/node_modules/vinyl/lib/isStream.js new file mode 100644 index 000000000..9ce0929b0 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/vinyl/lib/isStream.js @@ -0,0 +1,5 @@ +var Stream = require('stream').Stream; + +module.exports = function(o) { + return !!o && o instanceof Stream; +};
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/vinyl/package.json b/node_modules/gulp-sym/node_modules/vinyl/package.json new file mode 100644 index 000000000..d851cb138 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/vinyl/package.json @@ -0,0 +1,37 @@ +{ + "name": "vinyl", + "description": "A virtual file format", + "version": "0.2.3", + "homepage": "http://github.com/wearefractal/vinyl", + "repository": "git://github.com/wearefractal/vinyl.git", + "author": "Fractal <contact@wearefractal.com> (http://wearefractal.com/)", + "main": "./index.js", + "dependencies": { + "clone-stats": "~0.0.1" + }, + "devDependencies": { + "mocha": "~1.17.0", + "should": "~2.1.1", + "mocha-lcov-reporter": "0.0.1", + "coveralls": "~2.6.1", + "istanbul": "~0.2.3", + "rimraf": "~2.2.5", + "jshint": "~2.4.1", + "buffer-equal": "0.0.0", + "lodash.templatesettings": "~2.4.1", + "event-stream": "~3.1.0" + }, + "scripts": { + "test": "mocha --reporter spec && jshint", + "coveralls": "istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage" + }, + "engines": { + "node": ">= 0.9" + }, + "licenses": [ + { + "type": "MIT", + "url": "http://github.com/wearefractal/vinyl/raw/master/LICENSE" + } + ] +} diff --git a/node_modules/gulp-sym/node_modules/vinyl/test/File.js b/node_modules/gulp-sym/node_modules/vinyl/test/File.js new file mode 100644 index 000000000..1f2a83a0c --- /dev/null +++ b/node_modules/gulp-sym/node_modules/vinyl/test/File.js @@ -0,0 +1,540 @@ +var File = require('../'); +var Stream = require('stream'); +var fs = require('fs'); + +var should = require('should'); +require('mocha'); + +describe('File', function() { + + describe('constructor()', function() { + it('should default cwd to process.cwd', function(done) { + var file = new File(); + file.cwd.should.equal(process.cwd()); + done(); + }); + + it('should default base to cwd', function(done) { + var cwd = "/"; + var file = new File({cwd: cwd}); + file.base.should.equal(cwd); + done(); + }); + + it('should default base to cwd even when none is given', function(done) { + var file = new File(); + file.base.should.equal(process.cwd()); + done(); + }); + + it('should default path to null', function(done) { + var file = new File(); + should.not.exist(file.path); + done(); + }); + + it('should default stat to null', function(done) { + var file = new File(); + should.not.exist(file.stat); + done(); + }); + + it('should default contents to null', function(done) { + var file = new File(); + should.not.exist(file.contents); + done(); + }); + + it('should set base to given value', function(done) { + var val = "/"; + var file = new File({base: val}); + file.base.should.equal(val); + done(); + }); + + it('should set cwd to given value', function(done) { + var val = "/"; + var file = new File({cwd: val}); + file.cwd.should.equal(val); + done(); + }); + + it('should set path to given value', function(done) { + var val = "/test.coffee"; + var file = new File({path: val}); + file.path.should.equal(val); + done(); + }); + + it('should set stat to given value', function(done) { + var val = {}; + var file = new File({stat: val}); + file.stat.should.equal(val); + done(); + }); + + it('should set contents to given value', function(done) { + var val = new Buffer("test"); + var file = new File({contents: val}); + file.contents.should.equal(val); + done(); + }); + }); + + describe('isBuffer()', function() { + it('should return true when the contents are a Buffer', function(done) { + var val = new Buffer("test"); + var file = new File({contents: val}); + file.isBuffer().should.equal(true); + done(); + }); + + it('should return false when the contents are a Stream', function(done) { + var val = new Stream(); + var file = new File({contents: val}); + file.isBuffer().should.equal(false); + done(); + }); + + it('should return false when the contents are a null', function(done) { + var file = new File({contents: null}); + file.isBuffer().should.equal(false); + done(); + }); + }); + + describe('isStream()', function() { + it('should return false when the contents are a Buffer', function(done) { + var val = new Buffer("test"); + var file = new File({contents: val}); + file.isStream().should.equal(false); + done(); + }); + + it('should return true when the contents are a Stream', function(done) { + var val = new Stream(); + var file = new File({contents: val}); + file.isStream().should.equal(true); + done(); + }); + + it('should return false when the contents are a null', function(done) { + var file = new File({contents: null}); + file.isStream().should.equal(false); + done(); + }); + }); + + describe('isNull()', function() { + it('should return false when the contents are a Buffer', function(done) { + var val = new Buffer("test"); + var file = new File({contents: val}); + file.isNull().should.equal(false); + done(); + }); + + it('should return false when the contents are a Stream', function(done) { + var val = new Stream(); + var file = new File({contents: val}); + file.isNull().should.equal(false); + done(); + }); + + it('should return true when the contents are a null', function(done) { + var file = new File({contents: null}); + file.isNull().should.equal(true); + done(); + }); + }); + + describe('isDirectory()', function() { + var fakeStat = { + isDirectory: function() { + return true; + } + }; + + it('should return false when the contents are a Buffer', function(done) { + var val = new Buffer("test"); + var file = new File({contents: val, stat: fakeStat}); + file.isDirectory().should.equal(false); + done(); + }); + + it('should return false when the contents are a Stream', function(done) { + var val = new Stream(); + var file = new File({contents: val, stat: fakeStat}); + file.isDirectory().should.equal(false); + done(); + }); + + it('should return true when the contents are a null', function(done) { + var file = new File({contents: null, stat: fakeStat}); + file.isDirectory().should.equal(true); + done(); + }); + }); + + describe('clone()', function() { + it('should copy all attributes over with Buffer', function(done) { + var options = { + cwd: "/", + base: "/test/", + path: "/test/test.coffee", + contents: new Buffer("test") + }; + var file = new File(options); + var file2 = file.clone(); + + file2.should.not.equal(file, 'refs should be different'); + file2.cwd.should.equal(file.cwd); + file2.base.should.equal(file.base); + file2.path.should.equal(file.path); + file2.contents.should.not.equal(file.contents, 'buffer ref should be different'); + file2.contents.toString('utf8').should.equal(file.contents.toString('utf8')); + done(); + }); + + it('should copy all attributes over with Stream', function(done) { + var options = { + cwd: "/", + base: "/test/", + path: "/test/test.coffee", + contents: new Stream() + }; + var file = new File(options); + var file2 = file.clone(); + + file2.should.not.equal(file, 'refs should be different'); + file2.cwd.should.equal(file.cwd); + file2.base.should.equal(file.base); + file2.path.should.equal(file.path); + file2.contents.should.equal(file.contents, 'stream ref should be the same'); + done(); + }); + + it('should copy all attributes over with null', function(done) { + var options = { + cwd: "/", + base: "/test/", + path: "/test/test.coffee", + contents: null + }; + var file = new File(options); + var file2 = file.clone(); + + file2.should.not.equal(file, 'refs should be different'); + file2.cwd.should.equal(file.cwd); + file2.base.should.equal(file.base); + file2.path.should.equal(file.path); + should.not.exist(file2.contents); + done(); + }); + + it('should properly clone the `stat` property', function(done) { + var options = { + cwd: "/", + base: "/test/", + path: "/test/test.js", + contents: new Buffer("test"), + stat: fs.statSync(__filename) + }; + + var file = new File(options); + var copy = file.clone(); + + copy.stat.isFile().should.be.true; + copy.stat.isDirectory().should.be.false; + should(file.stat instanceof fs.Stats).be.true; + should(copy.stat instanceof fs.Stats).be.true; + + done(); + }); + }); + + describe('pipe()', function() { + it('should write to stream with Buffer', function(done) { + var options = { + cwd: "/", + base: "/test/", + path: "/test/test.coffee", + contents: new Buffer("test") + }; + var file = new File(options); + var stream = new Stream.PassThrough(); + stream.on('data', function(chunk) { + should.exist(chunk); + (chunk instanceof Buffer).should.equal(true, 'should write as a buffer'); + chunk.toString('utf8').should.equal(options.contents.toString('utf8')); + }); + stream.on('end', function(chunk) { + done(); + }); + var ret = file.pipe(stream); + ret.should.equal(stream, 'should return the stream'); + }); + + it('should pipe to stream with Stream', function(done) { + var testChunk = new Buffer("test"); + var options = { + cwd: "/", + base: "/test/", + path: "/test/test.coffee", + contents: new Stream.PassThrough() + }; + var file = new File(options); + var stream = new Stream.PassThrough(); + stream.on('data', function(chunk) { + should.exist(chunk); + (chunk instanceof Buffer).should.equal(true, 'should write as a buffer'); + chunk.toString('utf8').should.equal(testChunk.toString('utf8')); + done(); + }); + var ret = file.pipe(stream); + ret.should.equal(stream, 'should return the stream'); + + file.contents.write(testChunk); + }); + + it('should do nothing with null', function(done) { + var options = { + cwd: "/", + base: "/test/", + path: "/test/test.coffee", + contents: null + }; + var file = new File(options); + var stream = new Stream.PassThrough(); + stream.on('data', function(chunk) { + throw new Error("should not write"); + }); + stream.on('end', function() { + done(); + }); + var ret = file.pipe(stream); + ret.should.equal(stream, 'should return the stream'); + }); + + it('should write to stream with Buffer', function(done) { + var options = { + cwd: "/", + base: "/test/", + path: "/test/test.coffee", + contents: new Buffer("test") + }; + var file = new File(options); + var stream = new Stream.PassThrough(); + stream.on('data', function(chunk) { + should.exist(chunk); + (chunk instanceof Buffer).should.equal(true, 'should write as a buffer'); + chunk.toString('utf8').should.equal(options.contents.toString('utf8')); + done(); + }); + stream.on('end', function(chunk) { + throw new Error("should not end"); + }); + var ret = file.pipe(stream, {end: false}); + ret.should.equal(stream, 'should return the stream'); + }); + + it('should pipe to stream with Stream', function(done) { + var testChunk = new Buffer("test"); + var options = { + cwd: "/", + base: "/test/", + path: "/test/test.coffee", + contents: new Stream.PassThrough() + }; + var file = new File(options); + var stream = new Stream.PassThrough(); + stream.on('data', function(chunk) { + should.exist(chunk); + (chunk instanceof Buffer).should.equal(true, 'should write as a buffer'); + chunk.toString('utf8').should.equal(testChunk.toString('utf8')); + done(); + }); + stream.on('end', function(chunk) { + throw new Error("should not end"); + }); + var ret = file.pipe(stream, {end: false}); + ret.should.equal(stream, 'should return the stream'); + + file.contents.write(testChunk); + }); + + it('should do nothing with null', function(done) { + var options = { + cwd: "/", + base: "/test/", + path: "/test/test.coffee", + contents: null + }; + var file = new File(options); + var stream = new Stream.PassThrough(); + stream.on('data', function(chunk) { + throw new Error("should not write"); + }); + stream.on('end', function(chunk) { + throw new Error("should not end"); + }); + var ret = file.pipe(stream, {end: false}); + ret.should.equal(stream, 'should return the stream'); + process.nextTick(done); + }); + }); + + describe('inspect()', function() { + it('should return correct format when no contents and no path', function(done) { + var file = new File(); + file.inspect().should.equal('<File >'); + done(); + }); + + it('should return correct format when Buffer and no path', function(done) { + var val = new Buffer("test"); + var file = new File({ + contents: val + }); + file.inspect().should.equal('<File <Buffer 74 65 73 74>>'); + done(); + }); + + it('should return correct format when Buffer and relative path', function(done) { + var val = new Buffer("test"); + var file = new File({ + cwd: "/", + base: "/test/", + path: "/test/test.coffee", + contents: val + }); + file.inspect().should.equal('<File "test.coffee" <Buffer 74 65 73 74>>'); + done(); + }); + + it('should return correct format when Buffer and only path and no base', function(done) { + var val = new Buffer("test"); + var file = new File({ + cwd: "/", + path: "/test/test.coffee", + contents: val + }); + delete file.base; + file.inspect().should.equal('<File "/test/test.coffee" <Buffer 74 65 73 74>>'); + done(); + }); + + it('should return correct format when Stream and relative path', function(done) { + var file = new File({ + cwd: "/", + base: "/test/", + path: "/test/test.coffee", + contents: new Stream.PassThrough() + }); + file.inspect().should.equal('<File "test.coffee" <PassThroughStream>>'); + done(); + }); + + it('should return correct format when null and relative path', function(done) { + var file = new File({ + cwd: "/", + base: "/test/", + path: "/test/test.coffee", + contents: null + }); + file.inspect().should.equal('<File "test.coffee">'); + done(); + }); + }); + + describe('contents get/set', function() { + it('should work with Buffer', function(done) { + var val = new Buffer("test"); + var file = new File(); + file.contents = val; + file.contents.should.equal(val); + done(); + }); + + it('should work with Stream', function(done) { + var val = new Stream.PassThrough(); + var file = new File(); + file.contents = val; + file.contents.should.equal(val); + done(); + }); + + it('should work with null', function(done) { + var val = null; + var file = new File(); + file.contents = val; + (file.contents === null).should.equal(true); + done(); + }); + + it('should not work with string', function(done) { + var val = "test"; + var file = new File(); + try { + file.contents = val; + } catch (err) { + should.exist(err); + done(); + } + }); + }); + + describe('relative get/set', function() { + it('should error on set', function(done) { + var file = new File(); + try { + file.relative = "test"; + } catch (err) { + should.exist(err); + done(); + } + }); + + it('should error on get when no base', function(done) { + var a; + var file = new File(); + delete file.base; + try { + a = file.relative; + } catch (err) { + should.exist(err); + done(); + } + }); + + it('should error on get when no path', function(done) { + var a; + var file = new File(); + try { + a = file.relative; + } catch (err) { + should.exist(err); + done(); + } + }); + + it('should return a relative path from base', function(done) { + var file = new File({ + cwd: "/", + base: "/test/", + path: "/test/test.coffee" + }); + file.relative.should.equal("test.coffee"); + done(); + }); + + it('should return a relative path from cwd', function(done) { + var file = new File({ + cwd: "/", + path: "/test/test.coffee" + }); + file.relative.should.equal("test/test.coffee"); + done(); + }); + }); + +}); diff --git a/node_modules/gulp-sym/node_modules/vinyl/test/cloneBuffer.js b/node_modules/gulp-sym/node_modules/vinyl/test/cloneBuffer.js new file mode 100644 index 000000000..7d2868141 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/vinyl/test/cloneBuffer.js @@ -0,0 +1,28 @@ +var cloneBuffer = require('../lib/cloneBuffer'); +var Stream = require('stream'); +var should = require('should'); +require('mocha'); + +describe('cloneBuffer()', function() { + it('should return a new Buffer reference', function(done) { + var testBuffer = new Buffer('test'); + var testBuffer2 = cloneBuffer(testBuffer); + + should.exist(testBuffer2, 'should return something'); + (testBuffer2 instanceof Buffer).should.equal(true, 'should return a Buffer'); + testBuffer2.should.not.equal(testBuffer, 'pointer should change'); + done(); + }); + + it('should not replicate modifications to the original buffer', function(done) { + var testBuffer = new Buffer('test'); + var testBuffer2 = cloneBuffer(testBuffer); + + // test that changes dont modify both pointers + testBuffer2.write('w'); + + testBuffer.toString('utf8').should.equal('test', 'original should stay the same'); + testBuffer2.toString('utf8').should.equal('west', 'new buffer should be modified'); + done(); + }); +});
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/vinyl/test/inspectStream.js b/node_modules/gulp-sym/node_modules/vinyl/test/inspectStream.js new file mode 100644 index 000000000..fe1802c5d --- /dev/null +++ b/node_modules/gulp-sym/node_modules/vinyl/test/inspectStream.js @@ -0,0 +1,53 @@ +var inspectStream = require('../lib/inspectStream'); +var Stream = require('stream'); +var should = require('should'); +require('mocha'); + +describe('inspectStream()', function() { + it('should work on a core Stream', function(done) { + var testStream = new Stream(); + inspectStream(testStream).should.equal('<Stream>'); + done(); + }); + + it('should work on a core Readable Stream', function(done) { + var testStream = new Stream.Readable(); + inspectStream(testStream).should.equal('<ReadableStream>'); + done(); + }); + + it('should work on a core Writable Stream', function(done) { + var testStream = new Stream.Writable(); + inspectStream(testStream).should.equal('<WritableStream>'); + done(); + }); + + it('should work on a core Duplex Stream', function(done) { + var testStream = new Stream.Duplex(); + inspectStream(testStream).should.equal('<DuplexStream>'); + done(); + }); + + it('should work on a core Transform Stream', function(done) { + var testStream = new Stream.Transform(); + inspectStream(testStream).should.equal('<TransformStream>'); + done(); + }); + + it('should work on a core PassThrough Stream', function(done) { + var testStream = new Stream.PassThrough(); + inspectStream(testStream).should.equal('<PassThroughStream>'); + done(); + }); + + it('should not work on a Buffer', function(done) { + var testBuffer = new Buffer('test'); + should.not.exist(inspectStream(testBuffer)); + done(); + }); + + it('should not work on a null', function(done) { + should.not.exist(inspectStream(null)); + done(); + }); +});
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/vinyl/test/isBuffer.js b/node_modules/gulp-sym/node_modules/vinyl/test/isBuffer.js new file mode 100644 index 000000000..5bb1cb91d --- /dev/null +++ b/node_modules/gulp-sym/node_modules/vinyl/test/isBuffer.js @@ -0,0 +1,29 @@ +var isBuffer = require('../lib/isBuffer'); +var Stream = require('stream'); +var should = require('should'); +require('mocha'); + +describe('isBuffer()', function() { + it('should return true on a Buffer', function(done) { + var testBuffer = new Buffer('test'); + isBuffer(testBuffer).should.equal(true); + done(); + }); + + it('should return false on a Stream', function(done) { + var testStream = new Stream(); + isBuffer(testStream).should.equal(false); + done(); + }); + + it('should return false on a null', function(done) { + isBuffer(null).should.equal(false); + done(); + }); + + it('should return false on a array of numbers', function(done) { + var testArray = [1, 2, 3]; + isBuffer(testArray).should.equal(false); + done(); + }); +});
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/vinyl/test/isNull.js b/node_modules/gulp-sym/node_modules/vinyl/test/isNull.js new file mode 100644 index 000000000..db70c0135 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/vinyl/test/isNull.js @@ -0,0 +1,23 @@ +var isNull = require('../lib/isNull'); +var Stream = require('stream'); +var should = require('should'); +require('mocha'); + +describe('isNull()', function() { + it('should return true on null', function(done) { + isNull(null).should.equal(true); + done(); + }); + + it('should return false on undefined', function(done) { + isNull().should.equal(false); + isNull(undefined).should.equal(false); + done(); + }); + + it('should return false on defined values', function(done) { + isNull(1).should.equal(false); + isNull("test").should.equal(false); + done(); + }); +});
\ No newline at end of file diff --git a/node_modules/gulp-sym/node_modules/vinyl/test/isStream.js b/node_modules/gulp-sym/node_modules/vinyl/test/isStream.js new file mode 100644 index 000000000..f22584c51 --- /dev/null +++ b/node_modules/gulp-sym/node_modules/vinyl/test/isStream.js @@ -0,0 +1,29 @@ +var isStream = require('../lib/isStream'); +var Stream = require('stream'); +var should = require('should'); +require('mocha'); + +describe('isStream()', function() { + it('should return true on a Stream', function(done) { + var testStream = new Stream(); + isStream(testStream).should.equal(true); + done(); + }); + + it('should return false on a Buffer', function(done) { + var testBuffer = new Buffer('test'); + isStream(testBuffer).should.equal(false); + done(); + }); + + it('should return false on a null', function(done) { + isStream(null).should.equal(false); + done(); + }); + + it('should return false on a array of numbers', function(done) { + var testArray = [1, 2, 3]; + isStream(testArray).should.equal(false); + done(); + }); +});
\ No newline at end of file |