mirror of
https://github.com/KevinMidboe/zoff.git
synced 2026-01-09 19:15:34 +00:00
Added gulp, and started using the file being built by gulp. Fixed some issues with remote control changing. Implemented clients being able to change password
This commit is contained in:
105
server/node_modules/gulp/README.md
generated
vendored
Normal file
105
server/node_modules/gulp/README.md
generated
vendored
Normal file
@@ -0,0 +1,105 @@
|
||||
<p align="center">
|
||||
<a href="http://gulpjs.com">
|
||||
<img height="257" width="114" src="https://raw.githubusercontent.com/gulpjs/artwork/master/gulp-2x.png">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
# gulp
|
||||
**The streaming build system**
|
||||
|
||||
[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Support us][gittip-image]][gittip-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Gitter chat][gitter-image]][gitter-url]
|
||||
|
||||
## Like what we do?
|
||||
|
||||
[Support us via Gratipay](https://gratipay.com/WeAreFractal/)
|
||||
|
||||
## Documentation
|
||||
|
||||
For a Getting started guide, API docs, recipes, making a plugin, etc. see the [documentation page](/docs/README.md)!
|
||||
|
||||
## Sample `gulpfile.js`
|
||||
|
||||
This file is just a quick sample to give you a taste of what gulp does.
|
||||
|
||||
```js
|
||||
var gulp = require('gulp');
|
||||
var coffee = require('gulp-coffee');
|
||||
var concat = require('gulp-concat');
|
||||
var uglify = require('gulp-uglify');
|
||||
var imagemin = require('gulp-imagemin');
|
||||
var sourcemaps = require('gulp-sourcemaps');
|
||||
var del = require('del');
|
||||
|
||||
var paths = {
|
||||
scripts: ['client/js/**/*.coffee', '!client/external/**/*.coffee'],
|
||||
images: 'client/img/**/*'
|
||||
};
|
||||
|
||||
// Not all tasks need to use streams
|
||||
// A gulpfile is just another node program and you can use all packages available on npm
|
||||
gulp.task('clean', function(cb) {
|
||||
// You can use multiple globbing patterns as you would with `gulp.src`
|
||||
del(['build'], cb);
|
||||
});
|
||||
|
||||
gulp.task('scripts', ['clean'], function() {
|
||||
// Minify and copy all JavaScript (except vendor scripts)
|
||||
// with sourcemaps all the way down
|
||||
return gulp.src(paths.scripts)
|
||||
.pipe(sourcemaps.init())
|
||||
.pipe(coffee())
|
||||
.pipe(uglify())
|
||||
.pipe(concat('all.min.js'))
|
||||
.pipe(sourcemaps.write())
|
||||
.pipe(gulp.dest('build/js'));
|
||||
});
|
||||
|
||||
// Copy all static images
|
||||
gulp.task('images', ['clean'], function() {
|
||||
return gulp.src(paths.images)
|
||||
// Pass in options to the task
|
||||
.pipe(imagemin({optimizationLevel: 5}))
|
||||
.pipe(gulp.dest('build/img'));
|
||||
});
|
||||
|
||||
// Rerun the task when a file changes
|
||||
gulp.task('watch', function() {
|
||||
gulp.watch(paths.scripts, ['scripts']);
|
||||
gulp.watch(paths.images, ['images']);
|
||||
});
|
||||
|
||||
// The default task (called when you run `gulp` from cli)
|
||||
gulp.task('default', ['watch', 'scripts', 'images']);
|
||||
```
|
||||
|
||||
## Incremental Builds
|
||||
|
||||
We recommend these plugins:
|
||||
|
||||
- [gulp-changed](https://github.com/sindresorhus/gulp-changed) - only pass through changed files
|
||||
- [gulp-cached](https://github.com/wearefractal/gulp-cached) - in-memory file cache, not for operation on sets of files
|
||||
- [gulp-remember](https://github.com/ahaurw01/gulp-remember) - pairs nicely with gulp-cached
|
||||
- [gulp-newer](https://github.com/tschaub/gulp-newer) - pass through newer source files only, supports many:1 source:dest
|
||||
|
||||
## Want to contribute?
|
||||
|
||||
Anyone can help make this project better - check out the [Contributing guide](/CONTRIBUTING.md)!
|
||||
|
||||
|
||||
[](https://bitdeli.com/free "Bitdeli Badge")
|
||||
|
||||
[gittip-url]: https://www.gittip.com/WeAreFractal/
|
||||
[gittip-image]: http://img.shields.io/gittip/WeAreFractal.svg
|
||||
|
||||
[downloads-image]: http://img.shields.io/npm/dm/gulp.svg
|
||||
[npm-url]: https://npmjs.org/package/gulp
|
||||
[npm-image]: http://img.shields.io/npm/v/gulp.svg
|
||||
|
||||
[travis-url]: https://travis-ci.org/gulpjs/gulp
|
||||
[travis-image]: http://img.shields.io/travis/gulpjs/gulp.svg
|
||||
|
||||
[coveralls-url]: https://coveralls.io/r/gulpjs/gulp
|
||||
[coveralls-image]: http://img.shields.io/coveralls/gulpjs/gulp/master.svg
|
||||
|
||||
[gitter-url]: https://gitter.im/gulpjs/gulp
|
||||
[gitter-image]: https://badges.gitter.im/gulpjs/gulp.png
|
||||
212
server/node_modules/gulp/bin/gulp.js
generated
vendored
Executable file
212
server/node_modules/gulp/bin/gulp.js
generated
vendored
Executable file
@@ -0,0 +1,212 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
'use strict';
|
||||
var gutil = require('gulp-util');
|
||||
var prettyTime = require('pretty-hrtime');
|
||||
var chalk = require('chalk');
|
||||
var semver = require('semver');
|
||||
var archy = require('archy');
|
||||
var Liftoff = require('liftoff');
|
||||
var tildify = require('tildify');
|
||||
var interpret = require('interpret');
|
||||
var v8flags = require('v8flags');
|
||||
var completion = require('../lib/completion');
|
||||
var argv = require('minimist')(process.argv.slice(2));
|
||||
var taskTree = require('../lib/taskTree');
|
||||
|
||||
// Set env var for ORIGINAL cwd
|
||||
// before anything touches it
|
||||
process.env.INIT_CWD = process.cwd();
|
||||
|
||||
var cli = new Liftoff({
|
||||
name: 'gulp',
|
||||
completions: completion,
|
||||
extensions: interpret.jsVariants,
|
||||
v8flags: v8flags,
|
||||
});
|
||||
|
||||
// Exit with 0 or 1
|
||||
var failed = false;
|
||||
process.once('exit', function(code) {
|
||||
if (code === 0 && failed) {
|
||||
process.exit(1);
|
||||
}
|
||||
});
|
||||
|
||||
// Parse those args m8
|
||||
var cliPackage = require('../package');
|
||||
var versionFlag = argv.v || argv.version;
|
||||
var tasksFlag = argv.T || argv.tasks;
|
||||
var tasks = argv._;
|
||||
var toRun = tasks.length ? tasks : ['default'];
|
||||
|
||||
// This is a hold-over until we have a better logging system
|
||||
// with log levels
|
||||
var simpleTasksFlag = argv['tasks-simple'];
|
||||
var shouldLog = !argv.silent && !simpleTasksFlag;
|
||||
|
||||
if (!shouldLog) {
|
||||
gutil.log = function() {};
|
||||
}
|
||||
|
||||
cli.on('require', function(name) {
|
||||
gutil.log('Requiring external module', chalk.magenta(name));
|
||||
});
|
||||
|
||||
cli.on('requireFail', function(name) {
|
||||
gutil.log(chalk.red('Failed to load external module'), chalk.magenta(name));
|
||||
});
|
||||
|
||||
cli.on('respawn', function(flags, child) {
|
||||
var nodeFlags = chalk.magenta(flags.join(', '));
|
||||
var pid = chalk.magenta(child.pid);
|
||||
gutil.log('Node flags detected:', nodeFlags);
|
||||
gutil.log('Respawned to PID:', pid);
|
||||
});
|
||||
|
||||
cli.launch({
|
||||
cwd: argv.cwd,
|
||||
configPath: argv.gulpfile,
|
||||
require: argv.require,
|
||||
completion: argv.completion,
|
||||
}, handleArguments);
|
||||
|
||||
// The actual logic
|
||||
function handleArguments(env) {
|
||||
if (versionFlag && tasks.length === 0) {
|
||||
gutil.log('CLI version', cliPackage.version);
|
||||
if (env.modulePackage && typeof env.modulePackage.version !== 'undefined') {
|
||||
gutil.log('Local version', env.modulePackage.version);
|
||||
}
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
if (!env.modulePath) {
|
||||
gutil.log(
|
||||
chalk.red('Local gulp not found in'),
|
||||
chalk.magenta(tildify(env.cwd))
|
||||
);
|
||||
gutil.log(chalk.red('Try running: npm install gulp'));
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (!env.configPath) {
|
||||
gutil.log(chalk.red('No gulpfile found'));
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// Check for semver difference between cli and local installation
|
||||
if (semver.gt(cliPackage.version, env.modulePackage.version)) {
|
||||
gutil.log(chalk.red('Warning: gulp version mismatch:'));
|
||||
gutil.log(chalk.red('Global gulp is', cliPackage.version));
|
||||
gutil.log(chalk.red('Local gulp is', env.modulePackage.version));
|
||||
}
|
||||
|
||||
// Chdir before requiring gulpfile to make sure
|
||||
// we let them chdir as needed
|
||||
if (process.cwd() !== env.cwd) {
|
||||
process.chdir(env.cwd);
|
||||
gutil.log(
|
||||
'Working directory changed to',
|
||||
chalk.magenta(tildify(env.cwd))
|
||||
);
|
||||
}
|
||||
|
||||
// This is what actually loads up the gulpfile
|
||||
require(env.configPath);
|
||||
gutil.log('Using gulpfile', chalk.magenta(tildify(env.configPath)));
|
||||
|
||||
var gulpInst = require(env.modulePath);
|
||||
logEvents(gulpInst);
|
||||
|
||||
process.nextTick(function() {
|
||||
if (simpleTasksFlag) {
|
||||
return logTasksSimple(env, gulpInst);
|
||||
}
|
||||
if (tasksFlag) {
|
||||
return logTasks(env, gulpInst);
|
||||
}
|
||||
gulpInst.start.apply(gulpInst, toRun);
|
||||
});
|
||||
}
|
||||
|
||||
function logTasks(env, localGulp) {
|
||||
var tree = taskTree(localGulp.tasks);
|
||||
tree.label = 'Tasks for ' + chalk.magenta(tildify(env.configPath));
|
||||
archy(tree)
|
||||
.split('\n')
|
||||
.forEach(function(v) {
|
||||
if (v.trim().length === 0) {
|
||||
return;
|
||||
}
|
||||
gutil.log(v);
|
||||
});
|
||||
}
|
||||
|
||||
function logTasksSimple(env, localGulp) {
|
||||
console.log(Object.keys(localGulp.tasks)
|
||||
.join('\n')
|
||||
.trim());
|
||||
}
|
||||
|
||||
// Format orchestrator errors
|
||||
function formatError(e) {
|
||||
if (!e.err) {
|
||||
return e.message;
|
||||
}
|
||||
|
||||
// PluginError
|
||||
if (typeof e.err.showStack === 'boolean') {
|
||||
return e.err.toString();
|
||||
}
|
||||
|
||||
// Normal error
|
||||
if (e.err.stack) {
|
||||
return e.err.stack;
|
||||
}
|
||||
|
||||
// Unknown (string, number, etc.)
|
||||
return new Error(String(e.err)).stack;
|
||||
}
|
||||
|
||||
// Wire up logging events
|
||||
function logEvents(gulpInst) {
|
||||
|
||||
// Total hack due to poor error management in orchestrator
|
||||
gulpInst.on('err', function() {
|
||||
failed = true;
|
||||
});
|
||||
|
||||
gulpInst.on('task_start', function(e) {
|
||||
// TODO: batch these
|
||||
// so when 5 tasks start at once it only logs one time with all 5
|
||||
gutil.log('Starting', '\'' + chalk.cyan(e.task) + '\'...');
|
||||
});
|
||||
|
||||
gulpInst.on('task_stop', function(e) {
|
||||
var time = prettyTime(e.hrDuration);
|
||||
gutil.log(
|
||||
'Finished', '\'' + chalk.cyan(e.task) + '\'',
|
||||
'after', chalk.magenta(time)
|
||||
);
|
||||
});
|
||||
|
||||
gulpInst.on('task_err', function(e) {
|
||||
var msg = formatError(e);
|
||||
var time = prettyTime(e.hrDuration);
|
||||
gutil.log(
|
||||
'\'' + chalk.cyan(e.task) + '\'',
|
||||
chalk.red('errored after'),
|
||||
chalk.magenta(time)
|
||||
);
|
||||
gutil.log(msg);
|
||||
});
|
||||
|
||||
gulpInst.on('task_not_found', function(err) {
|
||||
gutil.log(
|
||||
chalk.red('Task \'' + err.task + '\' is not in your gulpfile')
|
||||
);
|
||||
gutil.log('Please check the documentation for proper gulpfile formatting');
|
||||
process.exit(1);
|
||||
});
|
||||
}
|
||||
20
server/node_modules/gulp/completion/README.md
generated
vendored
Normal file
20
server/node_modules/gulp/completion/README.md
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
# Completion for gulp
|
||||
> Thanks to grunt team and Tyler Kellen
|
||||
|
||||
To enable tasks auto-completion in shell you should add `eval "$(gulp --completion=shell)"` in your `.shellrc` file.
|
||||
|
||||
## Bash
|
||||
|
||||
Add `eval "$(gulp --completion=bash)"` to `~/.bashrc`.
|
||||
|
||||
## Zsh
|
||||
|
||||
Add `eval "$(gulp --completion=zsh)"` to `~/.zshrc`.
|
||||
|
||||
## Powershell
|
||||
|
||||
Add `Invoke-Expression ((gulp --completion=powershell) -join [System.Environment]::NewLine)` to `$PROFILE`.
|
||||
|
||||
## Fish
|
||||
|
||||
Add `gulp --completion=fish | source` to `~/.config/fish/config.fish`.
|
||||
27
server/node_modules/gulp/completion/bash
generated
vendored
Normal file
27
server/node_modules/gulp/completion/bash
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Borrowed from grunt-cli
|
||||
# http://gruntjs.com/
|
||||
#
|
||||
# Copyright (c) 2012 Tyler Kellen, contributors
|
||||
# Licensed under the MIT license.
|
||||
# https://github.com/gruntjs/grunt/blob/master/LICENSE-MIT
|
||||
|
||||
# Usage:
|
||||
#
|
||||
# To enable bash <tab> completion for gulp, add the following line (minus the
|
||||
# leading #, which is the bash comment character) to your ~/.bashrc file:
|
||||
#
|
||||
# eval "$(gulp --completion=bash)"
|
||||
|
||||
# Enable bash autocompletion.
|
||||
function _gulp_completions() {
|
||||
# The currently-being-completed word.
|
||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
#Grab tasks
|
||||
local compls=$(gulp --tasks-simple)
|
||||
# Tell complete what stuff to show.
|
||||
COMPREPLY=($(compgen -W "$compls" -- "$cur"))
|
||||
}
|
||||
|
||||
complete -o default -F _gulp_completions gulp
|
||||
10
server/node_modules/gulp/completion/fish
generated
vendored
Normal file
10
server/node_modules/gulp/completion/fish
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env fish
|
||||
|
||||
# Usage:
|
||||
#
|
||||
# To enable fish <tab> completion for gulp, add the following line to
|
||||
# your ~/.config/fish/config.fish file:
|
||||
#
|
||||
# gulp --completion=fish | source
|
||||
|
||||
complete -c gulp -a "(gulp --tasks-simple)" -f
|
||||
61
server/node_modules/gulp/completion/powershell
generated
vendored
Normal file
61
server/node_modules/gulp/completion/powershell
generated
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
# Copyright (c) 2014 Jason Jarrett
|
||||
#
|
||||
# Tab completion for the `gulp`
|
||||
#
|
||||
# Usage:
|
||||
#
|
||||
# To enable powershell <tab> completion for gulp you need to be running
|
||||
# at least PowerShell v3 or greater and add the below to your $PROFILE
|
||||
#
|
||||
# Invoke-Expression ((gulp --completion=powershell) -join [System.Environment]::NewLine)
|
||||
#
|
||||
#
|
||||
|
||||
$gulp_completion_Process = {
|
||||
param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter)
|
||||
|
||||
|
||||
# Load up an assembly to read the gulpfile's sha1
|
||||
if(-not $global:GulpSHA1Managed) {
|
||||
[Reflection.Assembly]::LoadWithPartialName("System.Security") | out-null
|
||||
$global:GulpSHA1Managed = new-Object System.Security.Cryptography.SHA1Managed
|
||||
}
|
||||
|
||||
# setup a global (in-memory) cache
|
||||
if(-not $global:GulpfileShaCache) {
|
||||
$global:GulpfileShaCache = @{};
|
||||
}
|
||||
|
||||
$cache = $global:GulpfileShaCache;
|
||||
|
||||
# Get the gulpfile's sha1
|
||||
$sha1gulpFile = (resolve-path gulpfile.js -ErrorAction Ignore | %{
|
||||
$file = [System.IO.File]::Open($_.Path, "open", "read")
|
||||
[string]::join('', ($global:GulpSHA1Managed.ComputeHash($file) | %{ $_.ToString("x2") }))
|
||||
$file.Dispose()
|
||||
})
|
||||
|
||||
# lookup the sha1 for previously cached task lists.
|
||||
if($cache.ContainsKey($sha1gulpFile)){
|
||||
$tasks = $cache[$sha1gulpFile];
|
||||
} else {
|
||||
$tasks = (gulp --tasks-simple).split("`n");
|
||||
$cache[$sha1gulpFile] = $tasks;
|
||||
}
|
||||
|
||||
|
||||
$tasks |
|
||||
where { $_.startswith($commandName) }
|
||||
Sort-Object |
|
||||
foreach { New-Object System.Management.Automation.CompletionResult $_, $_, 'ParameterValue', ('{0}' -f $_) }
|
||||
}
|
||||
|
||||
if (-not $global:options) {
|
||||
$global:options = @{
|
||||
CustomArgumentCompleters = @{};
|
||||
NativeArgumentCompleters = @{}
|
||||
}
|
||||
}
|
||||
|
||||
$global:options['NativeArgumentCompleters']['gulp'] = $gulp_completion_Process
|
||||
$function:tabexpansion2 = $function:tabexpansion2 -replace 'End\r\n{','End { if ($null -ne $options) { $options += $global:options} else {$options = $global:options}'
|
||||
25
server/node_modules/gulp/completion/zsh
generated
vendored
Normal file
25
server/node_modules/gulp/completion/zsh
generated
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
#!/bin/zsh
|
||||
|
||||
# Borrowed from grunt-cli
|
||||
# http://gruntjs.com/
|
||||
#
|
||||
# Copyright (c) 2012 Tyler Kellen, contributors
|
||||
# Licensed under the MIT license.
|
||||
# https://github.com/gruntjs/grunt/blob/master/LICENSE-MIT
|
||||
|
||||
# Usage:
|
||||
#
|
||||
# To enable zsh <tab> completion for gulp, add the following line (minus the
|
||||
# leading #, which is the zsh comment character) to your ~/.zshrc file:
|
||||
#
|
||||
# eval "$(gulp --completion=zsh)"
|
||||
|
||||
# Enable zsh autocompletion.
|
||||
function _gulp_completion() {
|
||||
# Grab tasks
|
||||
compls=$(gulp --tasks-simple)
|
||||
completions=(${=compls})
|
||||
compadd -- $completions
|
||||
}
|
||||
|
||||
compdef _gulp_completion gulp
|
||||
63
server/node_modules/gulp/index.js
generated
vendored
Normal file
63
server/node_modules/gulp/index.js
generated
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
'use strict';
|
||||
|
||||
var util = require('util');
|
||||
var Orchestrator = require('orchestrator');
|
||||
var gutil = require('gulp-util');
|
||||
var deprecated = require('deprecated');
|
||||
var vfs = require('vinyl-fs');
|
||||
|
||||
function Gulp() {
|
||||
Orchestrator.call(this);
|
||||
}
|
||||
util.inherits(Gulp, Orchestrator);
|
||||
|
||||
Gulp.prototype.task = Gulp.prototype.add;
|
||||
Gulp.prototype.run = function() {
|
||||
// `run()` is deprecated as of 3.5 and will be removed in 4.0
|
||||
// Use task dependencies instead
|
||||
|
||||
// Impose our opinion of "default" tasks onto orchestrator
|
||||
var tasks = arguments.length ? arguments : ['default'];
|
||||
|
||||
this.start.apply(this, tasks);
|
||||
};
|
||||
|
||||
Gulp.prototype.src = vfs.src;
|
||||
Gulp.prototype.dest = vfs.dest;
|
||||
Gulp.prototype.watch = function(glob, opt, fn) {
|
||||
if (typeof opt === 'function' || Array.isArray(opt)) {
|
||||
fn = opt;
|
||||
opt = null;
|
||||
}
|
||||
|
||||
// Array of tasks given
|
||||
if (Array.isArray(fn)) {
|
||||
return vfs.watch(glob, opt, function() {
|
||||
this.start.apply(this, fn);
|
||||
}.bind(this));
|
||||
}
|
||||
|
||||
return vfs.watch(glob, opt, fn);
|
||||
};
|
||||
|
||||
// Let people use this class from our instance
|
||||
Gulp.prototype.Gulp = Gulp;
|
||||
|
||||
// Deprecations
|
||||
deprecated.field('gulp.env has been deprecated. ' +
|
||||
'Use your own CLI parser instead. ' +
|
||||
'We recommend using yargs or minimist.',
|
||||
console.warn,
|
||||
Gulp.prototype,
|
||||
'env',
|
||||
gutil.env
|
||||
);
|
||||
|
||||
Gulp.prototype.run = deprecated.method('gulp.run() has been deprecated. ' +
|
||||
'Use task dependencies or gulp.watch task triggering instead.',
|
||||
console.warn,
|
||||
Gulp.prototype.run
|
||||
);
|
||||
|
||||
var inst = new Gulp();
|
||||
module.exports = inst;
|
||||
22
server/node_modules/gulp/lib/completion.js
generated
vendored
Normal file
22
server/node_modules/gulp/lib/completion.js
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
'use strict';
|
||||
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
|
||||
module.exports = function(name) {
|
||||
if (typeof name !== 'string') {
|
||||
throw new Error('Missing completion type');
|
||||
}
|
||||
var file = path.join(__dirname, '../completion', name);
|
||||
try {
|
||||
console.log(fs.readFileSync(file, 'utf8'));
|
||||
process.exit(0);
|
||||
} catch (err) {
|
||||
console.log(
|
||||
'echo "gulp autocompletion rules for',
|
||||
'\'' + name + '\'',
|
||||
'not found"'
|
||||
);
|
||||
process.exit(5);
|
||||
}
|
||||
};
|
||||
14
server/node_modules/gulp/lib/taskTree.js
generated
vendored
Normal file
14
server/node_modules/gulp/lib/taskTree.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = function(tasks) {
|
||||
return Object.keys(tasks)
|
||||
.reduce(function(prev, task) {
|
||||
prev.nodes.push({
|
||||
label: task,
|
||||
nodes: tasks[task].dep,
|
||||
});
|
||||
return prev;
|
||||
}, {
|
||||
nodes: [],
|
||||
});
|
||||
};
|
||||
1
server/node_modules/gulp/node_modules/.bin/semver
generated
vendored
Symbolic link
1
server/node_modules/gulp/node_modules/.bin/semver
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../semver/bin/semver
|
||||
4
server/node_modules/gulp/node_modules/archy/.travis.yml
generated
vendored
Normal file
4
server/node_modules/gulp/node_modules/archy/.travis.yml
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- 0.6
|
||||
- 0.8
|
||||
18
server/node_modules/gulp/node_modules/archy/LICENSE
generated
vendored
Normal file
18
server/node_modules/gulp/node_modules/archy/LICENSE
generated
vendored
Normal file
@@ -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.
|
||||
24
server/node_modules/gulp/node_modules/archy/examples/beep.js
generated
vendored
Normal file
24
server/node_modules/gulp/node_modules/archy/examples/beep.js
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
var archy = require('../');
|
||||
var s = archy({
|
||||
label : 'beep',
|
||||
nodes : [
|
||||
'ity',
|
||||
{
|
||||
label : 'boop',
|
||||
nodes : [
|
||||
{
|
||||
label : 'o_O',
|
||||
nodes : [
|
||||
{
|
||||
label : 'oh',
|
||||
nodes : [ 'hello', 'puny' ]
|
||||
},
|
||||
'human'
|
||||
]
|
||||
},
|
||||
'party\ntime!'
|
||||
]
|
||||
}
|
||||
]
|
||||
});
|
||||
console.log(s);
|
||||
25
server/node_modules/gulp/node_modules/archy/examples/multi_line.js
generated
vendored
Normal file
25
server/node_modules/gulp/node_modules/archy/examples/multi_line.js
generated
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
var archy = require('../');
|
||||
|
||||
var s = archy({
|
||||
label : 'beep\none\ntwo',
|
||||
nodes : [
|
||||
'ity',
|
||||
{
|
||||
label : 'boop',
|
||||
nodes : [
|
||||
{
|
||||
label : 'o_O\nwheee',
|
||||
nodes : [
|
||||
{
|
||||
label : 'oh',
|
||||
nodes : [ 'hello', 'puny\nmeat' ]
|
||||
},
|
||||
'creature'
|
||||
]
|
||||
},
|
||||
'party\ntime!'
|
||||
]
|
||||
}
|
||||
]
|
||||
});
|
||||
console.log(s);
|
||||
35
server/node_modules/gulp/node_modules/archy/index.js
generated
vendored
Normal file
35
server/node_modules/gulp/node_modules/archy/index.js
generated
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
module.exports = function archy (obj, prefix, opts) {
|
||||
if (prefix === undefined) prefix = '';
|
||||
if (!opts) opts = {};
|
||||
var chr = function (s) {
|
||||
var chars = {
|
||||
'│' : '|',
|
||||
'└' : '`',
|
||||
'├' : '+',
|
||||
'─' : '-',
|
||||
'┬' : '-'
|
||||
};
|
||||
return opts.unicode === false ? chars[s] : s;
|
||||
};
|
||||
|
||||
if (typeof obj === 'string') obj = { label : obj };
|
||||
|
||||
var nodes = obj.nodes || [];
|
||||
var lines = (obj.label || '').split('\n');
|
||||
var splitter = '\n' + prefix + (nodes.length ? chr('│') : ' ') + ' ';
|
||||
|
||||
return prefix
|
||||
+ lines.join(splitter) + '\n'
|
||||
+ nodes.map(function (node, ix) {
|
||||
var last = ix === nodes.length - 1;
|
||||
var more = node.nodes && node.nodes.length;
|
||||
var prefix_ = prefix + (last ? ' ' : chr('│')) + ' ';
|
||||
|
||||
return prefix
|
||||
+ (last ? chr('└') : chr('├')) + chr('─')
|
||||
+ (more ? chr('┬') : chr('─')) + ' '
|
||||
+ archy(node, prefix_, opts).slice(prefix.length + 2)
|
||||
;
|
||||
}).join('')
|
||||
;
|
||||
};
|
||||
61
server/node_modules/gulp/node_modules/archy/package.json
generated
vendored
Normal file
61
server/node_modules/gulp/node_modules/archy/package.json
generated
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"name": "archy",
|
||||
"version": "1.0.0",
|
||||
"description": "render nested hierarchies `npm ls` style with unicode pipes",
|
||||
"main": "index.js",
|
||||
"devDependencies": {
|
||||
"tap": "~0.3.3",
|
||||
"tape": "~0.1.1"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "tap test"
|
||||
},
|
||||
"testling": {
|
||||
"files": "test/*.js",
|
||||
"browsers": {
|
||||
"iexplore": [
|
||||
"6.0",
|
||||
"7.0",
|
||||
"8.0",
|
||||
"9.0"
|
||||
],
|
||||
"chrome": [
|
||||
"20.0"
|
||||
],
|
||||
"firefox": [
|
||||
"10.0",
|
||||
"15.0"
|
||||
],
|
||||
"safari": [
|
||||
"5.1"
|
||||
],
|
||||
"opera": [
|
||||
"12.0"
|
||||
]
|
||||
}
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "http://github.com/substack/node-archy.git"
|
||||
},
|
||||
"keywords": [
|
||||
"hierarchy",
|
||||
"npm ls",
|
||||
"unicode",
|
||||
"pretty",
|
||||
"print"
|
||||
],
|
||||
"author": {
|
||||
"name": "James Halliday",
|
||||
"email": "mail@substack.net",
|
||||
"url": "http://substack.net"
|
||||
},
|
||||
"license": "MIT",
|
||||
"readme": "# archy\n\nRender nested hierarchies `npm ls` style with unicode pipes.\n\n[](http://ci.testling.com/substack/node-archy)\n\n[](http://travis-ci.org/substack/node-archy)\n\n# example\n\n``` js\nvar archy = require('archy');\nvar s = archy({\n label : 'beep',\n nodes : [\n 'ity',\n {\n label : 'boop',\n nodes : [\n {\n label : 'o_O',\n nodes : [\n {\n label : 'oh',\n nodes : [ 'hello', 'puny' ]\n },\n 'human'\n ]\n },\n 'party\\ntime!'\n ]\n }\n ]\n});\nconsole.log(s);\n```\n\noutput\n\n```\nbeep\n├── ity\n└─┬ boop\n ├─┬ o_O\n │ ├─┬ oh\n │ │ ├── hello\n │ │ └── puny\n │ └── human\n └── party\n time!\n```\n\n# methods\n\nvar archy = require('archy')\n\n## archy(obj, prefix='', opts={})\n\nReturn a string representation of `obj` with unicode pipe characters like how\n`npm ls` looks.\n\n`obj` should be a tree of nested objects with `'label'` and `'nodes'` fields.\n`'label'` is a string of text to display at a node level and `'nodes'` is an\narray of the descendents of the current node.\n\nIf a node is a string, that string will be used as the `'label'` and an empty\narray of `'nodes'` will be used.\n\n`prefix` gets prepended to all the lines and is used by the algorithm to\nrecursively update.\n\nIf `'label'` has newlines they will be indented at the present indentation level\nwith the current prefix.\n\nTo disable unicode results in favor of all-ansi output set `opts.unicode` to\n`false`.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install archy\n```\n\n# license\n\nMIT\n",
|
||||
"readmeFilename": "readme.markdown",
|
||||
"bugs": {
|
||||
"url": "https://github.com/substack/node-archy/issues"
|
||||
},
|
||||
"_id": "archy@1.0.0",
|
||||
"_from": "archy@^1.0.0"
|
||||
}
|
||||
88
server/node_modules/gulp/node_modules/archy/readme.markdown
generated
vendored
Normal file
88
server/node_modules/gulp/node_modules/archy/readme.markdown
generated
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
# archy
|
||||
|
||||
Render nested hierarchies `npm ls` style with unicode pipes.
|
||||
|
||||
[](http://ci.testling.com/substack/node-archy)
|
||||
|
||||
[](http://travis-ci.org/substack/node-archy)
|
||||
|
||||
# example
|
||||
|
||||
``` js
|
||||
var archy = require('archy');
|
||||
var s = archy({
|
||||
label : 'beep',
|
||||
nodes : [
|
||||
'ity',
|
||||
{
|
||||
label : 'boop',
|
||||
nodes : [
|
||||
{
|
||||
label : 'o_O',
|
||||
nodes : [
|
||||
{
|
||||
label : 'oh',
|
||||
nodes : [ 'hello', 'puny' ]
|
||||
},
|
||||
'human'
|
||||
]
|
||||
},
|
||||
'party\ntime!'
|
||||
]
|
||||
}
|
||||
]
|
||||
});
|
||||
console.log(s);
|
||||
```
|
||||
|
||||
output
|
||||
|
||||
```
|
||||
beep
|
||||
├── ity
|
||||
└─┬ boop
|
||||
├─┬ o_O
|
||||
│ ├─┬ oh
|
||||
│ │ ├── hello
|
||||
│ │ └── puny
|
||||
│ └── human
|
||||
└── party
|
||||
time!
|
||||
```
|
||||
|
||||
# methods
|
||||
|
||||
var archy = require('archy')
|
||||
|
||||
## archy(obj, prefix='', opts={})
|
||||
|
||||
Return a string representation of `obj` with unicode pipe characters like how
|
||||
`npm ls` looks.
|
||||
|
||||
`obj` should be a tree of nested objects with `'label'` and `'nodes'` fields.
|
||||
`'label'` is a string of text to display at a node level and `'nodes'` is an
|
||||
array of the descendents of the current node.
|
||||
|
||||
If a node is a string, that string will be used as the `'label'` and an empty
|
||||
array of `'nodes'` will be used.
|
||||
|
||||
`prefix` gets prepended to all the lines and is used by the algorithm to
|
||||
recursively update.
|
||||
|
||||
If `'label'` has newlines they will be indented at the present indentation level
|
||||
with the current prefix.
|
||||
|
||||
To disable unicode results in favor of all-ansi output set `opts.unicode` to
|
||||
`false`.
|
||||
|
||||
# install
|
||||
|
||||
With [npm](http://npmjs.org) do:
|
||||
|
||||
```
|
||||
npm install archy
|
||||
```
|
||||
|
||||
# license
|
||||
|
||||
MIT
|
||||
40
server/node_modules/gulp/node_modules/archy/test/beep.js
generated
vendored
Normal file
40
server/node_modules/gulp/node_modules/archy/test/beep.js
generated
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
var test = require('tape');
|
||||
var archy = require('../');
|
||||
|
||||
test('beep', function (t) {
|
||||
var s = archy({
|
||||
label : 'beep',
|
||||
nodes : [
|
||||
'ity',
|
||||
{
|
||||
label : 'boop',
|
||||
nodes : [
|
||||
{
|
||||
label : 'o_O',
|
||||
nodes : [
|
||||
{
|
||||
label : 'oh',
|
||||
nodes : [ 'hello', 'puny' ]
|
||||
},
|
||||
'human'
|
||||
]
|
||||
},
|
||||
'party!'
|
||||
]
|
||||
}
|
||||
]
|
||||
});
|
||||
t.equal(s, [
|
||||
'beep',
|
||||
'├── ity',
|
||||
'└─┬ boop',
|
||||
' ├─┬ o_O',
|
||||
' │ ├─┬ oh',
|
||||
' │ │ ├── hello',
|
||||
' │ │ └── puny',
|
||||
' │ └── human',
|
||||
' └── party!',
|
||||
''
|
||||
].join('\n'));
|
||||
t.end();
|
||||
});
|
||||
45
server/node_modules/gulp/node_modules/archy/test/multi_line.js
generated
vendored
Normal file
45
server/node_modules/gulp/node_modules/archy/test/multi_line.js
generated
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
var test = require('tape');
|
||||
var archy = require('../');
|
||||
|
||||
test('multi-line', function (t) {
|
||||
var s = archy({
|
||||
label : 'beep\none\ntwo',
|
||||
nodes : [
|
||||
'ity',
|
||||
{
|
||||
label : 'boop',
|
||||
nodes : [
|
||||
{
|
||||
label : 'o_O\nwheee',
|
||||
nodes : [
|
||||
{
|
||||
label : 'oh',
|
||||
nodes : [ 'hello', 'puny\nmeat' ]
|
||||
},
|
||||
'creature'
|
||||
]
|
||||
},
|
||||
'party\ntime!'
|
||||
]
|
||||
}
|
||||
]
|
||||
});
|
||||
t.equal(s, [
|
||||
'beep',
|
||||
'│ one',
|
||||
'│ two',
|
||||
'├── ity',
|
||||
'└─┬ boop',
|
||||
' ├─┬ o_O',
|
||||
' │ │ wheee',
|
||||
' │ ├─┬ oh',
|
||||
' │ │ ├── hello',
|
||||
' │ │ └── puny',
|
||||
' │ │ meat',
|
||||
' │ └── creature',
|
||||
' └── party',
|
||||
' time!',
|
||||
''
|
||||
].join('\n'));
|
||||
t.end();
|
||||
});
|
||||
40
server/node_modules/gulp/node_modules/archy/test/non_unicode.js
generated
vendored
Normal file
40
server/node_modules/gulp/node_modules/archy/test/non_unicode.js
generated
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
var test = require('tape');
|
||||
var archy = require('../');
|
||||
|
||||
test('beep', function (t) {
|
||||
var s = archy({
|
||||
label : 'beep',
|
||||
nodes : [
|
||||
'ity',
|
||||
{
|
||||
label : 'boop',
|
||||
nodes : [
|
||||
{
|
||||
label : 'o_O',
|
||||
nodes : [
|
||||
{
|
||||
label : 'oh',
|
||||
nodes : [ 'hello', 'puny' ]
|
||||
},
|
||||
'human'
|
||||
]
|
||||
},
|
||||
'party!'
|
||||
]
|
||||
}
|
||||
]
|
||||
}, '', { unicode : false });
|
||||
t.equal(s, [
|
||||
'beep',
|
||||
'+-- ity',
|
||||
'`-- boop',
|
||||
' +-- o_O',
|
||||
' | +-- oh',
|
||||
' | | +-- hello',
|
||||
' | | `-- puny',
|
||||
' | `-- human',
|
||||
' `-- party!',
|
||||
''
|
||||
].join('\n'));
|
||||
t.end();
|
||||
});
|
||||
100
server/node_modules/gulp/node_modules/chalk/index.js
generated
vendored
Normal file
100
server/node_modules/gulp/node_modules/chalk/index.js
generated
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
'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;
|
||||
|
||||
function Chalk(options) {
|
||||
// detect mode if not set manually
|
||||
this.enabled = !options || options.enabled === undefined ? supportsColor : options.enabled;
|
||||
}
|
||||
|
||||
// use bright blue on Windows as the normal blue color is illegible
|
||||
if (process.platform === 'win32') {
|
||||
ansiStyles.blue.open = '\u001b[94m';
|
||||
}
|
||||
|
||||
function build(_styles) {
|
||||
var builder = function builder() {
|
||||
return applyStyle.apply(builder, arguments);
|
||||
};
|
||||
builder._styles = _styles;
|
||||
builder.enabled = this.enabled;
|
||||
// __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 = {};
|
||||
|
||||
Object.keys(ansiStyles).forEach(function (key) {
|
||||
ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
|
||||
|
||||
ret[key] = {
|
||||
get: function () {
|
||||
return build.call(this, 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 (!this.enabled || !str) {
|
||||
return str;
|
||||
}
|
||||
|
||||
/*jshint validthis: true */
|
||||
var nestedStyles = this._styles;
|
||||
|
||||
var i = nestedStyles.length;
|
||||
while (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.call(this, [name]);
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
defineProps(Chalk.prototype, init());
|
||||
|
||||
module.exports = new Chalk();
|
||||
module.exports.styles = ansiStyles;
|
||||
module.exports.hasColor = hasAnsi;
|
||||
module.exports.stripColor = stripAnsi;
|
||||
module.exports.supportsColor = supportsColor;
|
||||
1
server/node_modules/gulp/node_modules/chalk/node_modules/.bin/has-ansi
generated
vendored
Symbolic link
1
server/node_modules/gulp/node_modules/chalk/node_modules/.bin/has-ansi
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../has-ansi/cli.js
|
||||
1
server/node_modules/gulp/node_modules/chalk/node_modules/.bin/strip-ansi
generated
vendored
Symbolic link
1
server/node_modules/gulp/node_modules/chalk/node_modules/.bin/strip-ansi
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../strip-ansi/cli.js
|
||||
1
server/node_modules/gulp/node_modules/chalk/node_modules/.bin/supports-color
generated
vendored
Symbolic link
1
server/node_modules/gulp/node_modules/chalk/node_modules/.bin/supports-color
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../supports-color/cli.js
|
||||
56
server/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/index.js
generated
vendored
Normal file
56
server/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/index.js
generated
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
'use strict';
|
||||
|
||||
var styles = module.exports = {
|
||||
modifiers: {
|
||||
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]
|
||||
},
|
||||
colors: {
|
||||
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]
|
||||
},
|
||||
bgColors: {
|
||||
bgBlack: [40, 49],
|
||||
bgRed: [41, 49],
|
||||
bgGreen: [42, 49],
|
||||
bgYellow: [43, 49],
|
||||
bgBlue: [44, 49],
|
||||
bgMagenta: [45, 49],
|
||||
bgCyan: [46, 49],
|
||||
bgWhite: [47, 49]
|
||||
}
|
||||
};
|
||||
|
||||
// fix humans
|
||||
styles.colors.grey = styles.colors.gray;
|
||||
|
||||
Object.keys(styles).forEach(function (groupName) {
|
||||
var group = styles[groupName];
|
||||
|
||||
Object.keys(group).forEach(function (styleName) {
|
||||
var style = group[styleName];
|
||||
|
||||
styles[styleName] = group[styleName] = {
|
||||
open: '\u001b[' + style[0] + 'm',
|
||||
close: '\u001b[' + style[1] + 'm'
|
||||
};
|
||||
});
|
||||
|
||||
Object.defineProperty(styles, groupName, {
|
||||
value: group,
|
||||
enumerable: false
|
||||
});
|
||||
});
|
||||
68
server/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/package.json
generated
vendored
Normal file
68
server/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/package.json
generated
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"name": "ansi-styles",
|
||||
"version": "2.0.1",
|
||||
"description": "ANSI escape codes for styling strings in the terminal",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sindresorhus/ansi-styles"
|
||||
},
|
||||
"author": {
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
{
|
||||
"name": "Joshua Appelman",
|
||||
"email": "jappelman@xebia.com",
|
||||
"url": "http://jbnicolai.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": "*"
|
||||
},
|
||||
"readme": "# ansi-styles [](https://travis-ci.org/sindresorhus/ansi-styles)\n\n> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal\n\nYou probably want the higher-level [chalk](https://github.com/sindresorhus/chalk) module for styling your strings.\n\n\n\n\n## Install\n\n```sh\n$ npm install --save ansi-styles\n```\n\n\n## Usage\n\n```js\nvar ansi = require('ansi-styles');\n\nconsole.log(ansi.green.open + 'Hello world!' + ansi.green.close);\n```\n\n\n## API\n\nEach style has an `open` and `close` property.\n\n\n## Styles\n\n### Modifiers\n\n- `reset`\n- `bold`\n- `dim`\n- `italic` *(not widely supported)*\n- `underline`\n- `inverse`\n- `hidden`\n- `strikethrough` *(not widely supported)*\n\n### Colors\n\n- `black`\n- `red`\n- `green`\n- `yellow`\n- `blue`\n- `magenta`\n- `cyan`\n- `white`\n- `gray`\n\n### Background colors\n\n- `bgBlack`\n- `bgRed`\n- `bgGreen`\n- `bgYellow`\n- `bgBlue`\n- `bgMagenta`\n- `bgCyan`\n- `bgWhite`\n\n\n## Advanced usage\n\nBy default you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module.\n\n- `ansi.modifiers`\n- `ansi.colors`\n- `ansi.bgColors`\n\n\n###### Example\n\n```js\nconsole.log(ansi.colors.green.open);\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
|
||||
"readmeFilename": "readme.md",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/ansi-styles/issues"
|
||||
},
|
||||
"_id": "ansi-styles@2.0.1",
|
||||
"_from": "ansi-styles@^2.0.1"
|
||||
}
|
||||
86
server/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/readme.md
generated
vendored
Normal file
86
server/node_modules/gulp/node_modules/chalk/node_modules/ansi-styles/readme.md
generated
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
# ansi-styles [](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.
|
||||
|
||||

|
||||
|
||||
|
||||
## 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
|
||||
|
||||
### Modifiers
|
||||
|
||||
- `reset`
|
||||
- `bold`
|
||||
- `dim`
|
||||
- `italic` *(not widely supported)*
|
||||
- `underline`
|
||||
- `inverse`
|
||||
- `hidden`
|
||||
- `strikethrough` *(not widely supported)*
|
||||
|
||||
### Colors
|
||||
|
||||
- `black`
|
||||
- `red`
|
||||
- `green`
|
||||
- `yellow`
|
||||
- `blue`
|
||||
- `magenta`
|
||||
- `cyan`
|
||||
- `white`
|
||||
- `gray`
|
||||
|
||||
### Background colors
|
||||
|
||||
- `bgBlack`
|
||||
- `bgRed`
|
||||
- `bgGreen`
|
||||
- `bgYellow`
|
||||
- `bgBlue`
|
||||
- `bgMagenta`
|
||||
- `bgCyan`
|
||||
- `bgWhite`
|
||||
|
||||
|
||||
## Advanced usage
|
||||
|
||||
By default you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module.
|
||||
|
||||
- `ansi.modifiers`
|
||||
- `ansi.colors`
|
||||
- `ansi.bgColors`
|
||||
|
||||
|
||||
###### Example
|
||||
|
||||
```js
|
||||
console.log(ansi.colors.green.open);
|
||||
```
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
||||
11
server/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/index.js
generated
vendored
Normal file
11
server/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/index.js
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
'use strict';
|
||||
|
||||
var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
|
||||
|
||||
module.exports = function (str) {
|
||||
if (typeof str !== 'string') {
|
||||
throw new TypeError('Expected a string');
|
||||
}
|
||||
|
||||
return str.replace(matchOperatorsRe, '\\$&');
|
||||
};
|
||||
58
server/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/package.json
generated
vendored
Normal file
58
server/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/package.json
generated
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"name": "escape-string-regexp",
|
||||
"version": "1.0.3",
|
||||
"description": "Escape RegExp special characters",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sindresorhus/escape-string-regexp"
|
||||
},
|
||||
"author": {
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
{
|
||||
"name": "Joshua Appelman",
|
||||
"email": "jappelman@xebia.com",
|
||||
"url": "http://jbnicolai.com"
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=0.8.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "mocha"
|
||||
},
|
||||
"files": [
|
||||
"index.js"
|
||||
],
|
||||
"keywords": [
|
||||
"regex",
|
||||
"regexp",
|
||||
"re",
|
||||
"regular",
|
||||
"expression",
|
||||
"escape",
|
||||
"string",
|
||||
"str",
|
||||
"special",
|
||||
"characters"
|
||||
],
|
||||
"devDependencies": {
|
||||
"mocha": "*"
|
||||
},
|
||||
"readme": "# escape-string-regexp [](https://travis-ci.org/sindresorhus/escape-string-regexp)\n\n> Escape RegExp special characters\n\n\n## Install\n\n```sh\n$ npm install --save escape-string-regexp\n```\n\n\n## Usage\n\n```js\nvar escapeStringRegexp = require('escape-string-regexp');\n\nvar escapedString = escapeStringRegexp('how much $ for a unicorn?');\n//=> how much \\$ for a unicorn\\?\n\nnew RegExp(escapedString);\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
|
||||
"readmeFilename": "readme.md",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/escape-string-regexp/issues"
|
||||
},
|
||||
"_id": "escape-string-regexp@1.0.3",
|
||||
"_from": "escape-string-regexp@^1.0.2"
|
||||
}
|
||||
27
server/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/readme.md
generated
vendored
Normal file
27
server/node_modules/gulp/node_modules/chalk/node_modules/escape-string-regexp/readme.md
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
# escape-string-regexp [](https://travis-ci.org/sindresorhus/escape-string-regexp)
|
||||
|
||||
> Escape RegExp special characters
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
$ npm install --save escape-string-regexp
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
var escapeStringRegexp = require('escape-string-regexp');
|
||||
|
||||
var escapedString = escapeStringRegexp('how much $ for a unicorn?');
|
||||
//=> how much \$ for a unicorn\?
|
||||
|
||||
new RegExp(escapedString);
|
||||
```
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
||||
45
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/cli.js
generated
vendored
Executable file
45
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/cli.js
generated
vendored
Executable file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env node
|
||||
'use strict';
|
||||
var stdin = require('get-stdin');
|
||||
var pkg = require('./package.json');
|
||||
var hasAnsi = require('./');
|
||||
var argv = process.argv.slice(2);
|
||||
var input = argv[0];
|
||||
|
||||
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 (argv.indexOf('--help') !== -1) {
|
||||
help();
|
||||
return;
|
||||
}
|
||||
|
||||
if (argv.indexOf('--version') !== -1) {
|
||||
console.log(pkg.version);
|
||||
return;
|
||||
}
|
||||
|
||||
if (process.stdin.isTTY) {
|
||||
if (!input) {
|
||||
help();
|
||||
return;
|
||||
}
|
||||
|
||||
init(input);
|
||||
} else {
|
||||
stdin(init);
|
||||
}
|
||||
4
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/index.js
generated
vendored
Normal file
4
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/index.js
generated
vendored
Normal file
@@ -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);
|
||||
4
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js
generated
vendored
Normal file
4
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
'use strict';
|
||||
module.exports = function () {
|
||||
return /(?:(?:\u001b\[)|\u009b)(?:(?:[0-9]{1,3})?(?:(?:;[0-9]{0,3})*)?[A-M|f-m])|\u001b[A-M]/g;
|
||||
};
|
||||
74
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json
generated
vendored
Normal file
74
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json
generated
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"name": "ansi-regex",
|
||||
"version": "1.1.1",
|
||||
"description": "Regular expression for matching ANSI escape codes",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sindresorhus/ansi-regex"
|
||||
},
|
||||
"author": {
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
{
|
||||
"name": "Joshua Appelman",
|
||||
"email": "jappelman@xebia.com",
|
||||
"url": "http://jbnicolai.com"
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "mocha test/test.js",
|
||||
"view-supported": "node test/viewCodes.js"
|
||||
},
|
||||
"files": [
|
||||
"index.js"
|
||||
],
|
||||
"keywords": [
|
||||
"ansi",
|
||||
"styles",
|
||||
"color",
|
||||
"colour",
|
||||
"colors",
|
||||
"terminal",
|
||||
"console",
|
||||
"cli",
|
||||
"string",
|
||||
"tty",
|
||||
"escape",
|
||||
"formatting",
|
||||
"rgb",
|
||||
"256",
|
||||
"shell",
|
||||
"xterm",
|
||||
"command-line",
|
||||
"text",
|
||||
"regex",
|
||||
"regexp",
|
||||
"re",
|
||||
"match",
|
||||
"test",
|
||||
"find",
|
||||
"pattern"
|
||||
],
|
||||
"devDependencies": {
|
||||
"mocha": "*"
|
||||
},
|
||||
"readme": "# ansi-regex [](https://travis-ci.org/sindresorhus/ansi-regex)\n\n> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)\n\n\n## Install\n\n```sh\n$ npm install --save ansi-regex\n```\n\n\n## Usage\n\n```js\nvar ansiRegex = require('ansi-regex');\n\nansiRegex().test('\\u001b[4mcake\\u001b[0m');\n//=> true\n\nansiRegex().test('cake');\n//=> false\n\n'\\u001b[4mcake\\u001b[0m'.match(ansiRegex());\n//=> ['\\u001b[4m', '\\u001b[0m']\n```\n\n*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.*\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
|
||||
"readmeFilename": "readme.md",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/ansi-regex/issues"
|
||||
},
|
||||
"_id": "ansi-regex@1.1.1",
|
||||
"_from": "ansi-regex@^1.1.0"
|
||||
}
|
||||
33
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md
generated
vendored
Normal file
33
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md
generated
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
# ansi-regex [](https://travis-ci.org/sindresorhus/ansi-regex)
|
||||
|
||||
> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
$ npm install --save ansi-regex
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
var ansiRegex = require('ansi-regex');
|
||||
|
||||
ansiRegex().test('\u001b[4mcake\u001b[0m');
|
||||
//=> true
|
||||
|
||||
ansiRegex().test('cake');
|
||||
//=> false
|
||||
|
||||
'\u001b[4mcake\u001b[0m'.match(ansiRegex());
|
||||
//=> ['\u001b[4m', '\u001b[0m']
|
||||
```
|
||||
|
||||
*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.*
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
||||
49
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/index.js
generated
vendored
Normal file
49
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/index.js
generated
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = function (cb) {
|
||||
var stdin = process.stdin;
|
||||
var ret = '';
|
||||
|
||||
if (stdin.isTTY) {
|
||||
setImmediate(cb, '');
|
||||
return;
|
||||
}
|
||||
|
||||
stdin.setEncoding('utf8');
|
||||
|
||||
stdin.on('readable', function () {
|
||||
var chunk;
|
||||
|
||||
while (chunk = stdin.read()) {
|
||||
ret += chunk;
|
||||
}
|
||||
});
|
||||
|
||||
stdin.on('end', function () {
|
||||
cb(ret);
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.buffer = function (cb) {
|
||||
var stdin = process.stdin;
|
||||
var ret = [];
|
||||
var len = 0;
|
||||
|
||||
if (stdin.isTTY) {
|
||||
setImmediate(cb, new Buffer(''));
|
||||
return;
|
||||
}
|
||||
|
||||
stdin.on('readable', function () {
|
||||
var chunk;
|
||||
|
||||
while (chunk = stdin.read()) {
|
||||
ret.push(chunk);
|
||||
len += chunk.length;
|
||||
}
|
||||
});
|
||||
|
||||
stdin.on('end', function () {
|
||||
cb(Buffer.concat(ret, len));
|
||||
});
|
||||
};
|
||||
45
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/package.json
generated
vendored
Normal file
45
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/package.json
generated
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"name": "get-stdin",
|
||||
"version": "4.0.1",
|
||||
"description": "Easier stdin",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sindresorhus/get-stdin"
|
||||
},
|
||||
"author": {
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "node test.js && node test-buffer.js && echo unicorns | node test-real.js"
|
||||
},
|
||||
"files": [
|
||||
"index.js"
|
||||
],
|
||||
"keywords": [
|
||||
"std",
|
||||
"stdin",
|
||||
"stdio",
|
||||
"concat",
|
||||
"buffer",
|
||||
"stream",
|
||||
"process",
|
||||
"stream"
|
||||
],
|
||||
"devDependencies": {
|
||||
"ava": "0.0.4",
|
||||
"buffer-equal": "0.0.1"
|
||||
},
|
||||
"readme": "# get-stdin [](https://travis-ci.org/sindresorhus/get-stdin)\n\n> Easier stdin\n\n\n## Install\n\n```sh\n$ npm install --save get-stdin\n```\n\n\n## Usage\n\n```js\n// example.js\nvar stdin = require('get-stdin');\n\nstdin(function (data) {\n\tconsole.log(data);\n\t//=> unicorns\n});\n```\n\n```sh\n$ echo unicorns | node example.js\nunicorns\n```\n\n\n## API\n\n### stdin(callback)\n\nGet `stdin` as a string.\n\n### stdin.buffer(callback)\n\nGet `stdin` as a buffer.\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
|
||||
"readmeFilename": "readme.md",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/get-stdin/issues"
|
||||
},
|
||||
"_id": "get-stdin@4.0.1",
|
||||
"_from": "get-stdin@^4.0.1"
|
||||
}
|
||||
44
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/readme.md
generated
vendored
Normal file
44
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/node_modules/get-stdin/readme.md
generated
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
# get-stdin [](https://travis-ci.org/sindresorhus/get-stdin)
|
||||
|
||||
> Easier stdin
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
$ npm install --save get-stdin
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
// example.js
|
||||
var stdin = require('get-stdin');
|
||||
|
||||
stdin(function (data) {
|
||||
console.log(data);
|
||||
//=> unicorns
|
||||
});
|
||||
```
|
||||
|
||||
```sh
|
||||
$ echo unicorns | node example.js
|
||||
unicorns
|
||||
```
|
||||
|
||||
|
||||
## API
|
||||
|
||||
### stdin(callback)
|
||||
|
||||
Get `stdin` as a string.
|
||||
|
||||
### stdin.buffer(callback)
|
||||
|
||||
Get `stdin` as a buffer.
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
||||
80
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/package.json
generated
vendored
Normal file
80
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/package.json
generated
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"name": "has-ansi",
|
||||
"version": "1.0.3",
|
||||
"description": "Check if a string has ANSI escape codes",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sindresorhus/has-ansi"
|
||||
},
|
||||
"author": {
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
{
|
||||
"name": "Joshua Appelman",
|
||||
"email": "jappelman@xebia.com",
|
||||
"url": "http://jbnicolai.com"
|
||||
}
|
||||
],
|
||||
"bin": {
|
||||
"has-ansi": "cli.js"
|
||||
},
|
||||
"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": "^1.1.0",
|
||||
"get-stdin": "^4.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"mocha": "*"
|
||||
},
|
||||
"readme": "# has-ansi [](https://travis-ci.org/sindresorhus/has-ansi)\n\n> Check if a string has [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)\n\n\n## Install\n\n```sh\n$ npm install --save has-ansi\n```\n\n\n## Usage\n\n```js\nvar hasAnsi = require('has-ansi');\n\nhasAnsi('\\u001b[4mcake\\u001b[0m');\n//=> true\n\nhasAnsi('cake');\n//=> false\n```\n\n\n## CLI\n\n```sh\n$ npm install --global has-ansi\n```\n\n```\n$ has-ansi --help\n\n Usage\n has-ansi <string>\n echo <string> | has-ansi\n\n Exits with code 0 if input has ANSI escape codes and 1 if not\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
|
||||
"readmeFilename": "readme.md",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/has-ansi/issues"
|
||||
},
|
||||
"_id": "has-ansi@1.0.3",
|
||||
"_from": "has-ansi@^1.0.3"
|
||||
}
|
||||
45
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/readme.md
generated
vendored
Normal file
45
server/node_modules/gulp/node_modules/chalk/node_modules/has-ansi/readme.md
generated
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
# has-ansi [](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)
|
||||
47
server/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/cli.js
generated
vendored
Executable file
47
server/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/cli.js
generated
vendored
Executable file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env node
|
||||
'use strict';
|
||||
var fs = require('fs');
|
||||
var pkg = require('./package.json');
|
||||
var stripAnsi = require('./');
|
||||
var argv = process.argv.slice(2);
|
||||
var input = argv[0];
|
||||
|
||||
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'));
|
||||
}
|
||||
|
||||
function init(data) {
|
||||
process.stdout.write(stripAnsi(data));
|
||||
}
|
||||
|
||||
if (argv.indexOf('--help') !== -1) {
|
||||
help();
|
||||
return;
|
||||
}
|
||||
|
||||
if (argv.indexOf('--version') !== -1) {
|
||||
console.log(pkg.version);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!input && process.stdin.isTTY) {
|
||||
help();
|
||||
return;
|
||||
}
|
||||
|
||||
if (input) {
|
||||
init(fs.readFileSync(input, 'utf8'));
|
||||
} else {
|
||||
process.stdin.setEncoding('utf8');
|
||||
process.stdin.on('data', init);
|
||||
}
|
||||
6
server/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/index.js
generated
vendored
Normal file
6
server/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/index.js
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
'use strict';
|
||||
var ansiRegex = require('ansi-regex')();
|
||||
|
||||
module.exports = function (str) {
|
||||
return typeof str === 'string' ? str.replace(ansiRegex, '') : str;
|
||||
};
|
||||
4
server/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js
generated
vendored
Normal file
4
server/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
'use strict';
|
||||
module.exports = function () {
|
||||
return /(?:(?:\u001b\[)|\u009b)(?:(?:[0-9]{1,3})?(?:(?:;[0-9]{0,3})*)?[A-M|f-m])|\u001b[A-M]/g;
|
||||
};
|
||||
74
server/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json
generated
vendored
Normal file
74
server/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json
generated
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"name": "ansi-regex",
|
||||
"version": "1.1.1",
|
||||
"description": "Regular expression for matching ANSI escape codes",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sindresorhus/ansi-regex"
|
||||
},
|
||||
"author": {
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
{
|
||||
"name": "Joshua Appelman",
|
||||
"email": "jappelman@xebia.com",
|
||||
"url": "http://jbnicolai.com"
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "mocha test/test.js",
|
||||
"view-supported": "node test/viewCodes.js"
|
||||
},
|
||||
"files": [
|
||||
"index.js"
|
||||
],
|
||||
"keywords": [
|
||||
"ansi",
|
||||
"styles",
|
||||
"color",
|
||||
"colour",
|
||||
"colors",
|
||||
"terminal",
|
||||
"console",
|
||||
"cli",
|
||||
"string",
|
||||
"tty",
|
||||
"escape",
|
||||
"formatting",
|
||||
"rgb",
|
||||
"256",
|
||||
"shell",
|
||||
"xterm",
|
||||
"command-line",
|
||||
"text",
|
||||
"regex",
|
||||
"regexp",
|
||||
"re",
|
||||
"match",
|
||||
"test",
|
||||
"find",
|
||||
"pattern"
|
||||
],
|
||||
"devDependencies": {
|
||||
"mocha": "*"
|
||||
},
|
||||
"readme": "# ansi-regex [](https://travis-ci.org/sindresorhus/ansi-regex)\n\n> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)\n\n\n## Install\n\n```sh\n$ npm install --save ansi-regex\n```\n\n\n## Usage\n\n```js\nvar ansiRegex = require('ansi-regex');\n\nansiRegex().test('\\u001b[4mcake\\u001b[0m');\n//=> true\n\nansiRegex().test('cake');\n//=> false\n\n'\\u001b[4mcake\\u001b[0m'.match(ansiRegex());\n//=> ['\\u001b[4m', '\\u001b[0m']\n```\n\n*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.*\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
|
||||
"readmeFilename": "readme.md",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/ansi-regex/issues"
|
||||
},
|
||||
"_id": "ansi-regex@1.1.1",
|
||||
"_from": "ansi-regex@^1.1.0"
|
||||
}
|
||||
33
server/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md
generated
vendored
Normal file
33
server/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md
generated
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
# ansi-regex [](https://travis-ci.org/sindresorhus/ansi-regex)
|
||||
|
||||
> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
$ npm install --save ansi-regex
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
var ansiRegex = require('ansi-regex');
|
||||
|
||||
ansiRegex().test('\u001b[4mcake\u001b[0m');
|
||||
//=> true
|
||||
|
||||
ansiRegex().test('cake');
|
||||
//=> false
|
||||
|
||||
'\u001b[4mcake\u001b[0m'.match(ansiRegex());
|
||||
//=> ['\u001b[4m', '\u001b[0m']
|
||||
```
|
||||
|
||||
*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.*
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
||||
66
server/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/package.json
generated
vendored
Normal file
66
server/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/package.json
generated
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"name": "strip-ansi",
|
||||
"version": "2.0.1",
|
||||
"description": "Strip ANSI escape codes",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sindresorhus/strip-ansi"
|
||||
},
|
||||
"author": {
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "http://sindresorhus.com"
|
||||
},
|
||||
"bin": {
|
||||
"strip-ansi": "cli.js"
|
||||
},
|
||||
"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": "^1.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"mocha": "*"
|
||||
},
|
||||
"readme": "# strip-ansi [](https://travis-ci.org/sindresorhus/strip-ansi)\n\n> Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)\n\n\n## Install\n\n```sh\n$ npm install --save strip-ansi\n```\n\n\n## Usage\n\n```js\nvar stripAnsi = require('strip-ansi');\n\nstripAnsi('\\u001b[4mcake\\u001b[0m');\n//=> 'cake'\n```\n\n\n## CLI\n\n```sh\n$ npm install --global strip-ansi\n```\n\n```sh\n$ strip-ansi --help\n\n Usage\n strip-ansi <input-file> > <output-file>\n cat <input-file> | strip-ansi > <output-file>\n\n Example\n strip-ansi unicorn.txt > unicorn-stripped.txt\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
|
||||
"readmeFilename": "readme.md",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/strip-ansi/issues"
|
||||
},
|
||||
"_id": "strip-ansi@2.0.1",
|
||||
"_from": "strip-ansi@^2.0.1"
|
||||
}
|
||||
43
server/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/readme.md
generated
vendored
Normal file
43
server/node_modules/gulp/node_modules/chalk/node_modules/strip-ansi/readme.md
generated
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
# strip-ansi [](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('\u001b[4mcake\u001b[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)
|
||||
29
server/node_modules/gulp/node_modules/chalk/node_modules/supports-color/cli.js
generated
vendored
Executable file
29
server/node_modules/gulp/node_modules/chalk/node_modules/supports-color/cli.js
generated
vendored
Executable file
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env node
|
||||
'use strict';
|
||||
var pkg = require('./package.json');
|
||||
var supportsColor = require('./');
|
||||
var argv = process.argv.slice(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 (argv.indexOf('--help') !== -1) {
|
||||
help();
|
||||
return;
|
||||
}
|
||||
|
||||
if (argv.indexOf('--version') !== -1) {
|
||||
console.log(pkg.version);
|
||||
return;
|
||||
}
|
||||
|
||||
process.exit(supportsColor ? 0 : 1);
|
||||
43
server/node_modules/gulp/node_modules/chalk/node_modules/supports-color/index.js
generated
vendored
Normal file
43
server/node_modules/gulp/node_modules/chalk/node_modules/supports-color/index.js
generated
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
'use strict';
|
||||
var argv = process.argv;
|
||||
|
||||
module.exports = (function () {
|
||||
if ('FORCE_COLOR' in process.env) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (argv.indexOf('--no-color') !== -1 ||
|
||||
argv.indexOf('--no-colors') !== -1 ||
|
||||
argv.indexOf('--color=false') !== -1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (argv.indexOf('--color') !== -1 ||
|
||||
argv.indexOf('--colors') !== -1 ||
|
||||
argv.indexOf('--color=true') !== -1 ||
|
||||
argv.indexOf('--color=always') !== -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;
|
||||
})();
|
||||
73
server/node_modules/gulp/node_modules/chalk/node_modules/supports-color/package.json
generated
vendored
Normal file
73
server/node_modules/gulp/node_modules/chalk/node_modules/supports-color/package.json
generated
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"name": "supports-color",
|
||||
"version": "1.3.1",
|
||||
"description": "Detect whether a terminal supports color",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/sindresorhus/supports-color"
|
||||
},
|
||||
"author": {
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "sindresorhus.com"
|
||||
},
|
||||
"maintainers": [
|
||||
{
|
||||
"name": "Sindre Sorhus",
|
||||
"email": "sindresorhus@gmail.com",
|
||||
"url": "sindresorhus.com"
|
||||
},
|
||||
{
|
||||
"name": "Joshua Appelman",
|
||||
"email": "jappelman@xebia.com",
|
||||
"url": "jbnicolai.com"
|
||||
}
|
||||
],
|
||||
"bin": {
|
||||
"supports-color": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8.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": "*",
|
||||
"require-uncached": "^1.0.2"
|
||||
},
|
||||
"readme": "# supports-color [](https://travis-ci.org/sindresorhus/supports-color)\n\n> Detect whether a terminal supports color\n\n\n## Install\n\n```\n$ npm install --save supports-color\n```\n\n\n## Usage\n\n```js\nvar supportsColor = require('supports-color');\n\nif (supportsColor) {\n\tconsole.log('Terminal supports color');\n}\n```\n\nIt obeys the `--color` and `--no-color` CLI flags.\n\nFor situations where using `--color` is not possible, add an environment variable `FORCE_COLOR` with any value to force color. Trumps `--no-color`.\n\n\n## CLI\n\n```\n$ npm install --global supports-color\n```\n\n```\n$ supports-color --help\n\n Usage\n supports-color\n\n Exits with code 0 if color is supported and 1 if not\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
|
||||
"readmeFilename": "readme.md",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sindresorhus/supports-color/issues"
|
||||
},
|
||||
"_id": "supports-color@1.3.1",
|
||||
"_from": "supports-color@^1.3.0"
|
||||
}
|
||||
46
server/node_modules/gulp/node_modules/chalk/node_modules/supports-color/readme.md
generated
vendored
Normal file
46
server/node_modules/gulp/node_modules/chalk/node_modules/supports-color/readme.md
generated
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
# supports-color [](https://travis-ci.org/sindresorhus/supports-color)
|
||||
|
||||
> Detect whether a terminal supports color
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```
|
||||
$ 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.
|
||||
|
||||
For situations where using `--color` is not possible, add an environment variable `FORCE_COLOR` with any value to force color. Trumps `--no-color`.
|
||||
|
||||
|
||||
## CLI
|
||||
|
||||
```
|
||||
$ npm install --global supports-color
|
||||
```
|
||||
|
||||
```
|
||||
$ 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)
|
||||
71
server/node_modules/gulp/node_modules/chalk/package.json
generated
vendored
Normal file
71
server/node_modules/gulp/node_modules/chalk/package.json
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
197
server/node_modules/gulp/node_modules/chalk/readme.md
generated
vendored
Normal file
197
server/node_modules/gulp/node_modules/chalk/readme.md
generated
vendored
Normal file
@@ -0,0 +1,197 @@
|
||||
<h1 align="center">
|
||||
<br>
|
||||
<img width="360" src="https://cdn.rawgit.com/sindresorhus/chalk/19935d6484811c5e468817f846b7b3d417d7bf4a/logo.svg" alt="chalk">
|
||||
<br>
|
||||
<br>
|
||||
</h1>
|
||||
|
||||
> Terminal string styling done right
|
||||
|
||||
[](https://travis-ci.org/sindresorhus/chalk) [](https://www.youtube.com/watch?v=Sm368W0OsHo)
|
||||
|
||||
[colors.js](https://github.com/Marak/colors.js) used to be 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.**
|
||||
|
||||

|
||||
|
||||
|
||||
## 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 ~3000 modules](https://www.npmjs.com/browse/depended/chalk)
|
||||
|
||||
|
||||
## Install
|
||||
|
||||
```
|
||||
$ 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
|
||||
chalk.blue('Hello world!');
|
||||
|
||||
// combine styled and normal strings
|
||||
chalk.blue('Hello') + 'World' + chalk.red('!');
|
||||
|
||||
// compose multiple styles using the chainable API
|
||||
chalk.blue.bgRed.bold('Hello world!');
|
||||
|
||||
// pass in multiple arguments
|
||||
chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz');
|
||||
|
||||
// nest styles
|
||||
chalk.red('Hello', chalk.underline.bgBlue('world') + '!');
|
||||
|
||||
// nest styles of the same type even (color, underline, background)
|
||||
chalk.green(
|
||||
'I am a green line ' +
|
||||
chalk.blue.underline.bold('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, and later styles take precedent in case of a conflict. This simply means that `Chalk.red.yellow.green` is equivalent to `Chalk.green`.
|
||||
|
||||
Multiple arguments will be separated by space.
|
||||
|
||||
### chalk.enabled
|
||||
|
||||
Color support is automatically detected, but you can override it by setting the `enabled` property. You should however only do this in your own code as it applies globally to all chalk consumers.
|
||||
|
||||
If you need to change this in a reusable module create a new instance:
|
||||
|
||||
```js
|
||||
var ctx = new chalk.constructor({enabled: false});
|
||||
```
|
||||
|
||||
### chalk.supportsColor
|
||||
|
||||
Detect whether the terminal [supports color](https://github.com/sindresorhus/supports-color). Used internally and handled for you, but exposed for convenience.
|
||||
|
||||
Can be overridden by the user with the flags `--color` and `--no-color`. For situations where using `--color` is not possible, add an environment variable `FORCE_COLOR` with any value to force color. Trumps `--no-color`.
|
||||
|
||||
### 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 your own.
|
||||
|
||||
```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
|
||||
|
||||
### Modifiers
|
||||
|
||||
- `reset`
|
||||
- `bold`
|
||||
- `dim`
|
||||
- `italic` *(not widely supported)*
|
||||
- `underline`
|
||||
- `inverse`
|
||||
- `hidden`
|
||||
- `strikethrough` *(not widely supported)*
|
||||
|
||||
### Colors
|
||||
|
||||
- `black`
|
||||
- `red`
|
||||
- `green`
|
||||
- `yellow`
|
||||
- `blue` *(on Windows the bright version is used as normal blue is illegible)*
|
||||
- `magenta`
|
||||
- `cyan`
|
||||
- `white`
|
||||
- `gray`
|
||||
|
||||
### Background colors
|
||||
|
||||
- `bgBlack`
|
||||
- `bgRed`
|
||||
- `bgGreen`
|
||||
- `bgYellow`
|
||||
- `bgBlue`
|
||||
- `bgMagenta`
|
||||
- `bgCyan`
|
||||
- `bgWhite`
|
||||
|
||||
|
||||
## 256-colors
|
||||
|
||||
Chalk does not support support anything other than the base eight colors, which guarantees it will work on all terminals and systems. Some terminals, specifically `xterm` compliant ones, will support the full range of 8-bit colors. For this the lower level [ansi-256-colors](https://github.com/jbnicolai/ansi-256-colors) package can be used.
|
||||
|
||||
|
||||
## Windows
|
||||
|
||||
If you're on Windows, do yourself a favor and use [`cmder`](http://bliker.github.io/cmder/) instead of `cmd.exe`.
|
||||
|
||||
|
||||
## License
|
||||
|
||||
MIT © [Sindre Sorhus](http://sindresorhus.com)
|
||||
6
server/node_modules/gulp/node_modules/deprecated/.npmignore
generated
vendored
Normal file
6
server/node_modules/gulp/node_modules/deprecated/.npmignore
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
.DS_Store
|
||||
*.log
|
||||
node_modules
|
||||
build
|
||||
*.node
|
||||
components
|
||||
6
server/node_modules/gulp/node_modules/deprecated/.travis.yml
generated
vendored
Normal file
6
server/node_modules/gulp/node_modules/deprecated/.travis.yml
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.9"
|
||||
- "0.10"
|
||||
after_script:
|
||||
- npm run coveralls
|
||||
20
server/node_modules/gulp/node_modules/deprecated/LICENSE
generated
vendored
Executable file
20
server/node_modules/gulp/node_modules/deprecated/LICENSE
generated
vendored
Executable file
@@ -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.
|
||||
51
server/node_modules/gulp/node_modules/deprecated/README.md
generated
vendored
Normal file
51
server/node_modules/gulp/node_modules/deprecated/README.md
generated
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
# deprecated [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Dependency Status][david-image]][david-url]
|
||||
|
||||
|
||||
## Information
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Package</td><td>deprecated</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Description</td>
|
||||
<td>Tool for deprecating things</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Node Version</td>
|
||||
<td>>= 0.9</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Usage
|
||||
|
||||
```javascript
|
||||
var oldfn = function(a,b) {
|
||||
return a+b;
|
||||
};
|
||||
|
||||
// returns a new wrapper function that logs the deprecated function once
|
||||
var somefn = deprecated('dont use this anymore', console.log, oldfn);
|
||||
|
||||
var someobj = {};
|
||||
|
||||
// set up a getter/set for field that logs deprecated message once
|
||||
deprecated('dont use this anymore', console.log, someobj, 'a', 123);
|
||||
|
||||
console.log(someobj.a); // 123
|
||||
```
|
||||
|
||||
[npm-url]: https://npmjs.org/package/deprecated
|
||||
[npm-image]: https://badge.fury.io/js/deprecated.png
|
||||
|
||||
[travis-url]: https://travis-ci.org/wearefractal/deprecated
|
||||
[travis-image]: https://travis-ci.org/wearefractal/deprecated.png?branch=master
|
||||
|
||||
[coveralls-url]: https://coveralls.io/r/wearefractal/deprecated
|
||||
[coveralls-image]: https://coveralls.io/repos/wearefractal/deprecated/badge.png
|
||||
|
||||
[depstat-url]: https://david-dm.org/wearefractal/deprecated
|
||||
[depstat-image]: https://david-dm.org/wearefractal/deprecated.png
|
||||
|
||||
[david-url]: https://david-dm.org/wearefractal/deprecated
|
||||
[david-image]: https://david-dm.org/wearefractal/deprecated.png?theme=shields.io
|
||||
39
server/node_modules/gulp/node_modules/deprecated/index.js
generated
vendored
Normal file
39
server/node_modules/gulp/node_modules/deprecated/index.js
generated
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
var deprecated = {
|
||||
method: function(msg, log, fn) {
|
||||
var called = false;
|
||||
return function(){
|
||||
if (!called) {
|
||||
called = true;
|
||||
log(msg);
|
||||
}
|
||||
return fn.apply(this, arguments);
|
||||
};
|
||||
},
|
||||
|
||||
field: function(msg, log, parent, field, val) {
|
||||
var called = false;
|
||||
var getter = function(){
|
||||
if (!called) {
|
||||
called = true;
|
||||
log(msg);
|
||||
}
|
||||
return val;
|
||||
};
|
||||
var setter = function(v) {
|
||||
if (!called) {
|
||||
called = true;
|
||||
log(msg);
|
||||
}
|
||||
val = v;
|
||||
return v;
|
||||
};
|
||||
Object.defineProperty(parent, field, {
|
||||
get: getter,
|
||||
set: setter,
|
||||
enumerable: true
|
||||
});
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = deprecated;
|
||||
46
server/node_modules/gulp/node_modules/deprecated/package.json
generated
vendored
Normal file
46
server/node_modules/gulp/node_modules/deprecated/package.json
generated
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"name": "deprecated",
|
||||
"description": "Tool for deprecating things",
|
||||
"version": "0.0.1",
|
||||
"homepage": "http://github.com/wearefractal/deprecated",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/wearefractal/deprecated.git"
|
||||
},
|
||||
"author": {
|
||||
"name": "Fractal",
|
||||
"email": "contact@wearefractal.com",
|
||||
"url": "http://wearefractal.com/"
|
||||
},
|
||||
"main": "./index.js",
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"mocha": "~1.17.0",
|
||||
"should": "~3.1.0",
|
||||
"mocha-lcov-reporter": "~0.0.1",
|
||||
"coveralls": "~2.6.1",
|
||||
"istanbul": "~0.2.3",
|
||||
"rimraf": "~2.2.5",
|
||||
"jshint": "~2.4.1"
|
||||
},
|
||||
"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/deprecated/raw/master/LICENSE"
|
||||
}
|
||||
],
|
||||
"readme": "# deprecated [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Dependency Status][david-image]][david-url]\n\n\n## Information\n\n<table>\n<tr> \n<td>Package</td><td>deprecated</td>\n</tr>\n<tr>\n<td>Description</td>\n<td>Tool for deprecating things</td>\n</tr>\n<tr>\n<td>Node Version</td>\n<td>>= 0.9</td>\n</tr>\n</table>\n\n## Usage\n\n```javascript\nvar oldfn = function(a,b) {\n return a+b;\n};\n\n// returns a new wrapper function that logs the deprecated function once\nvar somefn = deprecated('dont use this anymore', console.log, oldfn);\n\nvar someobj = {};\n\n// set up a getter/set for field that logs deprecated message once\ndeprecated('dont use this anymore', console.log, someobj, 'a', 123);\n\nconsole.log(someobj.a); // 123\n```\n\n[npm-url]: https://npmjs.org/package/deprecated\n[npm-image]: https://badge.fury.io/js/deprecated.png\n\n[travis-url]: https://travis-ci.org/wearefractal/deprecated\n[travis-image]: https://travis-ci.org/wearefractal/deprecated.png?branch=master\n\n[coveralls-url]: https://coveralls.io/r/wearefractal/deprecated\n[coveralls-image]: https://coveralls.io/repos/wearefractal/deprecated/badge.png\n\n[depstat-url]: https://david-dm.org/wearefractal/deprecated\n[depstat-image]: https://david-dm.org/wearefractal/deprecated.png\n\n[david-url]: https://david-dm.org/wearefractal/deprecated\n[david-image]: https://david-dm.org/wearefractal/deprecated.png?theme=shields.io",
|
||||
"readmeFilename": "README.md",
|
||||
"bugs": {
|
||||
"url": "https://github.com/wearefractal/deprecated/issues"
|
||||
},
|
||||
"_id": "deprecated@0.0.1",
|
||||
"_from": "deprecated@^0.0.1"
|
||||
}
|
||||
44
server/node_modules/gulp/node_modules/deprecated/test/field.js
generated
vendored
Normal file
44
server/node_modules/gulp/node_modules/deprecated/test/field.js
generated
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
var deprecated = require('../');
|
||||
var should = require('should');
|
||||
require('mocha');
|
||||
|
||||
describe('field()', function() {
|
||||
it('should return a wrapped function that logs once on get', function(done) {
|
||||
var message = 'testing';
|
||||
var scope = {
|
||||
a: 1
|
||||
};
|
||||
var obj = {};
|
||||
var logged = false;
|
||||
var log = function(msg){
|
||||
msg.should.equal(message);
|
||||
logged.should.equal(false);
|
||||
logged = true;
|
||||
};
|
||||
deprecated.field(message, log, obj, 'a', 123);
|
||||
|
||||
obj.a.should.equal(123);
|
||||
obj.a = 1234;
|
||||
obj.a.should.equal(1234);
|
||||
logged.should.equal(true);
|
||||
done();
|
||||
});
|
||||
it('should return a wrapped function that logs once on set', function(done) {
|
||||
var message = 'testing';
|
||||
var scope = {
|
||||
a: 1
|
||||
};
|
||||
var obj = {};
|
||||
var logged = false;
|
||||
var log = function(msg){
|
||||
msg.should.equal(message);
|
||||
logged.should.equal(false);
|
||||
logged = true;
|
||||
};
|
||||
deprecated.field(message, log, obj, 'a', 123);
|
||||
|
||||
obj.a = 1234;
|
||||
logged.should.equal(true);
|
||||
done();
|
||||
});
|
||||
});
|
||||
32
server/node_modules/gulp/node_modules/deprecated/test/method.js
generated
vendored
Normal file
32
server/node_modules/gulp/node_modules/deprecated/test/method.js
generated
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
var deprecated = require('../');
|
||||
var should = require('should');
|
||||
require('mocha');
|
||||
|
||||
describe('method()', function() {
|
||||
it('should return a wrapped function that logs once', function(done) {
|
||||
var message = 'testing';
|
||||
var scope = {
|
||||
a: 1
|
||||
};
|
||||
var logged = false;
|
||||
var log = function(msg){
|
||||
msg.should.equal(message);
|
||||
logged.should.equal(false);
|
||||
logged = true;
|
||||
};
|
||||
var fn = deprecated.method(message, log, function(one, two){
|
||||
this.should.equal(scope);
|
||||
one.should.equal(1);
|
||||
two.should.equal(2);
|
||||
return one+two;
|
||||
});
|
||||
|
||||
fn.bind(scope)(1,2).should.equal(3);
|
||||
fn.bind(scope)(1,2).should.equal(3);
|
||||
fn.bind(scope)(1,2).should.equal(3);
|
||||
fn.bind(scope)(1,2).should.equal(3);
|
||||
|
||||
logged.should.equal(true);
|
||||
done();
|
||||
});
|
||||
});
|
||||
82
server/node_modules/gulp/node_modules/interpret/CHANGELOG
generated
vendored
Normal file
82
server/node_modules/gulp/node_modules/interpret/CHANGELOG
generated
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
v0.6.2:
|
||||
date: 2015-05-20
|
||||
changes:
|
||||
- update module list for iced coffee-script
|
||||
v0.6.1:
|
||||
date: 2015-05-20
|
||||
changes:
|
||||
- Fix toml loader.
|
||||
v0.6.0:
|
||||
date: 2015-05-19
|
||||
changes:
|
||||
- Combine fallbacks and loaders into `extensions`.
|
||||
- Provide implementation guidance.
|
||||
v0.5.1:
|
||||
date: 2015-03-01
|
||||
changes:
|
||||
- Add support for CirruScript.
|
||||
v0.5.0:
|
||||
date: 2015-02-27
|
||||
changes:
|
||||
- Refactor es6 support via Babel (formerly 6to5)
|
||||
v0.4.3:
|
||||
date: 2015-02-09
|
||||
changes:
|
||||
- Switch support from typescript-require to typescript-register.
|
||||
v0.4.2:
|
||||
date: 2015-01-16
|
||||
changes:
|
||||
- Add support for wisp.
|
||||
v0.4.1:
|
||||
date: 2015-01-10
|
||||
changes:
|
||||
- Add support for 6to5 (es6)
|
||||
v0.4.0:
|
||||
date: 2014-01-09
|
||||
changes:
|
||||
- Add support for fallback (legacy) modules
|
||||
- Add support for module configurations
|
||||
v0.3.10:
|
||||
date: 2014-12-17
|
||||
changes:
|
||||
- Add support for json5.
|
||||
v0.3.9:
|
||||
date: 2014-12-08
|
||||
changes:
|
||||
- Add support for literate iced coffee.
|
||||
v0.3.8:
|
||||
date: 2014-11-20
|
||||
changes:
|
||||
- Add support for [cjsx](https://github.com/jsdf/coffee-react).
|
||||
v0.3.7:
|
||||
date: 2014-09-08
|
||||
changes:
|
||||
- Add support for [TypeScript](http://www.typescriptlang.org/).
|
||||
v0.3.6:
|
||||
date: 2014-08-25
|
||||
changes:
|
||||
- Add support for coffee.md.
|
||||
v0.3.5:
|
||||
date: 2014-07-03
|
||||
changes:
|
||||
- Add support for jsx.
|
||||
v0.3.4:
|
||||
date: 2014-06-27
|
||||
changes:
|
||||
- Make .js first jsVariant entry.
|
||||
v0.3.3:
|
||||
date: 2014-06-02
|
||||
changes:
|
||||
- Fix casing on livescript dependency.
|
||||
v0.3.0:
|
||||
date: 2014-04-20
|
||||
changes:
|
||||
- Simplify loading of coffee-script and iced-coffee-script.
|
||||
v0.2.0:
|
||||
date: 2014-04-20
|
||||
changes:
|
||||
- Move module loading into rechoir.
|
||||
v0.1.0:
|
||||
date: 2014-04-20
|
||||
changes:
|
||||
- Initial public release.
|
||||
22
server/node_modules/gulp/node_modules/interpret/LICENSE
generated
vendored
Normal file
22
server/node_modules/gulp/node_modules/interpret/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
Copyright (c) 2014 Tyler Kellen
|
||||
|
||||
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.
|
||||
90
server/node_modules/gulp/node_modules/interpret/README.md
generated
vendored
Normal file
90
server/node_modules/gulp/node_modules/interpret/README.md
generated
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
# interpret
|
||||
> A dictionary of file extensions and associated module loaders.
|
||||
|
||||
[](https://nodei.co/npm/interpret/)
|
||||
|
||||
## What is it
|
||||
This is used by [Liftoff](http://github.com/tkellen/node-liftoff) to automatically require dependencies for configuration files, and by [rechoir](http://github.com/tkellen/node-rechoir) for registering module loaders.
|
||||
|
||||
## API
|
||||
|
||||
### extensions
|
||||
Map file types to modules which provide a [require.extensions] loader.
|
||||
|
||||
```js
|
||||
{
|
||||
'.babel.js': {
|
||||
module: 'babel/register',
|
||||
register: function (module) {
|
||||
module({
|
||||
// register on .js extension due to https://github.com/joyent/node/blob/v0.12.0/lib/module.js#L353
|
||||
// which only captures the final extension (.babel.js -> .js)
|
||||
extensions: '.js'
|
||||
})
|
||||
}
|
||||
},
|
||||
'.cirru': 'cirru-script/lib/register',
|
||||
'.cjsx': 'node-cjsx/register',
|
||||
'.co': 'coco',
|
||||
'.coffee': ['coffee-script/register', 'coffee-script'],
|
||||
'.coffee.md': ['coffee-script/register', 'coffee-script'],
|
||||
'.csv': 'require-csv',
|
||||
'.iced': ['iced-coffee-script/register', 'iced-coffee-script'],
|
||||
'.iced.md': 'iced-coffee-script/register',
|
||||
'.ini': 'require-ini',
|
||||
'.js': null,
|
||||
'.json': null,
|
||||
'.json5': 'json5/lib/require',
|
||||
'.jsx': [
|
||||
{
|
||||
module: 'babel/register',
|
||||
register: function (module) {
|
||||
module({
|
||||
extensions: '.jsx'
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
module: 'node-jsx',
|
||||
register: function (module) {
|
||||
module.install({
|
||||
extension: '.jsx',
|
||||
harmony: true
|
||||
});
|
||||
}
|
||||
}
|
||||
],
|
||||
'.litcoffee': ['coffee-script/register', 'coffee-script'],
|
||||
'.liticed': 'iced-coffee-script/register',
|
||||
'.ls': ['livescript', 'LiveScript'],
|
||||
'.node': null,
|
||||
'.toml': {
|
||||
module: 'toml-require',
|
||||
register: function (module) {
|
||||
module.install();
|
||||
}
|
||||
},
|
||||
'.ts': ['typescript-register', 'typescript-require'],
|
||||
'.wisp': 'wisp/engine/node',
|
||||
'.xml': 'require-xml',
|
||||
'.yaml': 'require-yaml',
|
||||
'.yml': 'require-yaml'
|
||||
};
|
||||
```
|
||||
|
||||
### jsVariants
|
||||
Same as above, but only include the extensions which are javascript variants.
|
||||
|
||||
## How to use it
|
||||
|
||||
Consumers should use the exported `extensions` or `jsVariants` object to determine which module should be loaded for a given extension. If a matching extension is found, consumers should do the following:
|
||||
|
||||
1. If the value is null, do nothing.
|
||||
|
||||
2. If the value is a string, try to require it.
|
||||
|
||||
3. If the value is an object, try to require the `module` property. If successful, the `register` property (a function) should be called with the module passed as the first argument.
|
||||
|
||||
4. If the value is an array, iterate over it, attempting step #2 or #3 until one of the attempts does not throw.
|
||||
|
||||
[require.extensions]: http://nodejs.org/api/globals.html#globals_require_extensions
|
||||
84
server/node_modules/gulp/node_modules/interpret/index.js
generated
vendored
Normal file
84
server/node_modules/gulp/node_modules/interpret/index.js
generated
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
const extensions = {
|
||||
'.babel.js': {
|
||||
module: 'babel/register',
|
||||
register: function (module) {
|
||||
module({
|
||||
// register on .js extension due to https://github.com/joyent/node/blob/v0.12.0/lib/module.js#L353
|
||||
// which only captures the final extension (.babel.js -> .js)
|
||||
extensions: '.js'
|
||||
})
|
||||
}
|
||||
},
|
||||
'.cirru': 'cirru-script/lib/register',
|
||||
'.cjsx': 'node-cjsx/register',
|
||||
'.co': 'coco',
|
||||
'.coffee': ['coffee-script/register', 'coffee-script'],
|
||||
'.coffee.md': ['coffee-script/register', 'coffee-script'],
|
||||
'.csv': 'require-csv',
|
||||
'.iced': ['iced-coffee-script/register', 'iced-coffee-script'],
|
||||
'.iced.md': 'iced-coffee-script/register',
|
||||
'.ini': 'require-ini',
|
||||
'.js': null,
|
||||
'.json': null,
|
||||
'.json5': 'json5/lib/require',
|
||||
'.jsx': [
|
||||
{
|
||||
module: 'babel/register',
|
||||
register: function (module) {
|
||||
module({
|
||||
extensions: '.jsx'
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
module: 'node-jsx',
|
||||
register: function (module) {
|
||||
module.install({
|
||||
extension: '.jsx',
|
||||
harmony: true
|
||||
});
|
||||
}
|
||||
}
|
||||
],
|
||||
'.litcoffee': ['coffee-script/register', 'coffee-script'],
|
||||
'.liticed': 'iced-coffee-script/register',
|
||||
'.ls': ['livescript', 'LiveScript'],
|
||||
'.node': null,
|
||||
'.toml': {
|
||||
module: 'toml-require',
|
||||
register: function (module) {
|
||||
module.install();
|
||||
}
|
||||
},
|
||||
'.ts': ['typescript-register', 'typescript-require'],
|
||||
'.wisp': 'wisp/engine/node',
|
||||
'.xml': 'require-xml',
|
||||
'.yaml': 'require-yaml',
|
||||
'.yml': 'require-yaml'
|
||||
};
|
||||
|
||||
const jsVariantExtensions = [
|
||||
'.js',
|
||||
'.babel.js',
|
||||
'.cirru',
|
||||
'.cjsx',
|
||||
'.co',
|
||||
'.coffee',
|
||||
'.coffee.md',
|
||||
'.iced',
|
||||
'.iced.md',
|
||||
'.jsx',
|
||||
'.litcoffee',
|
||||
'.liticed',
|
||||
'.ls',
|
||||
'.ts',
|
||||
'.wisp'
|
||||
];
|
||||
|
||||
module.exports = {
|
||||
extensions: extensions,
|
||||
jsVariants: jsVariantExtensions.reduce(function (result, ext) {
|
||||
result[ext] = extensions[ext];
|
||||
return result;
|
||||
}, {})
|
||||
};
|
||||
60
server/node_modules/gulp/node_modules/interpret/package.json
generated
vendored
Normal file
60
server/node_modules/gulp/node_modules/interpret/package.json
generated
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"name": "interpret",
|
||||
"description": "A dictionary of file extensions and associated module loaders.",
|
||||
"version": "0.6.2",
|
||||
"homepage": "https://github.com/tkellen/node-interpret",
|
||||
"author": {
|
||||
"name": "Tyler Kellen",
|
||||
"url": "http://goingslowly.com/"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/tkellen/node-interpret.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/tkellen/node-interpret/issues"
|
||||
},
|
||||
"licenses": [
|
||||
{
|
||||
"type": "MIT",
|
||||
"url": "https://github.com/tkellen/node-interpret/blob/master/LICENSE"
|
||||
}
|
||||
],
|
||||
"main": "index.js",
|
||||
"keywords": [
|
||||
"cirru-script",
|
||||
"cjsx",
|
||||
"co",
|
||||
"coco",
|
||||
"coffee-script",
|
||||
"coffee",
|
||||
"coffee.md",
|
||||
"csv",
|
||||
"es",
|
||||
"es6",
|
||||
"iced",
|
||||
"iced.md",
|
||||
"iced-coffee-script",
|
||||
"ini",
|
||||
"js",
|
||||
"json",
|
||||
"json5",
|
||||
"jsx",
|
||||
"react",
|
||||
"litcoffee",
|
||||
"liticed",
|
||||
"ls",
|
||||
"livescript",
|
||||
"toml",
|
||||
"ts",
|
||||
"typescript",
|
||||
"wisp",
|
||||
"xml",
|
||||
"yaml",
|
||||
"yml"
|
||||
],
|
||||
"readme": "# interpret\n> A dictionary of file extensions and associated module loaders.\n\n[](https://nodei.co/npm/interpret/)\n\n## What is it\nThis is used by [Liftoff](http://github.com/tkellen/node-liftoff) to automatically require dependencies for configuration files, and by [rechoir](http://github.com/tkellen/node-rechoir) for registering module loaders.\n\n## API\n\n### extensions\nMap file types to modules which provide a [require.extensions] loader.\n\n```js\n{\n '.babel.js': {\n module: 'babel/register',\n register: function (module) {\n module({\n // register on .js extension due to https://github.com/joyent/node/blob/v0.12.0/lib/module.js#L353\n // which only captures the final extension (.babel.js -> .js)\n extensions: '.js'\n })\n }\n },\n '.cirru': 'cirru-script/lib/register',\n '.cjsx': 'node-cjsx/register',\n '.co': 'coco',\n '.coffee': ['coffee-script/register', 'coffee-script'],\n '.coffee.md': ['coffee-script/register', 'coffee-script'],\n '.csv': 'require-csv',\n '.iced': ['iced-coffee-script/register', 'iced-coffee-script'],\n '.iced.md': 'iced-coffee-script/register',\n '.ini': 'require-ini',\n '.js': null,\n '.json': null,\n '.json5': 'json5/lib/require',\n '.jsx': [\n {\n module: 'babel/register',\n register: function (module) {\n module({\n extensions: '.jsx'\n });\n },\n },\n {\n module: 'node-jsx',\n register: function (module) {\n module.install({\n extension: '.jsx',\n harmony: true\n });\n }\n }\n ],\n '.litcoffee': ['coffee-script/register', 'coffee-script'],\n '.liticed': 'iced-coffee-script/register',\n '.ls': ['livescript', 'LiveScript'],\n '.node': null,\n '.toml': {\n module: 'toml-require',\n register: function (module) {\n module.install();\n }\n },\n '.ts': ['typescript-register', 'typescript-require'],\n '.wisp': 'wisp/engine/node',\n '.xml': 'require-xml',\n '.yaml': 'require-yaml',\n '.yml': 'require-yaml'\n};\n```\n\n### jsVariants\nSame as above, but only include the extensions which are javascript variants.\n\n## How to use it\n\nConsumers should use the exported `extensions` or `jsVariants` object to determine which module should be loaded for a given extension. If a matching extension is found, consumers should do the following:\n\n1. If the value is null, do nothing.\n\n2. If the value is a string, try to require it.\n\n3. If the value is an object, try to require the `module` property. If successful, the `register` property (a function) should be called with the module passed as the first argument.\n\n4. If the value is an array, iterate over it, attempting step #2 or #3 until one of the attempts does not throw.\n\n[require.extensions]: http://nodejs.org/api/globals.html#globals_require_extensions\n",
|
||||
"readmeFilename": "README.md",
|
||||
"_id": "interpret@0.6.2",
|
||||
"_from": "interpret@^0.6.2"
|
||||
}
|
||||
60
server/node_modules/gulp/node_modules/liftoff/.jscsrc
generated
vendored
Normal file
60
server/node_modules/gulp/node_modules/liftoff/.jscsrc
generated
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"esnext": true,
|
||||
"disallowMixedSpacesAndTabs": true,
|
||||
"disallowSpaceAfterObjectKeys": true,
|
||||
"disallowSpaceBeforeBinaryOperators": [
|
||||
","
|
||||
],
|
||||
"disallowSpacesInsideArrayBrackets": true,
|
||||
"disallowSpacesInsideParentheses": true,
|
||||
"disallowTrailingWhitespace": true,
|
||||
"requireCommaBeforeLineBreak": true,
|
||||
"requireLineFeedAtFileEnd": true,
|
||||
"requireSpaceAfterBinaryOperators": [
|
||||
"=",
|
||||
",",
|
||||
"+",
|
||||
"-",
|
||||
"/",
|
||||
"*",
|
||||
"==",
|
||||
"===",
|
||||
"!=",
|
||||
"!==",
|
||||
":",
|
||||
"&&",
|
||||
"||"
|
||||
],
|
||||
"requireSpaceAfterKeywords": [
|
||||
"if",
|
||||
"else",
|
||||
"for",
|
||||
"while",
|
||||
"do",
|
||||
"switch",
|
||||
"return",
|
||||
"try",
|
||||
"catch"
|
||||
],
|
||||
"requireSpaceBeforeBinaryOperators": [
|
||||
"=",
|
||||
"+",
|
||||
"-",
|
||||
"/",
|
||||
"*",
|
||||
"==",
|
||||
"===",
|
||||
"!=",
|
||||
"!==",
|
||||
"&&",
|
||||
"||"
|
||||
],
|
||||
"requireSpaceBeforeBlockStatements": true,
|
||||
"requireSpacesInFunctionExpression": {
|
||||
"beforeOpeningCurlyBrace": true
|
||||
},
|
||||
"validateQuoteMarks": {
|
||||
"escape": true,
|
||||
"mark": "'"
|
||||
}
|
||||
}
|
||||
11
server/node_modules/gulp/node_modules/liftoff/.jshintrc
generated
vendored
Normal file
11
server/node_modules/gulp/node_modules/liftoff/.jshintrc
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"undef": true,
|
||||
"unused": true,
|
||||
"node": true,
|
||||
"esnext": true,
|
||||
"expr": true,
|
||||
"globals": {
|
||||
"describe": true,
|
||||
"it": true
|
||||
}
|
||||
}
|
||||
2
server/node_modules/gulp/node_modules/liftoff/.npmignore
generated
vendored
Normal file
2
server/node_modules/gulp/node_modules/liftoff/.npmignore
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
test
|
||||
artwork
|
||||
9
server/node_modules/gulp/node_modules/liftoff/.travis.yml
generated
vendored
Normal file
9
server/node_modules/gulp/node_modules/liftoff/.travis.yml
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.10"
|
||||
- "0.12"
|
||||
- "iojs"
|
||||
before_install:
|
||||
- npm update -g npm
|
||||
matrix:
|
||||
fast_finish: true
|
||||
119
server/node_modules/gulp/node_modules/liftoff/CHANGELOG
generated
vendored
Normal file
119
server/node_modules/gulp/node_modules/liftoff/CHANGELOG
generated
vendored
Normal file
@@ -0,0 +1,119 @@
|
||||
v2.1.0:
|
||||
date: 2015-05-20
|
||||
changes:
|
||||
- Use rechoir to autoload modules.
|
||||
v2.0.3:
|
||||
date: 2015-03-31
|
||||
changes:
|
||||
- Internal bugfix, don't wrap callback error in another error, idiot.
|
||||
v2.0.2:
|
||||
date: 2015-02-24
|
||||
changes:
|
||||
- Support process.env.NODE_PATH when resolving module.
|
||||
v2.0.1:
|
||||
date: 2015-02-01
|
||||
changes:
|
||||
- Find modulePath correctly when devving against yourself.
|
||||
v2.0.0:
|
||||
date: 2015-01-15
|
||||
changes:
|
||||
- Rename `nodeFlags` to `v8Flags` and make it async.
|
||||
v1.0.4:
|
||||
date: 2015-01-04
|
||||
changes:
|
||||
- Detect config extension using basename, not full path.
|
||||
v1.0.0:
|
||||
date: 2014-12-16
|
||||
changes:
|
||||
- Update dependencies
|
||||
v0.13.6:
|
||||
date: 2014-11-07
|
||||
changes:
|
||||
- Don't include artwork on npm.
|
||||
v0.13.5:
|
||||
date: 2014-10-10
|
||||
changes:
|
||||
- Only attempt to resolve the real path of configFile if it is actually a symlink.
|
||||
v0.13.4:
|
||||
date: 2014-10-07
|
||||
changes:
|
||||
- Set configBase to the directory of the symlink, not the directory of its real location.
|
||||
v0.13.3:
|
||||
date: 2014-10-06
|
||||
changes:
|
||||
- Return the real location of symlinked config files.
|
||||
v0.13.2:
|
||||
date: 2014-09-12
|
||||
changes:
|
||||
- Include flags in respawn event. I really miss `npm publish --force`.
|
||||
v0.13.1:
|
||||
date: 2014-09-12
|
||||
changes:
|
||||
- Slight performance tweak.
|
||||
v0.13.0:
|
||||
date: 2014-09-12
|
||||
changes:
|
||||
- Support passing flags to node with `nodeFlags` option.
|
||||
v0.12.1:
|
||||
date: 2014-06-27
|
||||
changes:
|
||||
- Support preloading modules for compound extensions like `.coffee.md`.
|
||||
v0.12.0:
|
||||
date: 2014-06-27
|
||||
changes:
|
||||
- Respect order of extensions when searching for config.
|
||||
- Rename `configNameRegex` environment property to `configNameSearch`.
|
||||
v0.11.3:
|
||||
date: 2014-06-09
|
||||
changes:
|
||||
- Make cwd match configBase if cwd isn't explictly provided
|
||||
v0.11.2:
|
||||
date: 2014-06-04
|
||||
changes:
|
||||
- Regression fix: coerce preloads into array before attempting to push more
|
||||
v0.11.1:
|
||||
date: 2014-06-02
|
||||
changes:
|
||||
- Update dependencies.
|
||||
v0.11.0:
|
||||
date: 2014-05-27
|
||||
changes:
|
||||
- Refactor and remove options parsing.
|
||||
v0.10.0:
|
||||
date: 2014-05-06
|
||||
changes:
|
||||
- Remove `addExtension` in favor of `extension` option.
|
||||
- Support preloading modules based on extension.
|
||||
v0.9.7:
|
||||
date: 2014-04-28
|
||||
changes:
|
||||
- Locate local module in cwd even if config isn't present.
|
||||
v0.9.6:
|
||||
date: 2014-04-02
|
||||
changes:
|
||||
- Fix regression where external modules are not properly required.
|
||||
- Ignore configPathFlag / cwdFlag if the value isn't a string
|
||||
v0.9.3:
|
||||
date: 2014-02-28
|
||||
changes:
|
||||
- Fix regression where developing against self doesn't correctly set cwd.
|
||||
v0.9.0:
|
||||
date: 2014-02-28
|
||||
changes:
|
||||
- Use liftoff instance as context (`this`) for launch callback.
|
||||
- Support split --cwd and --configfile locations.
|
||||
- Rename `configLocationFlag` to `configPathFlag`
|
||||
- Support node 0.8+
|
||||
v0.8.7:
|
||||
date: 2014-02-24
|
||||
changes:
|
||||
- Pass environment as first argument to `launch`.
|
||||
v0.8.5:
|
||||
date: 2014-02-19
|
||||
changes:
|
||||
- Implement `addExtensions` option.
|
||||
- Default to `index.js` if `modulePackage` has no `main` property.
|
||||
v0.8.4:
|
||||
date: 2014-02-05
|
||||
changes:
|
||||
- Initial public release.
|
||||
22
server/node_modules/gulp/node_modules/liftoff/LICENSE
generated
vendored
Normal file
22
server/node_modules/gulp/node_modules/liftoff/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
Copyright (c) 2014 Tyler Kellen
|
||||
|
||||
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.
|
||||
304
server/node_modules/gulp/node_modules/liftoff/README.md
generated
vendored
Normal file
304
server/node_modules/gulp/node_modules/liftoff/README.md
generated
vendored
Normal file
@@ -0,0 +1,304 @@
|
||||
<p align="center">
|
||||
<a href="http://liftoffjs.com">
|
||||
<img height="100" width="297" src="https://raw.githubusercontent.com/tkellen/js-liftoff/master/artwork/liftoff.png"/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
# liftoff [](http://travis-ci.org/tkellen/js-liftoff) [](https://ci.appveyor.com/project/tkellen/js-liftoff/branch/master)
|
||||
|
||||
> Launch your command line tool with ease.
|
||||
|
||||
[](https://nodei.co/npm/liftoff/)
|
||||
|
||||
## What is it?
|
||||
[See this blog post](http://weblog.bocoup.com/building-command-line-tools-in-node-with-liftoff/), [check out this proof of concept](http://github.com/tkellen/node-hacker), or read on.
|
||||
|
||||
Say you're writing a CLI tool. Let's call it [hacker](http://github.com/tkellen/node-hacker). You want to configure it using a `Hackerfile`. This is node, so you install `hacker` locally for each project you use it in. But, in order to get the `hacker` command in your PATH, you also install it globally.
|
||||
|
||||
Now, when you run `hacker`, you want to configure what it does using the `Hackerfile` in your current directory, and you want it to execute using the local installation of your tool. Also, it'd be nice if the `hacker` command was smart enough to traverse up your folders until it finds a `Hackerfile`—for those times when you're not in the root directory of your project. Heck, you might even want to launch `hacker` from a folder outside of your project by manually specifying a working directory. Liftoff manages this for you.
|
||||
|
||||
So, everything is working great. Now you can find your local `hacker` and `Hackerfile` with ease. Unfortunately, it turns out you've authored your `Hackerfile` in coffee-script, or some other JS variant. In order to support *that*, you have to load the compiler for it, and then register the extension for it with node. Good news, Liftoff can do that, and a whole lot more, too.
|
||||
|
||||
## API
|
||||
|
||||
### constructor(opts)
|
||||
|
||||
Create an instance of Liftoff to invoke your application.
|
||||
|
||||
An example utilizing all options:
|
||||
```js
|
||||
const Hacker = new Liftoff({
|
||||
name: 'hacker',
|
||||
processTitle: 'hacker',
|
||||
moduleName: 'hacker',
|
||||
configName: 'hackerfile',
|
||||
extensions: {
|
||||
'.js': null,
|
||||
'.json': null,
|
||||
'.coffee': 'coffee-script/register'
|
||||
},
|
||||
v8flags: ['--harmony'] // or v8flags: require('v8flags');
|
||||
});
|
||||
```
|
||||
|
||||
#### opts.name
|
||||
|
||||
Sugar for setting `processTitle`, `moduleName`, `configName` automatically.
|
||||
|
||||
Type: `String`
|
||||
Default: `null`
|
||||
|
||||
These are equivalent:
|
||||
```js
|
||||
const Hacker = Liftoff({
|
||||
processTitle: 'hacker',
|
||||
moduleName: 'hacker',
|
||||
configName: 'hackerfile'
|
||||
});
|
||||
```
|
||||
```js
|
||||
const Hacker = Liftoff({name:'hacker'});
|
||||
```
|
||||
|
||||
#### opts.moduleName
|
||||
|
||||
Sets which module your application expects to find locally when being run.
|
||||
|
||||
Type: `String`
|
||||
Default: `null`
|
||||
|
||||
#### opts.configName
|
||||
|
||||
Sets the name of the configuration file Liftoff will attempt to find. Case-insensitive.
|
||||
|
||||
Type: `String`
|
||||
Default: `null`
|
||||
|
||||
#### opts.extensions
|
||||
|
||||
Set extensions to include when searching for a configuration file. If an external module is needed to load a given extension (e.g. `.coffee`), the module name should be specified as the value for the key.
|
||||
|
||||
Type: `Object`
|
||||
Default: `{".js":null,".json":null}`
|
||||
|
||||
**Examples:**
|
||||
|
||||
In this example Liftoff will look for `myappfile{.js,.json,.coffee}`. If a config with the extension `.coffee` is found, Liftoff will try to require `coffee-script/require` from the current working directory.
|
||||
```js
|
||||
const MyApp = new Liftoff({
|
||||
name: 'myapp'
|
||||
extensions: {
|
||||
'.js': null,
|
||||
'.json': null,
|
||||
'.coffee': 'coffee-script/register'
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
In this example, Liftoff will look for `.myapp{rc}`.
|
||||
```js
|
||||
const MyApp = new Liftoff({
|
||||
name: 'myapp',
|
||||
configName: '.myapp',
|
||||
extensions: {
|
||||
'rc': null
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
In this example, Liftoff will automatically attempt to load the correct module for any javascript variant supported by [node-interpret](https://github.com/tkellen/node-interpret) (as long as it does not require a register method).
|
||||
|
||||
```js
|
||||
const MyApp = new Liftoff({
|
||||
name: 'myapp',
|
||||
extensions: require('interpret').jsVariants
|
||||
});
|
||||
```
|
||||
#### opts.v8flags
|
||||
|
||||
Any flag specified here will be applied to node, not your program. Useful for supporting invocations like `myapp --harmony command`, where `--harmony` should be passed to node, not your program. This functionality is implemented using [flagged-respawn](http://github.com/tkellen/node-flagged-respawn). To support all v8flags, see [node-v8flags](https://github.com/tkellen/node-v8flags).
|
||||
|
||||
Type: `Array|Function`
|
||||
Default: `null`
|
||||
|
||||
If this method is a function, it should take a node-style callback that yields an array of flags.
|
||||
|
||||
#### opts.processTitle
|
||||
|
||||
Sets what the [process title](http://nodejs.org/api/process.html#process_process_title) will be.
|
||||
|
||||
Type: `String`
|
||||
Default: `null`
|
||||
|
||||
#### opts.completions(type)
|
||||
|
||||
A method to handle bash/zsh/whatever completions.
|
||||
|
||||
Type: `Function`
|
||||
Default: `null`
|
||||
|
||||
## launch(opts, callback(env))
|
||||
Launches your application with provided options, builds an environment, and invokes your callback, passing the calculated environment as the first argument.
|
||||
|
||||
##### Example Configuration w/ Options Parsing:
|
||||
```js
|
||||
const Liftoff = require('liftoff');
|
||||
const MyApp = new Liftoff({name:'myapp'});
|
||||
const argv = require('minimist')(process.argv.slice(2));
|
||||
const invoke = function (env) {
|
||||
console.log('my environment is:', env);
|
||||
console.log('my cli options are:', argv);
|
||||
console.log('my liftoff config is:', this);
|
||||
};
|
||||
MyApp.launch({
|
||||
cwd: argv.cwd,
|
||||
configPath: argv.myappfile,
|
||||
require: argv.require,
|
||||
completion: argv.completion
|
||||
}, invoke);
|
||||
```
|
||||
|
||||
#### opts.cwd
|
||||
|
||||
Change the current working directory for this launch. Relative paths are calculated against `process.cwd()`.
|
||||
|
||||
Type: `String`
|
||||
Default: `process.cwd()`
|
||||
|
||||
**Example Configuration:**
|
||||
```js
|
||||
const argv = require('minimist')(process.argv.slice(2));
|
||||
MyApp.launch({
|
||||
cwd: argv.cwd
|
||||
}, invoke);
|
||||
```
|
||||
|
||||
**Matching CLI Invocation:**
|
||||
```
|
||||
myapp --cwd ../
|
||||
```
|
||||
|
||||
#### opts.configPath
|
||||
|
||||
Don't search for a config, use the one provided. **Note:** Liftoff will assume the current working directory is the directory containing the config file unless an alternate location is explicitly specified using `cwd`.
|
||||
|
||||
Type: `String`
|
||||
Default: `null`
|
||||
|
||||
**Example Configuration:**
|
||||
```js
|
||||
var argv = require('minimist')(process.argv.slice(2));
|
||||
MyApp.launch({
|
||||
configPath: argv.myappfile
|
||||
}, invoke);
|
||||
```
|
||||
|
||||
**Matching CLI Invocation:**
|
||||
```
|
||||
myapp --myappfile /var/www/project/Myappfile.js
|
||||
```
|
||||
|
||||
**Examples using `cwd` and `configPath` together:**
|
||||
|
||||
These are functionally identical:
|
||||
```
|
||||
myapp --myappfile /var/www/project/Myappfile.js
|
||||
myapp --cwd /var/www/project
|
||||
```
|
||||
|
||||
These can run myapp from a shared directory as though it were located in another project:
|
||||
```
|
||||
myapp --myappfile /Users/name/Myappfile.js --cwd /var/www/project1
|
||||
myapp --myappfile /Users/name/Myappfile.js --cwd /var/www/project2
|
||||
```
|
||||
|
||||
#### opts.require
|
||||
|
||||
A string or array of modules to attempt requiring from the local working directory before invoking the launch callback.
|
||||
|
||||
Type: `String|Array`
|
||||
Default: `null`
|
||||
|
||||
**Example Configuration:**
|
||||
```js
|
||||
var argv = require('minimist')(process.argv.slice(2));
|
||||
MyApp.launch({
|
||||
require: argv.require
|
||||
}, invoke);
|
||||
```
|
||||
|
||||
**Matching CLI Invocation:**
|
||||
```js
|
||||
myapp --require coffee-script/register
|
||||
```
|
||||
|
||||
#### callback(env)
|
||||
|
||||
A function to start your application. When invoked, `this` will be your instance of Liftoff. The `env` param will contain the following keys:
|
||||
|
||||
- `cwd`: the current working directory
|
||||
- `require`: an array of modules that liftoff tried to pre-load
|
||||
- `configNameSearch`: the config files searched for
|
||||
- `configPath`: the full path to your configuration file (if found)
|
||||
- `configBase`: the base directory of your configuration file (if found)
|
||||
- `modulePath`: the full path to the local module your project relies on (if found)
|
||||
- `modulePackage`: the contents of the local module's package.json (if found)
|
||||
|
||||
### events
|
||||
|
||||
#### require(name, module)
|
||||
|
||||
Emitted when a module is pre-loaded.
|
||||
|
||||
```js
|
||||
var Hacker = new Liftoff({name:'hacker'});
|
||||
Hacker.on('require', function (name, module) {
|
||||
console.log('Requiring external module: '+name+'...');
|
||||
// automatically register coffee-script extensions
|
||||
if (name === 'coffee-script') {
|
||||
module.register();
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
#### requireFail(name, err)
|
||||
|
||||
Emitted when a requested module cannot be preloaded.
|
||||
|
||||
```js
|
||||
var Hacker = new Liftoff({name:'hacker'});
|
||||
Hacker.on('requireFail', function (name, err) {
|
||||
console.log('Unable to load:', name, err);
|
||||
});
|
||||
```
|
||||
|
||||
#### respawn(flags, child)
|
||||
|
||||
Emitted when Liftoff re-spawns your process (when a [`nodeFlag`](#optsnodeflags) is detected).
|
||||
|
||||
```js
|
||||
var Hacker = new Liftoff({
|
||||
name: 'hacker',
|
||||
nodeFlags: ['--harmony']
|
||||
});
|
||||
Hacker.on('respawn', function (flags, child) {
|
||||
console.log('Detected node flags:', flags);
|
||||
console.log('Respawned to PID:', child.pid);
|
||||
});
|
||||
```
|
||||
|
||||
Event will be triggered for this command:
|
||||
`hacker --harmony commmand`
|
||||
|
||||
## Examples
|
||||
|
||||
Check out how [gulp](https://github.com/gulpjs/gulp/blob/master/bin/gulp.js) uses Liftoff.
|
||||
|
||||
For a bare-bones example, try [the hacker project](https://github.com/tkellen/node-hacker/blob/master/bin/hacker.js).
|
||||
|
||||
To try the example, do the following:
|
||||
|
||||
1. Install the sample project `hacker` with `npm install -g hacker`.
|
||||
2. Make a `Hackerfile.js` with some arbitrary javascript it.
|
||||
3. Install hacker next to it with `npm install hacker`.
|
||||
3. Run `hacker` while in the same parent folder.
|
||||
28
server/node_modules/gulp/node_modules/liftoff/UPGRADING.md
generated
vendored
Normal file
28
server/node_modules/gulp/node_modules/liftoff/UPGRADING.md
generated
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
# 1.0.0 -> 2.0.0
|
||||
The option `nodeFlags` was renamed to `v8flags` for accuracy. It can now be a callback taking method that yields an array of flags, **or** an array literal.
|
||||
|
||||
# 0.11 -> 0.12
|
||||
For the environment passed into the `launch` callback, `configNameRegex` has been renamed to `configNameSearch`. It now returns an array of valid config names instead of a regular expression.
|
||||
|
||||
# 0.10 -> 0.11
|
||||
The method signature for `launch` was changed in this version of Liftoff.
|
||||
|
||||
You must now provide your own options parser and pass your desired params directly into `launch` as the first argument. The second argument is now the invocation callback that starts your application.
|
||||
|
||||
To replicate the default functionality of 0.10, use the following:
|
||||
```js
|
||||
const Liftoff = require('liftoff');
|
||||
const MyApp = new Liftoff({name:'myapp'});
|
||||
const argv = require('minimist')(process.argv.slice(2));
|
||||
const invoke = function (env) {
|
||||
console.log('my environment is:', env);
|
||||
console.log('my cli options are:', argv);
|
||||
console.log('my liftoff config is:', this);
|
||||
};
|
||||
MyApp.launch({
|
||||
cwd: argv.cwd,
|
||||
configPath: argv.myappfile,
|
||||
require: argv.require,
|
||||
completion: argv.completion
|
||||
}, invoke);
|
||||
```
|
||||
26
server/node_modules/gulp/node_modules/liftoff/appveyor.yml
generated
vendored
Normal file
26
server/node_modules/gulp/node_modules/liftoff/appveyor.yml
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
# http://www.appveyor.com/docs/appveyor-yml
|
||||
# http://www.appveyor.com/docs/lang/nodejs-iojs
|
||||
|
||||
environment:
|
||||
matrix:
|
||||
# node.js
|
||||
- nodejs_version: "0.10"
|
||||
- nodejs_version: "0.12"
|
||||
# io.js
|
||||
- nodejs_version: "1"
|
||||
|
||||
install:
|
||||
- ps: Install-Product node $env:nodejs_version
|
||||
- npm install
|
||||
|
||||
test_script:
|
||||
- node --version
|
||||
- npm --version
|
||||
# power shell
|
||||
- ps: "npm test"
|
||||
# standard command line
|
||||
- cmd: npm test
|
||||
|
||||
build: off
|
||||
|
||||
version: "{build}"
|
||||
204
server/node_modules/gulp/node_modules/liftoff/index.js
generated
vendored
Normal file
204
server/node_modules/gulp/node_modules/liftoff/index.js
generated
vendored
Normal file
@@ -0,0 +1,204 @@
|
||||
const fs = require('fs');
|
||||
const util = require('util');
|
||||
const path = require('path');
|
||||
const EE = require('events').EventEmitter;
|
||||
|
||||
const extend = require('extend');
|
||||
const resolve = require('resolve');
|
||||
const flaggedRespawn = require('flagged-respawn');
|
||||
const rechoir = require('rechoir');
|
||||
|
||||
const findCwd = require('./lib/find_cwd');
|
||||
const findConfig = require('./lib/find_config');
|
||||
const fileSearch = require('./lib/file_search');
|
||||
const parseOptions = require('./lib/parse_options');
|
||||
const silentRequire = require('./lib/silent_require');
|
||||
const buildConfigName = require('./lib/build_config_name');
|
||||
|
||||
|
||||
function Liftoff (opts) {
|
||||
EE.call(this);
|
||||
extend(this, parseOptions(opts));
|
||||
}
|
||||
util.inherits(Liftoff, EE);
|
||||
|
||||
Liftoff.prototype.requireLocal = function (module, basedir) {
|
||||
try {
|
||||
var result = require(resolve.sync(module, {basedir: basedir}));
|
||||
this.emit('require', module, result);
|
||||
return result;
|
||||
} catch (e) {
|
||||
this.emit('requireFail', module, e);
|
||||
}
|
||||
};
|
||||
|
||||
Liftoff.prototype.buildEnvironment = function (opts) {
|
||||
opts = opts || {};
|
||||
|
||||
// get modules we want to preload
|
||||
var preload = opts.require || [];
|
||||
|
||||
// ensure items to preload is an array
|
||||
if (!Array.isArray(preload)) {
|
||||
preload = [preload];
|
||||
}
|
||||
|
||||
// make a copy of search paths that can be mutated for this run
|
||||
var searchPaths = this.searchPaths.slice();
|
||||
|
||||
// calculate current cwd
|
||||
var cwd = findCwd(opts);
|
||||
|
||||
// if cwd was provided explicitly, only use it for searching config
|
||||
if (opts.cwd) {
|
||||
searchPaths = [cwd];
|
||||
} else {
|
||||
// otherwise just search in cwd first
|
||||
searchPaths.unshift(cwd);
|
||||
}
|
||||
|
||||
// calculate the regex to use for finding the config file
|
||||
var configNameSearch = buildConfigName({
|
||||
configName: this.configName,
|
||||
extensions: Object.keys(this.extensions)
|
||||
});
|
||||
|
||||
// calculate configPath
|
||||
var configPath = findConfig({
|
||||
configNameSearch: configNameSearch,
|
||||
searchPaths: searchPaths,
|
||||
configPath: opts.configPath
|
||||
});
|
||||
|
||||
// if we have a config path, save the directory it resides in.
|
||||
var configBase;
|
||||
if (configPath) {
|
||||
configBase = path.dirname(configPath);
|
||||
// if cwd wasn't provided explicitly, it should match configBase
|
||||
if (!opts.cwd) {
|
||||
cwd = configBase;
|
||||
}
|
||||
// resolve symlink if needed
|
||||
if (fs.lstatSync(configPath).isSymbolicLink()) {
|
||||
configPath = fs.realpathSync(configPath);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: break this out into lib/
|
||||
// locate local module and package next to config or explicitly provided cwd
|
||||
var modulePath, modulePackage;
|
||||
try {
|
||||
var delim = (process.platform === 'win32' ? ';' : ':'),
|
||||
paths = (process.env.NODE_PATH ? process.env.NODE_PATH.split(delim) : []);
|
||||
modulePath = resolve.sync(this.moduleName, {basedir: configBase || cwd, paths: paths});
|
||||
modulePackage = silentRequire(fileSearch('package.json', [modulePath]));
|
||||
} catch (e) {}
|
||||
|
||||
// if we have a configuration but we failed to find a local module, maybe
|
||||
// we are developing against ourselves?
|
||||
if (!modulePath && configPath) {
|
||||
// check the package.json sibling to our config to see if its `name`
|
||||
// matches the module we're looking for
|
||||
var modulePackagePath = fileSearch('package.json', [configBase]);
|
||||
modulePackage = silentRequire(modulePackagePath);
|
||||
if (modulePackage && modulePackage.name === this.moduleName) {
|
||||
// if it does, our module path is `main` inside package.json
|
||||
modulePath = path.join(path.dirname(modulePackagePath), modulePackage.main || 'index.js');
|
||||
cwd = configBase;
|
||||
} else {
|
||||
// clear if we just required a package for some other project
|
||||
modulePackage = {};
|
||||
}
|
||||
}
|
||||
|
||||
// load any modules which were requested to be required
|
||||
if (preload.length) {
|
||||
// unique results first
|
||||
preload.filter(function (value, index, self) {
|
||||
return self.indexOf(value) === index;
|
||||
}).forEach(function (dep) {
|
||||
this.requireLocal(dep, findCwd(opts));
|
||||
}, this);
|
||||
}
|
||||
|
||||
// use rechoir to autoload any required modules
|
||||
var autoloads;
|
||||
if (configPath) {
|
||||
autoloads = rechoir.prepare(this.extensions, configPath, cwd, true);
|
||||
if (autoloads instanceof Error) {
|
||||
autoloads = autoloads.failures;
|
||||
}
|
||||
if (Array.isArray(autoloads)) {
|
||||
autoloads.forEach(function (attempt) {
|
||||
if (attempt.error) {
|
||||
this.emit('requireFail', attempt.moduleName, attempt.error);
|
||||
} else {
|
||||
this.emit('require', attempt.moduleName, attempt.module);
|
||||
}
|
||||
}, this);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
cwd: cwd,
|
||||
require: preload,
|
||||
configNameSearch: configNameSearch,
|
||||
configPath: configPath,
|
||||
configBase: configBase,
|
||||
modulePath: modulePath,
|
||||
modulePackage: modulePackage || {}
|
||||
};
|
||||
};
|
||||
|
||||
Liftoff.prototype.handleFlags = function (cb) {
|
||||
if (typeof this.v8flags === 'function') {
|
||||
this.v8flags(function (err, flags) {
|
||||
if (err) {
|
||||
cb(err);
|
||||
} else {
|
||||
cb(null, flags);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
process.nextTick(function () {
|
||||
cb(null, this.v8flags);
|
||||
}.bind(this));
|
||||
}
|
||||
};
|
||||
|
||||
Liftoff.prototype.launch = function (opts, fn) {
|
||||
if (typeof fn !== 'function') {
|
||||
throw new Error('You must provide a callback function.');
|
||||
}
|
||||
process.title = this.processTitle;
|
||||
|
||||
var completion = opts.completion;
|
||||
if (completion && this.completions) {
|
||||
return this.completions(completion);
|
||||
}
|
||||
|
||||
this.handleFlags(function (err, flags) {
|
||||
if (err) {
|
||||
throw err;
|
||||
} else {
|
||||
if (flags) {
|
||||
flaggedRespawn(flags, process.argv, function (ready, child) {
|
||||
if (child !== process) {
|
||||
this.emit('respawn', process.argv.filter(function (flag) {
|
||||
return flags.indexOf(flag) !== -1;
|
||||
}.bind(this)), child);
|
||||
}
|
||||
if (ready) {
|
||||
fn.call(this, this.buildEnvironment(opts));
|
||||
}
|
||||
}.bind(this));
|
||||
} else {
|
||||
fn.call(this, this.buildEnvironment(opts));
|
||||
}
|
||||
}
|
||||
}.bind(this));
|
||||
};
|
||||
|
||||
|
||||
|
||||
module.exports = Liftoff;
|
||||
17
server/node_modules/gulp/node_modules/liftoff/lib/build_config_name.js
generated
vendored
Normal file
17
server/node_modules/gulp/node_modules/liftoff/lib/build_config_name.js
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
module.exports = function (opts) {
|
||||
opts = opts || {};
|
||||
var configName = opts.configName;
|
||||
var extensions = opts.extensions;
|
||||
if (!configName) {
|
||||
throw new Error('Please specify a configName.');
|
||||
}
|
||||
if (configName instanceof RegExp) {
|
||||
return [configName];
|
||||
}
|
||||
if (!Array.isArray(extensions)) {
|
||||
throw new Error('Please provide an array of valid extensions.');
|
||||
}
|
||||
return extensions.map(function (ext) {
|
||||
return configName + ext;
|
||||
});
|
||||
};
|
||||
14
server/node_modules/gulp/node_modules/liftoff/lib/file_search.js
generated
vendored
Normal file
14
server/node_modules/gulp/node_modules/liftoff/lib/file_search.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
const findup = require('findup-sync');
|
||||
|
||||
module.exports = function (search, paths) {
|
||||
var path;
|
||||
var len = paths.length;
|
||||
for (var i = 0; i < len; i++) {
|
||||
if (path) {
|
||||
break;
|
||||
} else {
|
||||
path = findup(search, {cwd: paths[i], nocase: true});
|
||||
}
|
||||
}
|
||||
return path;
|
||||
};
|
||||
25
server/node_modules/gulp/node_modules/liftoff/lib/find_config.js
generated
vendored
Normal file
25
server/node_modules/gulp/node_modules/liftoff/lib/find_config.js
generated
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const fileSearch = require('./file_search');
|
||||
|
||||
module.exports = function (opts) {
|
||||
opts = opts || {};
|
||||
var configNameSearch = opts.configNameSearch;
|
||||
var configPath = opts.configPath;
|
||||
var searchPaths = opts.searchPaths;
|
||||
// only search for a config if a path to one wasn't explicitly provided
|
||||
if (!configPath) {
|
||||
if (!Array.isArray(searchPaths)) {
|
||||
throw new Error('Please provide an array of paths to search for config in.');
|
||||
}
|
||||
if (!configNameSearch) {
|
||||
throw new Error('Please provide a configNameSearch.');
|
||||
}
|
||||
configPath = fileSearch(configNameSearch, searchPaths);
|
||||
}
|
||||
// confirm the configPath exists and return an absolute path to it
|
||||
if (fs.existsSync(configPath)) {
|
||||
return path.resolve(configPath);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
18
server/node_modules/gulp/node_modules/liftoff/lib/find_cwd.js
generated
vendored
Normal file
18
server/node_modules/gulp/node_modules/liftoff/lib/find_cwd.js
generated
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
const path = require('path');
|
||||
|
||||
module.exports = function (opts) {
|
||||
if (!opts) {
|
||||
opts = {};
|
||||
}
|
||||
var cwd = opts.cwd;
|
||||
var configPath = opts.configPath;
|
||||
// if a path to the desired config was specified
|
||||
// but no cwd was provided, use configPath dir
|
||||
if (typeof configPath === 'string' && !cwd) {
|
||||
cwd = path.dirname(path.resolve(configPath));
|
||||
}
|
||||
if (typeof cwd === 'string') {
|
||||
return path.resolve(cwd);
|
||||
}
|
||||
return process.cwd();
|
||||
};
|
||||
35
server/node_modules/gulp/node_modules/liftoff/lib/parse_options.js
generated
vendored
Normal file
35
server/node_modules/gulp/node_modules/liftoff/lib/parse_options.js
generated
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
const extend = require('extend');
|
||||
|
||||
module.exports = function (opts) {
|
||||
var defaults = {
|
||||
extensions: {
|
||||
'.js': null,
|
||||
'.json': null
|
||||
},
|
||||
searchPaths: []
|
||||
};
|
||||
if (!opts) {
|
||||
opts = {};
|
||||
}
|
||||
if (opts.name) {
|
||||
if (!opts.processTitle) {
|
||||
opts.processTitle = opts.name;
|
||||
}
|
||||
if (!opts.configName) {
|
||||
opts.configName = opts.name + 'file';
|
||||
}
|
||||
if (!opts.moduleName) {
|
||||
opts.moduleName = opts.name;
|
||||
}
|
||||
}
|
||||
if (!opts.processTitle) {
|
||||
throw new Error('You must specify a processTitle.');
|
||||
}
|
||||
if (!opts.configName) {
|
||||
throw new Error('You must specify a configName.');
|
||||
}
|
||||
if (!opts.moduleName) {
|
||||
throw new Error('You must specify a moduleName.');
|
||||
}
|
||||
return extend(defaults, opts);
|
||||
};
|
||||
5
server/node_modules/gulp/node_modules/liftoff/lib/silent_require.js
generated
vendored
Normal file
5
server/node_modules/gulp/node_modules/liftoff/lib/silent_require.js
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
module.exports = function (path) {
|
||||
try {
|
||||
return require(path);
|
||||
} catch (e) {}
|
||||
};
|
||||
68
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/.jscs.json
generated
vendored
Normal file
68
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/.jscs.json
generated
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"additionalRules": [],
|
||||
|
||||
"requireCurlyBraces": ["if", "else", "for", "while", "do", "try", "catch"],
|
||||
|
||||
"requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"],
|
||||
|
||||
"disallowSpaceAfterKeywords": [],
|
||||
|
||||
"requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true },
|
||||
"requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true },
|
||||
"disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true },
|
||||
"requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true },
|
||||
"disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true },
|
||||
|
||||
"requireSpaceBetweenArguments": true,
|
||||
|
||||
"disallowSpacesInsideParentheses": true,
|
||||
|
||||
"disallowSpacesInsideArrayBrackets": true,
|
||||
|
||||
"disallowQuotedKeysInObjects": "allButReserved",
|
||||
|
||||
"disallowSpaceAfterObjectKeys": true,
|
||||
|
||||
"requireCommaBeforeLineBreak": true,
|
||||
|
||||
"disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
|
||||
"requireSpaceAfterPrefixUnaryOperators": [],
|
||||
|
||||
"disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
|
||||
"requireSpaceBeforePostfixUnaryOperators": [],
|
||||
|
||||
"disallowSpaceBeforeBinaryOperators": [],
|
||||
"requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
|
||||
|
||||
"requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="],
|
||||
"disallowSpaceAfterBinaryOperators": [],
|
||||
|
||||
"disallowImplicitTypeConversion": ["binary", "string"],
|
||||
|
||||
"disallowKeywords": ["with", "eval"],
|
||||
|
||||
"requireKeywordsOnNewLine": [],
|
||||
"disallowKeywordsOnNewLine": ["else"],
|
||||
|
||||
"requireLineFeedAtFileEnd": true,
|
||||
|
||||
"disallowTrailingWhitespace": true,
|
||||
|
||||
"disallowTrailingComma": true,
|
||||
|
||||
"excludeFiles": ["node_modules/**", "vendor/**"],
|
||||
|
||||
"disallowMultipleLineStrings": true,
|
||||
|
||||
"requireDotNotation": true,
|
||||
|
||||
"requireParenthesesAroundIIFE": true,
|
||||
|
||||
"validateLineBreaks": "LF",
|
||||
|
||||
"validateQuoteMarks": {
|
||||
"escape": true,
|
||||
"mark": "'"
|
||||
}
|
||||
}
|
||||
|
||||
1
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/.npmignore
generated
vendored
Normal file
1
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/.npmignore
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
test
|
||||
36
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/.travis.yml
generated
vendored
Normal file
36
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/.travis.yml
generated
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "iojs-v1.8"
|
||||
- "iojs-v1.7"
|
||||
- "iojs-v1.6"
|
||||
- "iojs-v1.5"
|
||||
- "iojs-v1.4"
|
||||
- "iojs-v1.3"
|
||||
- "iojs-v1.2"
|
||||
- "iojs-v1.1"
|
||||
- "iojs-v1.0"
|
||||
- "0.12"
|
||||
- "0.11"
|
||||
- "0.10"
|
||||
- "0.9"
|
||||
- "0.8"
|
||||
- "0.6"
|
||||
- "0.4"
|
||||
before_install:
|
||||
- '[ "${TRAVIS_NODE_VERSION}" == "0.6" ] || npm install -g npm@~1.4.6'
|
||||
matrix:
|
||||
fast_finish: true
|
||||
allow_failures:
|
||||
- node_js: "iojs-v1.6"
|
||||
- node_js: "iojs-v1.5"
|
||||
- node_js: "iojs-v1.4"
|
||||
- node_js: "iojs-v1.3"
|
||||
- node_js: "iojs-v1.2"
|
||||
- node_js: "iojs-v1.1"
|
||||
- node_js: "iojs-v1.0"
|
||||
- node_js: "0.11"
|
||||
- node_js: "0.9"
|
||||
- node_js: "0.8"
|
||||
- node_js: "0.6"
|
||||
- node_js: "0.4"
|
||||
sudo: false
|
||||
61
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/CHANGELOG.md
generated
vendored
Normal file
61
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/CHANGELOG.md
generated
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
2.0.1 / 2015-04-25
|
||||
==================
|
||||
* Use an inline `isArray` check, for ES3 browsers. (#27)
|
||||
* Some old browsers fail when an identifier is `toString`
|
||||
* Test latest `node` and `io.js` versions on `travis-ci`; speed up builds
|
||||
* Add license info to package.json (#25)
|
||||
* Update `tape`, `jscs`
|
||||
* Adding a CHANGELOG
|
||||
|
||||
2.0.0 / 2014-10-01
|
||||
==================
|
||||
* Increase code coverage to 100%; run code coverage as part of tests
|
||||
* Add `npm run lint`; Run linter as part of tests
|
||||
* Remove nodeType and setInterval checks in isPlainObject
|
||||
* Updating `tape`, `jscs`, `covert`
|
||||
* General style and README cleanup
|
||||
|
||||
1.3.0 / 2014-06-20
|
||||
==================
|
||||
* Add component.json for browser support (#18)
|
||||
* Use SVG for badges in README (#16)
|
||||
* Updating `tape`, `covert`
|
||||
* Updating travis-ci to work with multiple node versions
|
||||
* Fix `deep === false` bug (returning target as {}) (#14)
|
||||
* Fixing constructor checks in isPlainObject
|
||||
* Adding additional test coverage
|
||||
* Adding `npm run coverage`
|
||||
* Add LICENSE (#13)
|
||||
* Adding a warning about `false`, per #11
|
||||
* General style and whitespace cleanup
|
||||
|
||||
1.2.1 / 2013-09-14
|
||||
==================
|
||||
* Fixing hasOwnProperty bugs that would only have shown up in specific browsers. Fixes #8
|
||||
* Updating `tape`
|
||||
|
||||
1.2.0 / 2013-09-02
|
||||
==================
|
||||
* Updating the README: add badges
|
||||
* Adding a missing variable reference.
|
||||
* Using `tape` instead of `buster` for tests; add more tests (#7)
|
||||
* Adding node 0.10 to Travis CI (#6)
|
||||
* Enabling "npm test" and cleaning up package.json (#5)
|
||||
* Add Travis CI.
|
||||
|
||||
1.1.3 / 2012-12-06
|
||||
==================
|
||||
* Added unit tests.
|
||||
* Ensure extend function is named. (Looks nicer in a stack trace.)
|
||||
* README cleanup.
|
||||
|
||||
1.1.1 / 2012-11-07
|
||||
==================
|
||||
* README cleanup.
|
||||
* Added installation instructions.
|
||||
* Added a missing semicolon
|
||||
|
||||
1.0.0 / 2012-04-08
|
||||
==================
|
||||
* Initial commit
|
||||
|
||||
23
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/LICENSE
generated
vendored
Normal file
23
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Stefan Thomas
|
||||
|
||||
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.
|
||||
|
||||
62
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/README.md
generated
vendored
Normal file
62
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/README.md
generated
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
[![Build Status][travis-svg]][travis-url]
|
||||
[![dependency status][deps-svg]][deps-url]
|
||||
[![dev dependency status][dev-deps-svg]][dev-deps-url]
|
||||
|
||||
# extend() for Node.js <sup>[![Version Badge][npm-version-png]][npm-url]</sup>
|
||||
|
||||
`node-extend` is a port of the classic extend() method from jQuery. It behaves as you expect. It is simple, tried and true.
|
||||
|
||||
## Installation
|
||||
|
||||
This package is available on [npm][npm-url] as: `extend`
|
||||
|
||||
``` sh
|
||||
npm install extend
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
**Syntax:** extend **(** [`deep`], `target`, `object1`, [`objectN`] **)**
|
||||
|
||||
*Extend one object with one or more others, returning the modified object.*
|
||||
|
||||
Keep in mind that the target object will be modified, and will be returned from extend().
|
||||
|
||||
If a boolean true is specified as the first argument, extend performs a deep copy, recursively copying any objects it finds. Otherwise, the copy will share structure with the original object(s).
|
||||
Undefined properties are not copied. However, properties inherited from the object's prototype will be copied over.
|
||||
Warning: passing `false` as the first argument is not supported.
|
||||
|
||||
### Arguments
|
||||
|
||||
* `deep` *Boolean* (optional)
|
||||
If set, the merge becomes recursive (i.e. deep copy).
|
||||
* `target` *Object*
|
||||
The object to extend.
|
||||
* `object1` *Object*
|
||||
The object that will be merged into the first.
|
||||
* `objectN` *Object* (Optional)
|
||||
More objects to merge into the first.
|
||||
|
||||
## License
|
||||
|
||||
`node-extend` is licensed under the [MIT License][mit-license-url].
|
||||
|
||||
## Acknowledgements
|
||||
|
||||
All credit to the jQuery authors for perfecting this amazing utility.
|
||||
|
||||
Ported to Node.js by [Stefan Thomas][github-justmoon] with contributions by [Jonathan Buchanan][github-insin] and [Jordan Harband][github-ljharb].
|
||||
|
||||
[travis-svg]: https://travis-ci.org/justmoon/node-extend.svg
|
||||
[travis-url]: https://travis-ci.org/justmoon/node-extend
|
||||
[npm-url]: https://npmjs.org/package/extend
|
||||
[mit-license-url]: http://opensource.org/licenses/MIT
|
||||
[github-justmoon]: https://github.com/justmoon
|
||||
[github-insin]: https://github.com/insin
|
||||
[github-ljharb]: https://github.com/ljharb
|
||||
[npm-version-png]: http://vb.teelaun.ch/justmoon/node-extend.svg
|
||||
[deps-svg]: https://david-dm.org/justmoon/node-extend.svg
|
||||
[deps-url]: https://david-dm.org/justmoon/node-extend
|
||||
[dev-deps-svg]: https://david-dm.org/justmoon/node-extend/dev-status.svg
|
||||
[dev-deps-url]: https://david-dm.org/justmoon/node-extend#info=devDependencies
|
||||
|
||||
32
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/component.json
generated
vendored
Normal file
32
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/component.json
generated
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"name": "extend",
|
||||
"author": "Stefan Thomas <justmoon@members.fsf.org> (http://www.justmoon.net)",
|
||||
"version": "2.0.1",
|
||||
"description": "Port of jQuery.extend for node.js and the browser.",
|
||||
"scripts": [
|
||||
"index.js"
|
||||
],
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Jordan Harband",
|
||||
"url": "https://github.com/ljharb"
|
||||
}
|
||||
],
|
||||
"keywords": [
|
||||
"extend",
|
||||
"clone",
|
||||
"merge"
|
||||
],
|
||||
"repository" : {
|
||||
"type": "git",
|
||||
"url": "https://github.com/justmoon/node-extend.git"
|
||||
},
|
||||
"dependencies": {
|
||||
},
|
||||
"devDependencies": {
|
||||
"tape" : "~3.0.0",
|
||||
"covert": "~0.4.0",
|
||||
"jscs": "~1.6.2"
|
||||
}
|
||||
}
|
||||
|
||||
89
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/index.js
generated
vendored
Normal file
89
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/index.js
generated
vendored
Normal file
@@ -0,0 +1,89 @@
|
||||
var hasOwn = Object.prototype.hasOwnProperty;
|
||||
var toStr = Object.prototype.toString;
|
||||
var undefined;
|
||||
|
||||
var isArray = function isArray(arr) {
|
||||
if (typeof Array.isArray === 'function') {
|
||||
return Array.isArray(arr);
|
||||
}
|
||||
|
||||
return toStr.call(arr) === '[object Array]';
|
||||
};
|
||||
|
||||
var isPlainObject = function isPlainObject(obj) {
|
||||
'use strict';
|
||||
if (!obj || toStr.call(obj) !== '[object Object]') {
|
||||
return false;
|
||||
}
|
||||
|
||||
var has_own_constructor = hasOwn.call(obj, 'constructor');
|
||||
var has_is_property_of_method = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');
|
||||
// Not own constructor property must be Object
|
||||
if (obj.constructor && !has_own_constructor && !has_is_property_of_method) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Own properties are enumerated firstly, so to speed up,
|
||||
// if last one is own, then all properties are own.
|
||||
var key;
|
||||
for (key in obj) {}
|
||||
|
||||
return key === undefined || hasOwn.call(obj, key);
|
||||
};
|
||||
|
||||
module.exports = function extend() {
|
||||
'use strict';
|
||||
var options, name, src, copy, copyIsArray, clone,
|
||||
target = arguments[0],
|
||||
i = 1,
|
||||
length = arguments.length,
|
||||
deep = false;
|
||||
|
||||
// Handle a deep copy situation
|
||||
if (typeof target === 'boolean') {
|
||||
deep = target;
|
||||
target = arguments[1] || {};
|
||||
// skip the boolean and the target
|
||||
i = 2;
|
||||
} else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) {
|
||||
target = {};
|
||||
}
|
||||
|
||||
for (; i < length; ++i) {
|
||||
options = arguments[i];
|
||||
// Only deal with non-null/undefined values
|
||||
if (options != null) {
|
||||
// Extend the base object
|
||||
for (name in options) {
|
||||
src = target[name];
|
||||
copy = options[name];
|
||||
|
||||
// Prevent never-ending loop
|
||||
if (target === copy) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Recurse if we're merging plain objects or arrays
|
||||
if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {
|
||||
if (copyIsArray) {
|
||||
copyIsArray = false;
|
||||
clone = src && isArray(src) ? src : [];
|
||||
} else {
|
||||
clone = src && isPlainObject(src) ? src : {};
|
||||
}
|
||||
|
||||
// Never move original objects, clone them
|
||||
target[name] = extend(deep, clone, copy);
|
||||
|
||||
// Don't bring in undefined values
|
||||
} else if (copy !== undefined) {
|
||||
target[name] = copy;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Return the modified object
|
||||
return target;
|
||||
};
|
||||
|
||||
46
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/package.json
generated
vendored
Normal file
46
server/node_modules/gulp/node_modules/liftoff/node_modules/extend/package.json
generated
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"name": "extend",
|
||||
"author": {
|
||||
"name": "Stefan Thomas",
|
||||
"email": "justmoon@members.fsf.org",
|
||||
"url": "http://www.justmoon.net"
|
||||
},
|
||||
"version": "2.0.1",
|
||||
"description": "Port of jQuery.extend for node.js and the browser",
|
||||
"main": "index",
|
||||
"scripts": {
|
||||
"test": "npm run lint && node test/index.js && npm run coverage-quiet",
|
||||
"coverage": "covert test/index.js",
|
||||
"coverage-quiet": "covert test/index.js --quiet",
|
||||
"lint": "jscs *.js */*.js"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Jordan Harband",
|
||||
"url": "https://github.com/ljharb"
|
||||
}
|
||||
],
|
||||
"keywords": [
|
||||
"extend",
|
||||
"clone",
|
||||
"merge"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/justmoon/node-extend.git"
|
||||
},
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"tape": "^4.0.0",
|
||||
"covert": "^1.0.1",
|
||||
"jscs": "^1.11.3"
|
||||
},
|
||||
"license": "MIT",
|
||||
"readme": "[![Build Status][travis-svg]][travis-url]\n[![dependency status][deps-svg]][deps-url]\n[![dev dependency status][dev-deps-svg]][dev-deps-url]\n\n# extend() for Node.js <sup>[![Version Badge][npm-version-png]][npm-url]</sup>\n\n`node-extend` is a port of the classic extend() method from jQuery. It behaves as you expect. It is simple, tried and true.\n\n## Installation\n\nThis package is available on [npm][npm-url] as: `extend`\n\n``` sh\nnpm install extend\n```\n\n## Usage\n\n**Syntax:** extend **(** [`deep`], `target`, `object1`, [`objectN`] **)**\n\n*Extend one object with one or more others, returning the modified object.*\n\nKeep in mind that the target object will be modified, and will be returned from extend().\n\nIf a boolean true is specified as the first argument, extend performs a deep copy, recursively copying any objects it finds. Otherwise, the copy will share structure with the original object(s).\nUndefined properties are not copied. However, properties inherited from the object's prototype will be copied over.\nWarning: passing `false` as the first argument is not supported.\n\n### Arguments\n\n* `deep` *Boolean* (optional)\nIf set, the merge becomes recursive (i.e. deep copy).\n* `target`\t*Object*\nThe object to extend.\n* `object1`\t*Object*\nThe object that will be merged into the first.\n* `objectN` *Object* (Optional)\nMore objects to merge into the first.\n\n## License\n\n`node-extend` is licensed under the [MIT License][mit-license-url].\n\n## Acknowledgements\n\nAll credit to the jQuery authors for perfecting this amazing utility.\n\nPorted to Node.js by [Stefan Thomas][github-justmoon] with contributions by [Jonathan Buchanan][github-insin] and [Jordan Harband][github-ljharb].\n\n[travis-svg]: https://travis-ci.org/justmoon/node-extend.svg\n[travis-url]: https://travis-ci.org/justmoon/node-extend\n[npm-url]: https://npmjs.org/package/extend\n[mit-license-url]: http://opensource.org/licenses/MIT\n[github-justmoon]: https://github.com/justmoon\n[github-insin]: https://github.com/insin\n[github-ljharb]: https://github.com/ljharb\n[npm-version-png]: http://vb.teelaun.ch/justmoon/node-extend.svg\n[deps-svg]: https://david-dm.org/justmoon/node-extend.svg\n[deps-url]: https://david-dm.org/justmoon/node-extend\n[dev-deps-svg]: https://david-dm.org/justmoon/node-extend/dev-status.svg\n[dev-deps-url]: https://david-dm.org/justmoon/node-extend#info=devDependencies\n\n",
|
||||
"readmeFilename": "README.md",
|
||||
"bugs": {
|
||||
"url": "https://github.com/justmoon/node-extend/issues"
|
||||
},
|
||||
"_id": "extend@2.0.1",
|
||||
"_from": "extend@^2.0.1"
|
||||
}
|
||||
4
server/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/.npmignore
generated
vendored
Normal file
4
server/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/.npmignore
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
test
|
||||
.travis.yml
|
||||
.jshintrc
|
||||
Gruntfile.js
|
||||
22
server/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/LICENSE-MIT
generated
vendored
Normal file
22
server/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/LICENSE-MIT
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
Copyright (c) 2013 "Cowboy" Ben Alman
|
||||
|
||||
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.
|
||||
47
server/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/README.md
generated
vendored
Normal file
47
server/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/README.md
generated
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
# findup-sync [](http://travis-ci.org/cowboy/node-findup-sync)
|
||||
|
||||
Find the first file matching a given pattern in the current directory or the nearest ancestor directory.
|
||||
|
||||
## Getting Started
|
||||
Install the module with: `npm install findup-sync`
|
||||
|
||||
```js
|
||||
var findup = require('findup-sync');
|
||||
|
||||
// Start looking in the CWD.
|
||||
var filepath1 = findup('{a,b}*.txt');
|
||||
|
||||
// Start looking somewhere else, and ignore case (probably a good idea).
|
||||
var filepath2 = findup('{a,b}*.txt', {cwd: '/some/path', nocase: true});
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```js
|
||||
findup(patternOrPatterns [, minimatchOptions])
|
||||
```
|
||||
|
||||
### patternOrPatterns
|
||||
Type: `String` or `Array`
|
||||
Default: none
|
||||
|
||||
One or more wildcard glob patterns. Or just filenames.
|
||||
|
||||
### minimatchOptions
|
||||
Type: `Object`
|
||||
Default: `{}`
|
||||
|
||||
Options to be passed to [minimatch](https://github.com/isaacs/minimatch).
|
||||
|
||||
Note that if you want to start in a different directory than the current working directory, specify a `cwd` property here.
|
||||
|
||||
## Contributing
|
||||
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).
|
||||
|
||||
## Release History
|
||||
2014-12-17 - v0.2.1 - updated to glob 4.3.
|
||||
2014-12-16 - v0.2.0 - Removed lodash, updated to glob 4.x.
|
||||
2014-03-14 - v0.1.3 - Updated dependencies.
|
||||
2013-03-08 - v0.1.2 - Updated dependencies. Fixed a Node 0.9.x bug. Updated unit tests to work cross-platform.
|
||||
2012-11-15 - v0.1.1 - Now works without an options object.
|
||||
2012-11-01 - v0.1.0 - Initial release.
|
||||
49
server/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/lib/findup-sync.js
generated
vendored
Normal file
49
server/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/lib/findup-sync.js
generated
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* findup-sync
|
||||
* https://github.com/cowboy/node-findup-sync
|
||||
*
|
||||
* Copyright (c) 2013 "Cowboy" Ben Alman
|
||||
* Licensed under the MIT license.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
// Nodejs libs.
|
||||
var path = require('path');
|
||||
|
||||
// External libs.
|
||||
var glob = require('glob');
|
||||
|
||||
// Search for a filename in the given directory or all parent directories.
|
||||
module.exports = function(patterns, options) {
|
||||
// Normalize patterns to an array.
|
||||
if (!Array.isArray(patterns)) { patterns = [patterns]; }
|
||||
// Create globOptions so that it can be modified without mutating the
|
||||
// original object.
|
||||
var globOptions = Object.create(options || {});
|
||||
globOptions.maxDepth = 1;
|
||||
globOptions.cwd = path.resolve(globOptions.cwd || '.');
|
||||
|
||||
var files, lastpath;
|
||||
do {
|
||||
// Search for files matching patterns.
|
||||
files = patterns.map(function(pattern) {
|
||||
return glob.sync(pattern, globOptions);
|
||||
}).reduce(function(a, b) {
|
||||
return a.concat(b);
|
||||
}).filter(function(entry, index, arr) {
|
||||
return index === arr.indexOf(entry);
|
||||
});
|
||||
// Return file if found.
|
||||
if (files.length > 0) {
|
||||
return path.resolve(path.join(globOptions.cwd, files[0]));
|
||||
}
|
||||
// Go up a directory.
|
||||
lastpath = globOptions.cwd;
|
||||
globOptions.cwd = path.resolve(globOptions.cwd, '..');
|
||||
// If parentpath is the same as basedir, we can't go any higher.
|
||||
} while (globOptions.cwd !== lastpath);
|
||||
|
||||
// No files were found!
|
||||
return null;
|
||||
};
|
||||
357
server/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/README.md
generated
vendored
Normal file
357
server/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/README.md
generated
vendored
Normal file
@@ -0,0 +1,357 @@
|
||||
[](https://travis-ci.org/isaacs/node-glob/) [](https://david-dm.org/isaacs/node-glob) [](https://david-dm.org/isaacs/node-glob#info=devDependencies) [](https://david-dm.org/isaacs/node-glob#info=optionalDependencies)
|
||||
|
||||
# Glob
|
||||
|
||||
Match files using the patterns the shell uses, like stars and stuff.
|
||||
|
||||
This is a glob implementation in JavaScript. It uses the `minimatch`
|
||||
library to do its matching.
|
||||
|
||||

|
||||
|
||||
## Usage
|
||||
|
||||
```javascript
|
||||
var glob = require("glob")
|
||||
|
||||
// options is optional
|
||||
glob("**/*.js", options, function (er, files) {
|
||||
// files is an array of filenames.
|
||||
// If the `nonull` option is set, and nothing
|
||||
// was found, then files is ["**/*.js"]
|
||||
// er is an error object or null.
|
||||
})
|
||||
```
|
||||
|
||||
## Glob Primer
|
||||
|
||||
"Globs" are the patterns you type when you do stuff like `ls *.js` on
|
||||
the command line, or put `build/*` in a `.gitignore` file.
|
||||
|
||||
Before parsing the path part patterns, braced sections are expanded
|
||||
into a set. Braced sections start with `{` and end with `}`, with any
|
||||
number of comma-delimited sections within. Braced sections may contain
|
||||
slash characters, so `a{/b/c,bcd}` would expand into `a/b/c` and `abcd`.
|
||||
|
||||
The following characters have special magic meaning when used in a
|
||||
path portion:
|
||||
|
||||
* `*` Matches 0 or more characters in a single path portion
|
||||
* `?` Matches 1 character
|
||||
* `[...]` Matches a range of characters, similar to a RegExp range.
|
||||
If the first character of the range is `!` or `^` then it matches
|
||||
any character not in the range.
|
||||
* `!(pattern|pattern|pattern)` Matches anything that does not match
|
||||
any of the patterns provided.
|
||||
* `?(pattern|pattern|pattern)` Matches zero or one occurrence of the
|
||||
patterns provided.
|
||||
* `+(pattern|pattern|pattern)` Matches one or more occurrences of the
|
||||
patterns provided.
|
||||
* `*(a|b|c)` Matches zero or more occurrences of the patterns provided
|
||||
* `@(pattern|pat*|pat?erN)` Matches exactly one of the patterns
|
||||
provided
|
||||
* `**` If a "globstar" is alone in a path portion, then it matches
|
||||
zero or more directories and subdirectories searching for matches.
|
||||
It does not crawl symlinked directories.
|
||||
|
||||
### Dots
|
||||
|
||||
If a file or directory path portion has a `.` as the first character,
|
||||
then it will not match any glob pattern unless that pattern's
|
||||
corresponding path part also has a `.` as its first character.
|
||||
|
||||
For example, the pattern `a/.*/c` would match the file at `a/.b/c`.
|
||||
However the pattern `a/*/c` would not, because `*` does not start with
|
||||
a dot character.
|
||||
|
||||
You can make glob treat dots as normal characters by setting
|
||||
`dot:true` in the options.
|
||||
|
||||
### Basename Matching
|
||||
|
||||
If you set `matchBase:true` in the options, and the pattern has no
|
||||
slashes in it, then it will seek for any file anywhere in the tree
|
||||
with a matching basename. For example, `*.js` would match
|
||||
`test/simple/basic.js`.
|
||||
|
||||
### Negation
|
||||
|
||||
The intent for negation would be for a pattern starting with `!` to
|
||||
match everything that *doesn't* match the supplied pattern. However,
|
||||
the implementation is weird, and for the time being, this should be
|
||||
avoided. The behavior will change or be deprecated in version 5.
|
||||
|
||||
### Empty Sets
|
||||
|
||||
If no matching files are found, then an empty array is returned. This
|
||||
differs from the shell, where the pattern itself is returned. For
|
||||
example:
|
||||
|
||||
$ echo a*s*d*f
|
||||
a*s*d*f
|
||||
|
||||
To get the bash-style behavior, set the `nonull:true` in the options.
|
||||
|
||||
### See Also:
|
||||
|
||||
* `man sh`
|
||||
* `man bash` (Search for "Pattern Matching")
|
||||
* `man 3 fnmatch`
|
||||
* `man 5 gitignore`
|
||||
* [minimatch documentation](https://github.com/isaacs/minimatch)
|
||||
|
||||
## glob.hasMagic(pattern, [options])
|
||||
|
||||
Returns `true` if there are any special characters in the pattern, and
|
||||
`false` otherwise.
|
||||
|
||||
Note that the options affect the results. If `noext:true` is set in
|
||||
the options object, then `+(a|b)` will not be considered a magic
|
||||
pattern. If the pattern has a brace expansion, like `a/{b/c,x/y}`
|
||||
then that is considered magical, unless `nobrace:true` is set in the
|
||||
options.
|
||||
|
||||
## glob(pattern, [options], cb)
|
||||
|
||||
* `pattern` {String} Pattern to be matched
|
||||
* `options` {Object}
|
||||
* `cb` {Function}
|
||||
* `err` {Error | null}
|
||||
* `matches` {Array<String>} filenames found matching the pattern
|
||||
|
||||
Perform an asynchronous glob search.
|
||||
|
||||
## glob.sync(pattern, [options])
|
||||
|
||||
* `pattern` {String} Pattern to be matched
|
||||
* `options` {Object}
|
||||
* return: {Array<String>} filenames found matching the pattern
|
||||
|
||||
Perform a synchronous glob search.
|
||||
|
||||
## Class: glob.Glob
|
||||
|
||||
Create a Glob object by instantiating the `glob.Glob` class.
|
||||
|
||||
```javascript
|
||||
var Glob = require("glob").Glob
|
||||
var mg = new Glob(pattern, options, cb)
|
||||
```
|
||||
|
||||
It's an EventEmitter, and starts walking the filesystem to find matches
|
||||
immediately.
|
||||
|
||||
### new glob.Glob(pattern, [options], [cb])
|
||||
|
||||
* `pattern` {String} pattern to search for
|
||||
* `options` {Object}
|
||||
* `cb` {Function} Called when an error occurs, or matches are found
|
||||
* `err` {Error | null}
|
||||
* `matches` {Array<String>} filenames found matching the pattern
|
||||
|
||||
Note that if the `sync` flag is set in the options, then matches will
|
||||
be immediately available on the `g.found` member.
|
||||
|
||||
### Properties
|
||||
|
||||
* `minimatch` The minimatch object that the glob uses.
|
||||
* `options` The options object passed in.
|
||||
* `aborted` Boolean which is set to true when calling `abort()`. There
|
||||
is no way at this time to continue a glob search after aborting, but
|
||||
you can re-use the statCache to avoid having to duplicate syscalls.
|
||||
* `statCache` Collection of all the stat results the glob search
|
||||
performed.
|
||||
* `cache` Convenience object. Each field has the following possible
|
||||
values:
|
||||
* `false` - Path does not exist
|
||||
* `true` - Path exists
|
||||
* `'DIR'` - Path exists, and is not a directory
|
||||
* `'FILE'` - Path exists, and is a directory
|
||||
* `[file, entries, ...]` - Path exists, is a directory, and the
|
||||
array value is the results of `fs.readdir`
|
||||
* `statCache` Cache of `fs.stat` results, to prevent statting the same
|
||||
path multiple times.
|
||||
* `symlinks` A record of which paths are symbolic links, which is
|
||||
relevant in resolving `**` patterns.
|
||||
|
||||
### Events
|
||||
|
||||
* `end` When the matching is finished, this is emitted with all the
|
||||
matches found. If the `nonull` option is set, and no match was found,
|
||||
then the `matches` list contains the original pattern. The matches
|
||||
are sorted, unless the `nosort` flag is set.
|
||||
* `match` Every time a match is found, this is emitted with the matched.
|
||||
* `error` Emitted when an unexpected error is encountered, or whenever
|
||||
any fs error occurs if `options.strict` is set.
|
||||
* `abort` When `abort()` is called, this event is raised.
|
||||
|
||||
### Methods
|
||||
|
||||
* `pause` Temporarily stop the search
|
||||
* `resume` Resume the search
|
||||
* `abort` Stop the search forever
|
||||
|
||||
### Options
|
||||
|
||||
All the options that can be passed to Minimatch can also be passed to
|
||||
Glob to change pattern matching behavior. Also, some have been added,
|
||||
or have glob-specific ramifications.
|
||||
|
||||
All options are false by default, unless otherwise noted.
|
||||
|
||||
All options are added to the Glob object, as well.
|
||||
|
||||
If you are running many `glob` operations, you can pass a Glob object
|
||||
as the `options` argument to a subsequent operation to shortcut some
|
||||
`stat` and `readdir` calls. At the very least, you may pass in shared
|
||||
`symlinks`, `statCache`, and `cache` options, so that parallel glob
|
||||
operations will be sped up by sharing information about the
|
||||
filesystem.
|
||||
|
||||
* `cwd` The current working directory in which to search. Defaults
|
||||
to `process.cwd()`.
|
||||
* `root` The place where patterns starting with `/` will be mounted
|
||||
onto. Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix
|
||||
systems, and `C:\` or some such on Windows.)
|
||||
* `dot` Include `.dot` files in normal matches and `globstar` matches.
|
||||
Note that an explicit dot in a portion of the pattern will always
|
||||
match dot files.
|
||||
* `nomount` By default, a pattern starting with a forward-slash will be
|
||||
"mounted" onto the root setting, so that a valid filesystem path is
|
||||
returned. Set this flag to disable that behavior.
|
||||
* `mark` Add a `/` character to directory matches. Note that this
|
||||
requires additional stat calls.
|
||||
* `nosort` Don't sort the results.
|
||||
* `stat` Set to true to stat *all* results. This reduces performance
|
||||
somewhat, and is completely unnecessary, unless `readdir` is presumed
|
||||
to be an untrustworthy indicator of file existence.
|
||||
* `silent` When an unusual error is encountered when attempting to
|
||||
read a directory, a warning will be printed to stderr. Set the
|
||||
`silent` option to true to suppress these warnings.
|
||||
* `strict` When an unusual error is encountered when attempting to
|
||||
read a directory, the process will just continue on in search of
|
||||
other matches. Set the `strict` option to raise an error in these
|
||||
cases.
|
||||
* `cache` See `cache` property above. Pass in a previously generated
|
||||
cache object to save some fs calls.
|
||||
* `statCache` A cache of results of filesystem information, to prevent
|
||||
unnecessary stat calls. While it should not normally be necessary
|
||||
to set this, you may pass the statCache from one glob() call to the
|
||||
options object of another, if you know that the filesystem will not
|
||||
change between calls. (See "Race Conditions" below.)
|
||||
* `symlinks` A cache of known symbolic links. You may pass in a
|
||||
previously generated `symlinks` object to save `lstat` calls when
|
||||
resolving `**` matches.
|
||||
* `sync` Perform a synchronous glob search.
|
||||
* `nounique` In some cases, brace-expanded patterns can result in the
|
||||
same file showing up multiple times in the result set. By default,
|
||||
this implementation prevents duplicates in the result set. Set this
|
||||
flag to disable that behavior.
|
||||
* `nonull` Set to never return an empty set, instead returning a set
|
||||
containing the pattern itself. This is the default in glob(3).
|
||||
* `debug` Set to enable debug logging in minimatch and glob.
|
||||
* `nobrace` Do not expand `{a,b}` and `{1..3}` brace sets.
|
||||
* `noglobstar` Do not match `**` against multiple filenames. (Ie,
|
||||
treat it as a normal `*` instead.)
|
||||
* `noext` Do not match `+(a|b)` "extglob" patterns.
|
||||
* `nocase` Perform a case-insensitive match. Note: on
|
||||
case-insensitive filesystems, non-magic patterns will match by
|
||||
default, since `stat` and `readdir` will not raise errors.
|
||||
* `matchBase` Perform a basename-only match if the pattern does not
|
||||
contain any slash characters. That is, `*.js` would be treated as
|
||||
equivalent to `**/*.js`, matching all js files in all directories.
|
||||
* `nonegate` Suppress `negate` behavior. (See below.)
|
||||
* `nocomment` Suppress `comment` behavior. (See below.)
|
||||
* `nonull` Return the pattern when no matches are found.
|
||||
* `nodir` Do not match directories, only files.
|
||||
|
||||
## Comparisons to other fnmatch/glob implementations
|
||||
|
||||
While strict compliance with the existing standards is a worthwhile
|
||||
goal, some discrepancies exist between node-glob and other
|
||||
implementations, and are intentional.
|
||||
|
||||
If the pattern starts with a `!` character, then it is negated. Set the
|
||||
`nonegate` flag to suppress this behavior, and treat leading `!`
|
||||
characters normally. This is perhaps relevant if you wish to start the
|
||||
pattern with a negative extglob pattern like `!(a|B)`. Multiple `!`
|
||||
characters at the start of a pattern will negate the pattern multiple
|
||||
times.
|
||||
|
||||
If a pattern starts with `#`, then it is treated as a comment, and
|
||||
will not match anything. Use `\#` to match a literal `#` at the
|
||||
start of a line, or set the `nocomment` flag to suppress this behavior.
|
||||
|
||||
The double-star character `**` is supported by default, unless the
|
||||
`noglobstar` flag is set. This is supported in the manner of bsdglob
|
||||
and bash 4.3, where `**` only has special significance if it is the only
|
||||
thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but
|
||||
`a/**b` will not.
|
||||
|
||||
Note that symlinked directories are not crawled as part of a `**`,
|
||||
though their contents may match against subsequent portions of the
|
||||
pattern. This prevents infinite loops and duplicates and the like.
|
||||
|
||||
If an escaped pattern has no matches, and the `nonull` flag is set,
|
||||
then glob returns the pattern as-provided, rather than
|
||||
interpreting the character escapes. For example,
|
||||
`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than
|
||||
`"*a?"`. This is akin to setting the `nullglob` option in bash, except
|
||||
that it does not resolve escaped pattern characters.
|
||||
|
||||
If brace expansion is not disabled, then it is performed before any
|
||||
other interpretation of the glob pattern. Thus, a pattern like
|
||||
`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded
|
||||
**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are
|
||||
checked for validity. Since those two are valid, matching proceeds.
|
||||
|
||||
## Windows
|
||||
|
||||
**Please only use forward-slashes in glob expressions.**
|
||||
|
||||
Though windows uses either `/` or `\` as its path separator, only `/`
|
||||
characters are used by this glob implementation. You must use
|
||||
forward-slashes **only** in glob expressions. Back-slashes will always
|
||||
be interpreted as escape characters, not path separators.
|
||||
|
||||
Results from absolute patterns such as `/foo/*` are mounted onto the
|
||||
root setting using `path.join`. On windows, this will by default result
|
||||
in `/foo/*` matching `C:\foo\bar.txt`.
|
||||
|
||||
## Race Conditions
|
||||
|
||||
Glob searching, by its very nature, is susceptible to race conditions,
|
||||
since it relies on directory walking and such.
|
||||
|
||||
As a result, it is possible that a file that exists when glob looks for
|
||||
it may have been deleted or modified by the time it returns the result.
|
||||
|
||||
As part of its internal implementation, this program caches all stat
|
||||
and readdir calls that it makes, in order to cut down on system
|
||||
overhead. However, this also makes it even more susceptible to races,
|
||||
especially if the cache or statCache objects are reused between glob
|
||||
calls.
|
||||
|
||||
Users are thus advised not to use a glob result as a guarantee of
|
||||
filesystem state in the face of rapid changes. For the vast majority
|
||||
of operations, this is never a problem.
|
||||
|
||||
## Contributing
|
||||
|
||||
Any change to behavior (including bugfixes) must come with a test.
|
||||
|
||||
Patches that fail tests or reduce performance will be rejected.
|
||||
|
||||
```
|
||||
# to run tests
|
||||
npm test
|
||||
|
||||
# to re-generate test fixtures
|
||||
npm run test-regen
|
||||
|
||||
# to benchmark against bash/zsh
|
||||
npm run bench
|
||||
|
||||
# to profile javascript
|
||||
npm run prof
|
||||
```
|
||||
177
server/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/common.js
generated
vendored
Normal file
177
server/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/common.js
generated
vendored
Normal file
@@ -0,0 +1,177 @@
|
||||
exports.alphasort = alphasort
|
||||
exports.alphasorti = alphasorti
|
||||
exports.isAbsolute = process.platform === "win32" ? absWin : absUnix
|
||||
exports.setopts = setopts
|
||||
exports.ownProp = ownProp
|
||||
exports.makeAbs = makeAbs
|
||||
exports.finish = finish
|
||||
exports.mark = mark
|
||||
|
||||
function ownProp (obj, field) {
|
||||
return Object.prototype.hasOwnProperty.call(obj, field)
|
||||
}
|
||||
|
||||
var path = require("path")
|
||||
var minimatch = require("minimatch")
|
||||
var Minimatch = minimatch.Minimatch
|
||||
|
||||
function absWin (p) {
|
||||
if (absUnix(p)) return true
|
||||
// pull off the device/UNC bit from a windows path.
|
||||
// from node's lib/path.js
|
||||
var splitDeviceRe =
|
||||
/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/
|
||||
var result = splitDeviceRe.exec(p)
|
||||
var device = result[1] || ''
|
||||
var isUnc = device && device.charAt(1) !== ':'
|
||||
var isAbsolute = !!result[2] || isUnc // UNC paths are always absolute
|
||||
|
||||
return isAbsolute
|
||||
}
|
||||
|
||||
function absUnix (p) {
|
||||
return p.charAt(0) === "/" || p === ""
|
||||
}
|
||||
|
||||
function alphasorti (a, b) {
|
||||
return a.toLowerCase().localeCompare(b.toLowerCase())
|
||||
}
|
||||
|
||||
function alphasort (a, b) {
|
||||
return a.localeCompare(b)
|
||||
}
|
||||
|
||||
|
||||
function setopts (self, pattern, options) {
|
||||
if (!options)
|
||||
options = {}
|
||||
|
||||
// base-matching: just use globstar for that.
|
||||
if (options.matchBase && -1 === pattern.indexOf("/")) {
|
||||
if (options.noglobstar) {
|
||||
throw new Error("base matching requires globstar")
|
||||
}
|
||||
pattern = "**/" + pattern
|
||||
}
|
||||
|
||||
self.pattern = pattern
|
||||
self.strict = options.strict !== false
|
||||
self.dot = !!options.dot
|
||||
self.mark = !!options.mark
|
||||
self.nodir = !!options.nodir
|
||||
if (self.nodir)
|
||||
self.mark = true
|
||||
self.sync = !!options.sync
|
||||
self.nounique = !!options.nounique
|
||||
self.nonull = !!options.nonull
|
||||
self.nosort = !!options.nosort
|
||||
self.nocase = !!options.nocase
|
||||
self.stat = !!options.stat
|
||||
self.noprocess = !!options.noprocess
|
||||
|
||||
self.maxLength = options.maxLength || Infinity
|
||||
self.cache = options.cache || Object.create(null)
|
||||
self.statCache = options.statCache || Object.create(null)
|
||||
self.symlinks = options.symlinks || Object.create(null)
|
||||
|
||||
self.changedCwd = false
|
||||
var cwd = process.cwd()
|
||||
if (!ownProp(options, "cwd"))
|
||||
self.cwd = cwd
|
||||
else {
|
||||
self.cwd = options.cwd
|
||||
self.changedCwd = path.resolve(options.cwd) !== cwd
|
||||
}
|
||||
|
||||
self.root = options.root || path.resolve(self.cwd, "/")
|
||||
self.root = path.resolve(self.root)
|
||||
if (process.platform === "win32")
|
||||
self.root = self.root.replace(/\\/g, "/")
|
||||
|
||||
self.nomount = !!options.nomount
|
||||
|
||||
self.minimatch = new Minimatch(pattern, options)
|
||||
self.options = self.minimatch.options
|
||||
}
|
||||
|
||||
function finish (self) {
|
||||
var nou = self.nounique
|
||||
var all = nou ? [] : Object.create(null)
|
||||
|
||||
for (var i = 0, l = self.matches.length; i < l; i ++) {
|
||||
var matches = self.matches[i]
|
||||
if (!matches) {
|
||||
if (self.nonull) {
|
||||
// do like the shell, and spit out the literal glob
|
||||
var literal = self.minimatch.globSet[i]
|
||||
if (nou)
|
||||
all.push(literal)
|
||||
else
|
||||
all[literal] = true
|
||||
}
|
||||
} else {
|
||||
// had matches
|
||||
var m = Object.keys(matches)
|
||||
if (nou)
|
||||
all.push.apply(all, m)
|
||||
else
|
||||
m.forEach(function (m) {
|
||||
all[m] = true
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if (!nou)
|
||||
all = Object.keys(all)
|
||||
|
||||
if (!self.nosort)
|
||||
all = all.sort(self.nocase ? alphasorti : alphasort)
|
||||
|
||||
// at *some* point we statted all of these
|
||||
if (self.mark) {
|
||||
for (var i = 0; i < all.length; i++) {
|
||||
all[i] = self._mark(all[i])
|
||||
}
|
||||
if (self.nodir) {
|
||||
all = all.filter(function (e) {
|
||||
return !(/\/$/.test(e))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
self.found = all
|
||||
}
|
||||
|
||||
function mark (self, p) {
|
||||
var c = self.cache[p]
|
||||
var m = p
|
||||
if (c) {
|
||||
var isDir = c === 'DIR' || Array.isArray(c)
|
||||
var slash = p.slice(-1) === '/'
|
||||
|
||||
if (isDir && !slash)
|
||||
m += '/'
|
||||
else if (!isDir && slash)
|
||||
m = m.slice(0, -1)
|
||||
|
||||
if (m !== p) {
|
||||
self.statCache[m] = self.statCache[p]
|
||||
self.cache[m] = self.cache[p]
|
||||
}
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
// lotta situps...
|
||||
function makeAbs (self, f) {
|
||||
var abs = f
|
||||
if (f.charAt(0) === "/") {
|
||||
abs = path.join(self.root, f)
|
||||
} else if (exports.isAbsolute(f)) {
|
||||
abs = f
|
||||
} else if (self.changedCwd) {
|
||||
abs = path.resolve(self.cwd, f)
|
||||
}
|
||||
return abs
|
||||
}
|
||||
649
server/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/glob.js
generated
vendored
Normal file
649
server/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/glob.js
generated
vendored
Normal file
@@ -0,0 +1,649 @@
|
||||
// Approach:
|
||||
//
|
||||
// 1. Get the minimatch set
|
||||
// 2. For each pattern in the set, PROCESS(pattern, false)
|
||||
// 3. Store matches per-set, then uniq them
|
||||
//
|
||||
// PROCESS(pattern, inGlobStar)
|
||||
// Get the first [n] items from pattern that are all strings
|
||||
// Join these together. This is PREFIX.
|
||||
// If there is no more remaining, then stat(PREFIX) and
|
||||
// add to matches if it succeeds. END.
|
||||
//
|
||||
// If inGlobStar and PREFIX is symlink and points to dir
|
||||
// set ENTRIES = []
|
||||
// else readdir(PREFIX) as ENTRIES
|
||||
// If fail, END
|
||||
//
|
||||
// with ENTRIES
|
||||
// If pattern[n] is GLOBSTAR
|
||||
// // handle the case where the globstar match is empty
|
||||
// // by pruning it out, and testing the resulting pattern
|
||||
// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)
|
||||
// // handle other cases.
|
||||
// for ENTRY in ENTRIES (not dotfiles)
|
||||
// // attach globstar + tail onto the entry
|
||||
// // Mark that this entry is a globstar match
|
||||
// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)
|
||||
//
|
||||
// else // not globstar
|
||||
// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)
|
||||
// Test ENTRY against pattern[n]
|
||||
// If fails, continue
|
||||
// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])
|
||||
//
|
||||
// Caveat:
|
||||
// Cache all stats and readdirs results to minimize syscall. Since all
|
||||
// we ever care about is existence and directory-ness, we can just keep
|
||||
// `true` for files, and [children,...] for directories, or `false` for
|
||||
// things that don't exist.
|
||||
|
||||
module.exports = glob
|
||||
|
||||
var fs = require('fs')
|
||||
var minimatch = require('minimatch')
|
||||
var Minimatch = minimatch.Minimatch
|
||||
var inherits = require('inherits')
|
||||
var EE = require('events').EventEmitter
|
||||
var path = require('path')
|
||||
var assert = require('assert')
|
||||
var globSync = require('./sync.js')
|
||||
var common = require('./common.js')
|
||||
var alphasort = common.alphasort
|
||||
var alphasorti = common.alphasorti
|
||||
var isAbsolute = common.isAbsolute
|
||||
var setopts = common.setopts
|
||||
var ownProp = common.ownProp
|
||||
var inflight = require('inflight')
|
||||
var util = require('util')
|
||||
|
||||
var once = require('once')
|
||||
|
||||
function glob (pattern, options, cb) {
|
||||
if (typeof options === 'function') cb = options, options = {}
|
||||
if (!options) options = {}
|
||||
|
||||
if (options.sync) {
|
||||
if (cb)
|
||||
throw new TypeError('callback provided to sync glob')
|
||||
return globSync(pattern, options)
|
||||
}
|
||||
|
||||
return new Glob(pattern, options, cb)
|
||||
}
|
||||
|
||||
glob.sync = globSync
|
||||
var GlobSync = glob.GlobSync = globSync.GlobSync
|
||||
|
||||
// old api surface
|
||||
glob.glob = glob
|
||||
|
||||
glob.hasMagic = function (pattern, options_) {
|
||||
var options = util._extend({}, options_)
|
||||
options.noprocess = true
|
||||
|
||||
var g = new Glob(pattern, options)
|
||||
var set = g.minimatch.set
|
||||
if (set.length > 1)
|
||||
return true
|
||||
|
||||
for (var j = 0; j < set[0].length; j++) {
|
||||
if (typeof set[0][j] !== 'string')
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
glob.Glob = Glob
|
||||
inherits(Glob, EE)
|
||||
function Glob (pattern, options, cb) {
|
||||
if (typeof options === 'function') {
|
||||
cb = options
|
||||
options = null
|
||||
}
|
||||
|
||||
if (options && options.sync) {
|
||||
if (cb)
|
||||
throw new TypeError('callback provided to sync glob')
|
||||
return new GlobSync(pattern, options)
|
||||
}
|
||||
|
||||
if (!(this instanceof Glob))
|
||||
return new Glob(pattern, options, cb)
|
||||
|
||||
setopts(this, pattern, options)
|
||||
|
||||
// process each pattern in the minimatch set
|
||||
var n = this.minimatch.set.length
|
||||
|
||||
// The matches are stored as {<filename>: true,...} so that
|
||||
// duplicates are automagically pruned.
|
||||
// Later, we do an Object.keys() on these.
|
||||
// Keep them as a list so we can fill in when nonull is set.
|
||||
this.matches = new Array(n)
|
||||
|
||||
if (typeof cb === 'function') {
|
||||
cb = once(cb)
|
||||
this.on('error', cb)
|
||||
this.on('end', function (matches) {
|
||||
cb(null, matches)
|
||||
})
|
||||
}
|
||||
|
||||
var self = this
|
||||
var n = this.minimatch.set.length
|
||||
this._processing = 0
|
||||
this.matches = new Array(n)
|
||||
|
||||
this._emitQueue = []
|
||||
this._processQueue = []
|
||||
this.paused = false
|
||||
|
||||
if (this.noprocess)
|
||||
return this
|
||||
|
||||
if (n === 0)
|
||||
return done()
|
||||
|
||||
for (var i = 0; i < n; i ++) {
|
||||
this._process(this.minimatch.set[i], i, false, done)
|
||||
}
|
||||
|
||||
function done () {
|
||||
--self._processing
|
||||
if (self._processing <= 0)
|
||||
self._finish()
|
||||
}
|
||||
}
|
||||
|
||||
Glob.prototype._finish = function () {
|
||||
assert(this instanceof Glob)
|
||||
if (this.aborted)
|
||||
return
|
||||
|
||||
//console.error('FINISH', this.matches)
|
||||
common.finish(this)
|
||||
this.emit('end', this.found)
|
||||
}
|
||||
|
||||
Glob.prototype._mark = function (p) {
|
||||
return common.mark(this, p)
|
||||
}
|
||||
|
||||
Glob.prototype._makeAbs = function (f) {
|
||||
return common.makeAbs(this, f)
|
||||
}
|
||||
|
||||
Glob.prototype.abort = function () {
|
||||
this.aborted = true
|
||||
this.emit('abort')
|
||||
}
|
||||
|
||||
Glob.prototype.pause = function () {
|
||||
if (!this.paused) {
|
||||
this.paused = true
|
||||
this.emit('pause')
|
||||
}
|
||||
}
|
||||
|
||||
Glob.prototype.resume = function () {
|
||||
if (this.paused) {
|
||||
this.emit('resume')
|
||||
this.paused = false
|
||||
if (this._emitQueue.length) {
|
||||
var eq = this._emitQueue.slice(0)
|
||||
this._emitQueue.length = 0
|
||||
for (var i = 0; i < eq.length; i ++) {
|
||||
var e = eq[i]
|
||||
this._emitMatch(e[0], e[1])
|
||||
}
|
||||
}
|
||||
if (this._processQueue.length) {
|
||||
var pq = this._processQueue.slice(0)
|
||||
this._processQueue.length = 0
|
||||
for (var i = 0; i < pq.length; i ++) {
|
||||
var p = pq[i]
|
||||
this._processing--
|
||||
this._process(p[0], p[1], p[2], p[3])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Glob.prototype._process = function (pattern, index, inGlobStar, cb) {
|
||||
assert(this instanceof Glob)
|
||||
assert(typeof cb === 'function')
|
||||
|
||||
if (this.aborted)
|
||||
return
|
||||
|
||||
this._processing++
|
||||
if (this.paused) {
|
||||
this._processQueue.push([pattern, index, inGlobStar, cb])
|
||||
return
|
||||
}
|
||||
|
||||
//console.error('PROCESS %d', this._processing, pattern)
|
||||
|
||||
// Get the first [n] parts of pattern that are all strings.
|
||||
var n = 0
|
||||
while (typeof pattern[n] === 'string') {
|
||||
n ++
|
||||
}
|
||||
// now n is the index of the first one that is *not* a string.
|
||||
|
||||
// see if there's anything else
|
||||
var prefix
|
||||
switch (n) {
|
||||
// if not, then this is rather simple
|
||||
case pattern.length:
|
||||
this._processSimple(pattern.join('/'), index, cb)
|
||||
return
|
||||
|
||||
case 0:
|
||||
// pattern *starts* with some non-trivial item.
|
||||
// going to readdir(cwd), but not include the prefix in matches.
|
||||
prefix = null
|
||||
break
|
||||
|
||||
default:
|
||||
// pattern has some string bits in the front.
|
||||
// whatever it starts with, whether that's 'absolute' like /foo/bar,
|
||||
// or 'relative' like '../baz'
|
||||
prefix = pattern.slice(0, n).join('/')
|
||||
break
|
||||
}
|
||||
|
||||
var remain = pattern.slice(n)
|
||||
|
||||
// get the list of entries.
|
||||
var read
|
||||
if (prefix === null)
|
||||
read = '.'
|
||||
else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {
|
||||
if (!prefix || !isAbsolute(prefix))
|
||||
prefix = '/' + prefix
|
||||
read = prefix
|
||||
} else
|
||||
read = prefix
|
||||
|
||||
var abs = this._makeAbs(read)
|
||||
|
||||
var isGlobStar = remain[0] === minimatch.GLOBSTAR
|
||||
if (isGlobStar)
|
||||
this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)
|
||||
else
|
||||
this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)
|
||||
}
|
||||
|
||||
|
||||
Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {
|
||||
var self = this
|
||||
this._readdir(abs, inGlobStar, function (er, entries) {
|
||||
return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)
|
||||
})
|
||||
}
|
||||
|
||||
Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
|
||||
|
||||
// if the abs isn't a dir, then nothing can match!
|
||||
if (!entries)
|
||||
return cb()
|
||||
|
||||
// It will only match dot entries if it starts with a dot, or if
|
||||
// dot is set. Stuff like @(.foo|.bar) isn't allowed.
|
||||
var pn = remain[0]
|
||||
var negate = !!this.minimatch.negate
|
||||
var rawGlob = pn._glob
|
||||
var dotOk = this.dot || rawGlob.charAt(0) === '.'
|
||||
|
||||
var matchedEntries = []
|
||||
for (var i = 0; i < entries.length; i++) {
|
||||
var e = entries[i]
|
||||
if (e.charAt(0) !== '.' || dotOk) {
|
||||
var m
|
||||
if (negate && !prefix) {
|
||||
m = !e.match(pn)
|
||||
} else {
|
||||
m = e.match(pn)
|
||||
}
|
||||
if (m)
|
||||
matchedEntries.push(e)
|
||||
}
|
||||
}
|
||||
|
||||
//console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)
|
||||
|
||||
var len = matchedEntries.length
|
||||
// If there are no matched entries, then nothing matches.
|
||||
if (len === 0)
|
||||
return cb()
|
||||
|
||||
// if this is the last remaining pattern bit, then no need for
|
||||
// an additional stat *unless* the user has specified mark or
|
||||
// stat explicitly. We know they exist, since readdir returned
|
||||
// them.
|
||||
|
||||
if (remain.length === 1 && !this.mark && !this.stat) {
|
||||
if (!this.matches[index])
|
||||
this.matches[index] = Object.create(null)
|
||||
|
||||
for (var i = 0; i < len; i ++) {
|
||||
var e = matchedEntries[i]
|
||||
if (prefix) {
|
||||
if (prefix !== '/')
|
||||
e = prefix + '/' + e
|
||||
else
|
||||
e = prefix + e
|
||||
}
|
||||
|
||||
if (e.charAt(0) === '/' && !this.nomount) {
|
||||
e = path.join(this.root, e)
|
||||
}
|
||||
this._emitMatch(index, e)
|
||||
}
|
||||
// This was the last one, and no stats were needed
|
||||
return cb()
|
||||
}
|
||||
|
||||
// now test all matched entries as stand-ins for that part
|
||||
// of the pattern.
|
||||
remain.shift()
|
||||
for (var i = 0; i < len; i ++) {
|
||||
var e = matchedEntries[i]
|
||||
var newPattern
|
||||
if (prefix) {
|
||||
if (prefix !== '/')
|
||||
e = prefix + '/' + e
|
||||
else
|
||||
e = prefix + e
|
||||
}
|
||||
this._process([e].concat(remain), index, inGlobStar, cb)
|
||||
}
|
||||
cb()
|
||||
}
|
||||
|
||||
Glob.prototype._emitMatch = function (index, e) {
|
||||
if (this.aborted)
|
||||
return
|
||||
|
||||
if (!this.matches[index][e]) {
|
||||
if (this.paused) {
|
||||
this._emitQueue.push([index, e])
|
||||
return
|
||||
}
|
||||
|
||||
if (this.nodir) {
|
||||
var c = this.cache[this._makeAbs(e)]
|
||||
if (c === 'DIR' || Array.isArray(c))
|
||||
return
|
||||
}
|
||||
|
||||
this.matches[index][e] = true
|
||||
if (!this.stat && !this.mark)
|
||||
return this.emit('match', e)
|
||||
|
||||
var self = this
|
||||
this._stat(this._makeAbs(e), function (er, c, st) {
|
||||
self.emit('stat', e, st)
|
||||
self.emit('match', e)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Glob.prototype._readdirInGlobStar = function (abs, cb) {
|
||||
if (this.aborted)
|
||||
return
|
||||
|
||||
var lstatkey = 'lstat\0' + abs
|
||||
var self = this
|
||||
var lstatcb = inflight(lstatkey, lstatcb_)
|
||||
|
||||
if (lstatcb)
|
||||
fs.lstat(abs, lstatcb)
|
||||
|
||||
function lstatcb_ (er, lstat) {
|
||||
if (er)
|
||||
return cb()
|
||||
|
||||
var isSym = lstat.isSymbolicLink()
|
||||
self.symlinks[abs] = isSym
|
||||
|
||||
// If it's not a symlink or a dir, then it's definitely a regular file.
|
||||
// don't bother doing a readdir in that case.
|
||||
if (!isSym && !lstat.isDirectory()) {
|
||||
self.cache[abs] = 'FILE'
|
||||
cb()
|
||||
} else
|
||||
self._readdir(abs, false, cb)
|
||||
}
|
||||
}
|
||||
|
||||
Glob.prototype._readdir = function (abs, inGlobStar, cb) {
|
||||
if (this.aborted)
|
||||
return
|
||||
|
||||
cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb)
|
||||
if (!cb)
|
||||
return
|
||||
|
||||
//console.error('RD %j %j', +inGlobStar, abs)
|
||||
if (inGlobStar && !ownProp(this.symlinks, abs))
|
||||
return this._readdirInGlobStar(abs, cb)
|
||||
|
||||
if (ownProp(this.cache, abs)) {
|
||||
var c = this.cache[abs]
|
||||
if (!c || c === 'FILE')
|
||||
return cb()
|
||||
|
||||
if (Array.isArray(c))
|
||||
return cb(null, c)
|
||||
}
|
||||
|
||||
var self = this
|
||||
fs.readdir(abs, readdirCb(this, abs, cb))
|
||||
}
|
||||
|
||||
function readdirCb (self, abs, cb) {
|
||||
return function (er, entries) {
|
||||
if (er)
|
||||
self._readdirError(abs, er, cb)
|
||||
else
|
||||
self._readdirEntries(abs, entries, cb)
|
||||
}
|
||||
}
|
||||
|
||||
Glob.prototype._readdirEntries = function (abs, entries, cb) {
|
||||
if (this.aborted)
|
||||
return
|
||||
|
||||
// if we haven't asked to stat everything, then just
|
||||
// assume that everything in there exists, so we can avoid
|
||||
// having to stat it a second time.
|
||||
if (!this.mark && !this.stat) {
|
||||
for (var i = 0; i < entries.length; i ++) {
|
||||
var e = entries[i]
|
||||
if (abs === '/')
|
||||
e = abs + e
|
||||
else
|
||||
e = abs + '/' + e
|
||||
this.cache[e] = true
|
||||
}
|
||||
}
|
||||
|
||||
this.cache[abs] = entries
|
||||
return cb(null, entries)
|
||||
}
|
||||
|
||||
Glob.prototype._readdirError = function (f, er, cb) {
|
||||
if (this.aborted)
|
||||
return
|
||||
|
||||
// handle errors, and cache the information
|
||||
switch (er.code) {
|
||||
case 'ENOTDIR': // totally normal. means it *does* exist.
|
||||
this.cache[f] = 'FILE'
|
||||
break
|
||||
|
||||
case 'ENOENT': // not terribly unusual
|
||||
case 'ELOOP':
|
||||
case 'ENAMETOOLONG':
|
||||
case 'UNKNOWN':
|
||||
this.cache[f] = false
|
||||
break
|
||||
|
||||
default: // some unusual error. Treat as failure.
|
||||
this.cache[f] = false
|
||||
if (this.strict) return this.emit('error', er)
|
||||
if (!this.silent) console.error('glob error', er)
|
||||
break
|
||||
}
|
||||
return cb()
|
||||
}
|
||||
|
||||
Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {
|
||||
var self = this
|
||||
this._readdir(abs, inGlobStar, function (er, entries) {
|
||||
self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
|
||||
//console.error('pgs2', prefix, remain[0], entries)
|
||||
|
||||
// no entries means not a dir, so it can never have matches
|
||||
// foo.txt/** doesn't match foo.txt
|
||||
if (!entries)
|
||||
return cb()
|
||||
|
||||
// test without the globstar, and with every child both below
|
||||
// and replacing the globstar.
|
||||
var remainWithoutGlobStar = remain.slice(1)
|
||||
var gspref = prefix ? [ prefix ] : []
|
||||
var noGlobStar = gspref.concat(remainWithoutGlobStar)
|
||||
|
||||
// the noGlobStar pattern exits the inGlobStar state
|
||||
this._process(noGlobStar, index, false, cb)
|
||||
|
||||
var isSym = this.symlinks[abs]
|
||||
var len = entries.length
|
||||
|
||||
// If it's a symlink, and we're in a globstar, then stop
|
||||
if (isSym && inGlobStar)
|
||||
return cb()
|
||||
|
||||
for (var i = 0; i < len; i++) {
|
||||
var e = entries[i]
|
||||
if (e.charAt(0) === '.' && !this.dot)
|
||||
continue
|
||||
|
||||
// these two cases enter the inGlobStar state
|
||||
var instead = gspref.concat(entries[i], remainWithoutGlobStar)
|
||||
this._process(instead, index, true, cb)
|
||||
|
||||
var below = gspref.concat(entries[i], remain)
|
||||
this._process(below, index, true, cb)
|
||||
}
|
||||
|
||||
cb()
|
||||
}
|
||||
|
||||
Glob.prototype._processSimple = function (prefix, index, cb) {
|
||||
// XXX review this. Shouldn't it be doing the mounting etc
|
||||
// before doing stat? kinda weird?
|
||||
var self = this
|
||||
this._stat(prefix, function (er, exists) {
|
||||
self._processSimple2(prefix, index, er, exists, cb)
|
||||
})
|
||||
}
|
||||
Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {
|
||||
|
||||
//console.error('ps2', prefix, exists)
|
||||
|
||||
if (!this.matches[index])
|
||||
this.matches[index] = Object.create(null)
|
||||
|
||||
// If it doesn't exist, then just mark the lack of results
|
||||
if (!exists)
|
||||
return cb()
|
||||
|
||||
if (prefix && isAbsolute(prefix) && !this.nomount) {
|
||||
var trail = /[\/\\]$/.test(prefix)
|
||||
if (prefix.charAt(0) === '/') {
|
||||
prefix = path.join(this.root, prefix)
|
||||
} else {
|
||||
prefix = path.resolve(this.root, prefix)
|
||||
if (trail)
|
||||
prefix += '/'
|
||||
}
|
||||
}
|
||||
|
||||
if (process.platform === 'win32')
|
||||
prefix = prefix.replace(/\\/g, '/')
|
||||
|
||||
// Mark this as a match
|
||||
this._emitMatch(index, prefix)
|
||||
cb()
|
||||
}
|
||||
|
||||
// Returns either 'DIR', 'FILE', or false
|
||||
Glob.prototype._stat = function (f, cb) {
|
||||
var abs = f
|
||||
if (f.charAt(0) === '/')
|
||||
abs = path.join(this.root, f)
|
||||
else if (this.changedCwd)
|
||||
abs = path.resolve(this.cwd, f)
|
||||
|
||||
|
||||
if (f.length > this.maxLength)
|
||||
return cb()
|
||||
|
||||
if (!this.stat && ownProp(this.cache, f)) {
|
||||
var c = this.cache[f]
|
||||
|
||||
if (Array.isArray(c))
|
||||
c = 'DIR'
|
||||
|
||||
// It exists, but not how we need it
|
||||
if (abs.slice(-1) === '/' && c !== 'DIR')
|
||||
return cb()
|
||||
|
||||
return cb(null, c)
|
||||
}
|
||||
|
||||
var exists
|
||||
var stat = this.statCache[abs]
|
||||
if (stat !== undefined) {
|
||||
if (stat === false)
|
||||
return cb(null, stat)
|
||||
else
|
||||
return cb(null, stat.isDirectory() ? 'DIR' : 'FILE', stat)
|
||||
}
|
||||
|
||||
var self = this
|
||||
var statcb = inflight('stat\0' + abs, statcb_)
|
||||
if (statcb)
|
||||
fs.stat(abs, statcb)
|
||||
|
||||
function statcb_ (er, stat) {
|
||||
self._stat2(f, abs, er, stat, cb)
|
||||
}
|
||||
}
|
||||
|
||||
Glob.prototype._stat2 = function (f, abs, er, stat, cb) {
|
||||
if (er) {
|
||||
this.statCache[abs] = false
|
||||
return cb()
|
||||
}
|
||||
|
||||
this.statCache[abs] = stat
|
||||
|
||||
if (abs.slice(-1) === '/' && !stat.isDirectory())
|
||||
return cb(null, false, stat)
|
||||
|
||||
var c = stat.isDirectory() ? 'DIR' : 'FILE'
|
||||
this.cache[f] = this.cache[f] || c
|
||||
return cb(null, c, stat)
|
||||
}
|
||||
17
server/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/.eslintrc
generated
vendored
Normal file
17
server/node_modules/gulp/node_modules/liftoff/node_modules/findup-sync/node_modules/glob/node_modules/inflight/.eslintrc
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"env" : {
|
||||
"node" : true
|
||||
},
|
||||
"rules" : {
|
||||
"semi": [2, "never"],
|
||||
"strict": 0,
|
||||
"quotes": [1, "single", "avoid-escape"],
|
||||
"no-use-before-define": 0,
|
||||
"curly": 0,
|
||||
"no-underscore-dangle": 0,
|
||||
"no-lonely-if": 1,
|
||||
"no-unused-vars": [2, {"vars" : "all", "args" : "after-used"}],
|
||||
"no-mixed-requires": 0,
|
||||
"space-infix-ops": 0
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user