This commit is contained in:
tatianamac
2019-11-26 14:50:43 -08:00
parent 8a55660ed0
commit 6d5445ecc5
13894 changed files with 2233957 additions and 0 deletions

163
node_modules/tfunk/README.md generated vendored Normal file
View File

@ -0,0 +1,163 @@
##tfunk [![Build Status](https://travis-ci.org/shakyShane/tfunk.svg)](https://travis-ci.org/shakyShane/tfunk)
Multi-colour console output from [Chalk](https://github.com/sindresorhus/chalk#styles) with added awesome.
by [@shakyshane](https://github.com/shakyShane) & [@AydinHassan](https://github.com/AydinHassan)
![tfunk](http://f.cl.ly/items/15102k441h1U1Z1l253J/Screen%20Shot%202014-09-10%20at%2022.05.15.png)
##Install
```bash
npm install tfunk
```
##Usage
**Syntax rules:**
`{` `<color>` `:` `YOUR STRING` `}`
**Example**
`{blue:This is a blue line}`
**`}` is optional**
`{blue:This is a blue line` <- Perfectly valid
##Usage
```js
var tFunk = require("tfunk");
console.log( tfunk("{cyan:tFunk terminal colours") )
// => tFunk terminal colours
```
Or get a custom compiler with a set prefix:
```js
var compiler = require("tfunk").Compiler({
prefix: "[{magenta:tFunk}]"
});
console.log( compiler.compile("tFunk is awesome") );
console.log( compiler.compile("don't you think?") );
// => [tFunk] tFunk is awesome
// => [tFunk] don't you think?
```
**Define your own syntax**
You can define your own methods, they receive the string section as the first parameter & have access to the compiler
through `this.compile()` keyword.
```js
var compiler = require("tfunk").Compiler({
"warn": function(string) {
return this.compile("{red:WARNING:" + string);
}
});
```
Now you can use `warn` anywhere you like.
```js
console.log( compiler.compile("{warn: Could not file your config file...") );
// => WARNING: Could not file your config file...
```
##Examples
Here are some comparisons to chalk, to help you understand how to use tFunk.
###Single Colours
```js
// chalk
console.log( chalk.red("This has a single colour") );
// tFunk
console.log( tFunk("{red:This has a single colour") );
```
###Single Colour mid string
```js
// chalk
console.log( "This has a single colour " + chalk.cyan("that begins mid-string") );
// tFunck
console.log( tFunk("This has a single colour {cyan:that begins mid-string") );
```
###Single Colour with end point
```js
// chalk
console.log( chalk.red("This has a single colour with ") + "an endpoint");
// tFunk
console.log( tFunk("{red:This has a single colour with }an endpoint") );
```
###Two Colours
```js
// chalk
console.log( chalk.green("This has ") + chalk.cyan("two colours") );
// tFunk
console.log( tFunk("{green:This has {cyan:two colours") );
```
###Nested Colours
```js
// chalk
console.log( chalk.green("This has a colour " + chalk.cyan("nested inside") + " another colour") );
//tFunk
console.log( tFunk("{green:This has a colour {cyan:nested inside} another colour") );
```
###Multiple Nested
```js
// chalk
console.log( chalk.blue("Multiple " + chalk.cyan("NESTED") + " styles in " + chalk.red("the same string") + " with an ending") );
// tFunk
console.log( tFunk("{blue:Multiple {cyan:NESTED} styles in {red:the same string} with an ending") );
```
###Multi line
```js
var multiline = require("multiline");
var string = multiline(function () {/*
{cyan:This is a multi-line coloured string
With a single {yellow:yellow} word in the center of a line
Pretty cool huh?
*/});
console.log( tFunk(string) );
```
###Escaping when you need curly braces
```js
console.log( tFunk("This has a \\{\\{mustache\\}\\}") );
```
##TODO
- [x] Colours
- [x] Nested Colours
- [x] Custom syntax
- [x] Prefixed compiler
- [x] Make the chain-able API work like this `"{white.bgRed: White text, red BG"`
- [x] Offer a way of escaping. Right now, ALL instances of `}` will be lost

172
node_modules/tfunk/index.js generated vendored Normal file
View File

@ -0,0 +1,172 @@
"use strict";
var chalk = require("chalk");
var parser = require("./lib/parser");
var objectPath = require("object-path");
/**
* Stateless compiler.
* @param {String} string
* @param {Object} [custom] - Any custom methods
* @param {Object} [opts] - Options
* @returns {String}
*/
function compile(string, custom, opts) {
opts = opts || {};
return parseAst(createAst(parser, string), custom, function (err) {
if (err) {
if (opts.logErrors) {
console.log(err.msg);
}
if (opts.failOnError) {
throw Error(err.msg);
}
}
});
}
/**
* @param parser
* @param string
* @returns {*}
*/
function createAst(parser, string) {
return parser.parse(string);
}
/**
* @param ast
* @param custom
* @param {Function} cb
*/
function parseAst(ast, custom, cb) {
var colors = [];
return ast.reduce(function (joined, item) {
var fn;
if (item.color) {
if (item.text) {
if (fn = resolveFun(item.color, custom)) {
colors.push(fn);
return joined + fn(item.text);
} else {
cb({
msg: "Method does not exist: " + item.color
});
return joined + item.text;
}
}
}
if (item.buffer) {
return colors.length
? joined + colors[colors.length-1](item.buffer)
: joined + item.buffer;
}
if (item.reset) {
colors.pop();
if (item.text) {
return colors.length
? joined + colors[colors.length-1](item.text)
: joined + item.text;
}
}
return joined;
}, "");
}
/**
* @param path
* @param custom
* @returns {*}
*/
function resolveFun(path, custom) {
var fn;
if (fn = getFun(custom, path)) {
return fn.bind({compile:compile});
}
return getFun(chalk, path);
}
/**
* Get a function from an object
*/
function getFun(obj, path) {
if (!obj) {
return false;
}
return objectPath.get(obj, path);
}
/**
* @param {Object} [opts]
* @param {Object} custom
* @returns {Compiler}
*/
function Compiler(custom, opts) {
opts = opts || {};
custom = custom || {};
this.prefix = "";
if (typeof opts.prefix === "string") {
this.prefix = compile(opts.prefix, custom, opts);
}
if (typeof opts.prefix === "function") {
this.prefix = opts.prefix;
}
this.compile = function (string, noPrefix) {
var out = "";
if (!noPrefix) {
if (typeof this.prefix === "function") {
out = this.prefix.apply({compile: compile}, [string, opts]);
} else {
out = this.prefix;
}
}
return out + compile(string, custom, opts);
};
return this;
}
module.exports = compile;
module.exports.parse = function (string) {
return createAst(parser, string);
};
module.exports.clean = function (string) {
var ast = createAst(parser, string);
return ast.reduce(function (joined, item) {
if (item.color) {
if (item.text) {
return joined + item.text;
}
}
if (item.buffer) {
return joined + item.buffer;
}
if (item.reset) {
return joined + item.text;
}
return joined;
}, "");
};
module.exports.Compiler = Compiler;

923
node_modules/tfunk/lib/parser.js generated vendored Normal file
View File

@ -0,0 +1,923 @@
// Do not edit the parser directly. This is a generated file created using a build script and the PEG grammar.
module.exports = (function() {
/*
* Generated by PEG.js 0.8.0.
*
* http://pegjs.majda.cz/
*/
function peg$subclass(child, parent) {
function ctor() { this.constructor = child; }
ctor.prototype = parent.prototype;
child.prototype = new ctor();
}
function SyntaxError(message, expected, found, offset, line, column) {
this.message = message;
this.expected = expected;
this.found = found;
this.offset = offset;
this.line = line;
this.column = column;
this.name = "SyntaxError";
}
peg$subclass(SyntaxError, Error);
function parse(input) {
var options = arguments.length > 1 ? arguments[1] : {},
peg$FAILED = {},
peg$startRuleFunctions = { start: peg$parsestart },
peg$startRuleFunction = peg$parsestart,
peg$c0 = [],
peg$c1 = { type: "other", description: "buffer" },
peg$c2 = peg$FAILED,
peg$c3 = function(e, w) { return {"buffer": e + w.join('')} },
peg$c4 = void 0,
peg$c5 = function(c) { return c },
peg$c6 = function(b) { return {"buffer": b.join('')} },
peg$c7 = ":",
peg$c8 = { type: "literal", value: ":", description: "\":\"" },
peg$c9 = function(c) {return c},
peg$c10 = function(c, e) { return {color: c, text: e.join('')}},
peg$c11 = { type: "any", description: "any character" },
peg$c12 = function(a) {return a},
peg$c13 = "{",
peg$c14 = { type: "literal", value: "{", description: "\"{\"" },
peg$c15 = function(out) {return out},
peg$c16 = "}",
peg$c17 = { type: "literal", value: "}", description: "\"}\"" },
peg$c18 = "\\",
peg$c19 = { type: "literal", value: "\\", description: "\"\\\\\"" },
peg$c20 = /^[a-zA-Z.]/,
peg$c21 = { type: "class", value: "[a-zA-Z.]", description: "[a-zA-Z.]" },
peg$c22 = function(c) { return c.join('') },
peg$c23 = null,
peg$c24 = function(r, e) {return {reset: true, text: e ? e.join('') : '' }},
peg$c25 = function(after) {return after},
peg$c26 = "\n",
peg$c27 = { type: "literal", value: "\n", description: "\"\\n\"" },
peg$c28 = "\r\n",
peg$c29 = { type: "literal", value: "\r\n", description: "\"\\r\\n\"" },
peg$c30 = "\r",
peg$c31 = { type: "literal", value: "\r", description: "\"\\r\"" },
peg$c32 = "\u2028",
peg$c33 = { type: "literal", value: "\u2028", description: "\"\\u2028\"" },
peg$c34 = "\u2029",
peg$c35 = { type: "literal", value: "\u2029", description: "\"\\u2029\"" },
peg$c36 = /^[\t\x0B\f \xA0\uFEFF]/,
peg$c37 = { type: "class", value: "[\\t\\x0B\\f \\xA0\\uFEFF]", description: "[\\t\\x0B\\f \\xA0\\uFEFF]" },
peg$currPos = 0,
peg$reportedPos = 0,
peg$cachedPos = 0,
peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },
peg$maxFailPos = 0,
peg$maxFailExpected = [],
peg$silentFails = 0,
peg$result;
if ("startRule" in options) {
if (!(options.startRule in peg$startRuleFunctions)) {
throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");
}
peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
}
function text() {
return input.substring(peg$reportedPos, peg$currPos);
}
function offset() {
return peg$reportedPos;
}
function line() {
return peg$computePosDetails(peg$reportedPos).line;
}
function column() {
return peg$computePosDetails(peg$reportedPos).column;
}
function expected(description) {
throw peg$buildException(
null,
[{ type: "other", description: description }],
peg$reportedPos
);
}
function error(message) {
throw peg$buildException(message, null, peg$reportedPos);
}
function peg$computePosDetails(pos) {
function advance(details, startPos, endPos) {
var p, ch;
for (p = startPos; p < endPos; p++) {
ch = input.charAt(p);
if (ch === "\n") {
if (!details.seenCR) { details.line++; }
details.column = 1;
details.seenCR = false;
} else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") {
details.line++;
details.column = 1;
details.seenCR = true;
} else {
details.column++;
details.seenCR = false;
}
}
}
if (peg$cachedPos !== pos) {
if (peg$cachedPos > pos) {
peg$cachedPos = 0;
peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };
}
advance(peg$cachedPosDetails, peg$cachedPos, pos);
peg$cachedPos = pos;
}
return peg$cachedPosDetails;
}
function peg$fail(expected) {
if (peg$currPos < peg$maxFailPos) { return; }
if (peg$currPos > peg$maxFailPos) {
peg$maxFailPos = peg$currPos;
peg$maxFailExpected = [];
}
peg$maxFailExpected.push(expected);
}
function peg$buildException(message, expected, pos) {
function cleanupExpected(expected) {
var i = 1;
expected.sort(function(a, b) {
if (a.description < b.description) {
return -1;
} else if (a.description > b.description) {
return 1;
} else {
return 0;
}
});
while (i < expected.length) {
if (expected[i - 1] === expected[i]) {
expected.splice(i, 1);
} else {
i++;
}
}
}
function buildMessage(expected, found) {
function stringEscape(s) {
function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }
return s
.replace(/\\/g, '\\\\')
.replace(/"/g, '\\"')
.replace(/\x08/g, '\\b')
.replace(/\t/g, '\\t')
.replace(/\n/g, '\\n')
.replace(/\f/g, '\\f')
.replace(/\r/g, '\\r')
.replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(ch) { return '\\x0' + hex(ch); })
.replace(/[\x10-\x1F\x80-\xFF]/g, function(ch) { return '\\x' + hex(ch); })
.replace(/[\u0180-\u0FFF]/g, function(ch) { return '\\u0' + hex(ch); })
.replace(/[\u1080-\uFFFF]/g, function(ch) { return '\\u' + hex(ch); });
}
var expectedDescs = new Array(expected.length),
expectedDesc, foundDesc, i;
for (i = 0; i < expected.length; i++) {
expectedDescs[i] = expected[i].description;
}
expectedDesc = expected.length > 1
? expectedDescs.slice(0, -1).join(", ")
+ " or "
+ expectedDescs[expected.length - 1]
: expectedDescs[0];
foundDesc = found ? "\"" + stringEscape(found) + "\"" : "end of input";
return "Expected " + expectedDesc + " but " + foundDesc + " found.";
}
var posDetails = peg$computePosDetails(pos),
found = pos < input.length ? input.charAt(pos) : null;
if (expected !== null) {
cleanupExpected(expected);
}
return new SyntaxError(
message !== null ? message : buildMessage(expected, found),
expected,
found,
pos,
posDetails.line,
posDetails.column
);
}
function peg$parsestart() {
var s0;
s0 = peg$parsebody();
return s0;
}
function peg$parsebody() {
var s0, s1;
s0 = [];
s1 = peg$parseitem();
while (s1 !== peg$FAILED) {
s0.push(s1);
s1 = peg$parseitem();
}
return s0;
}
function peg$parseitem() {
var s0;
s0 = peg$parsetag();
if (s0 === peg$FAILED) {
s0 = peg$parsebuffer();
if (s0 === peg$FAILED) {
s0 = peg$parsereset();
}
}
return s0;
}
function peg$parsebuffer() {
var s0, s1, s2, s3, s4, s5;
peg$silentFails++;
s0 = peg$currPos;
s1 = peg$parseeol();
if (s1 !== peg$FAILED) {
s2 = [];
s3 = peg$parsews();
while (s3 !== peg$FAILED) {
s2.push(s3);
s3 = peg$parsews();
}
if (s2 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c3(s1, s2);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c2;
}
} else {
peg$currPos = s0;
s0 = peg$c2;
}
if (s0 === peg$FAILED) {
s0 = peg$currPos;
s1 = [];
s2 = peg$currPos;
s3 = peg$currPos;
peg$silentFails++;
s4 = peg$parsetag();
peg$silentFails--;
if (s4 === peg$FAILED) {
s3 = peg$c4;
} else {
peg$currPos = s3;
s3 = peg$c2;
}
if (s3 !== peg$FAILED) {
s4 = peg$currPos;
peg$silentFails++;
s5 = peg$parsereset();
peg$silentFails--;
if (s5 === peg$FAILED) {
s4 = peg$c4;
} else {
peg$currPos = s4;
s4 = peg$c2;
}
if (s4 !== peg$FAILED) {
s5 = peg$parseany();
if (s5 !== peg$FAILED) {
peg$reportedPos = s2;
s3 = peg$c5(s5);
s2 = s3;
} else {
peg$currPos = s2;
s2 = peg$c2;
}
} else {
peg$currPos = s2;
s2 = peg$c2;
}
} else {
peg$currPos = s2;
s2 = peg$c2;
}
if (s2 !== peg$FAILED) {
while (s2 !== peg$FAILED) {
s1.push(s2);
s2 = peg$currPos;
s3 = peg$currPos;
peg$silentFails++;
s4 = peg$parsetag();
peg$silentFails--;
if (s4 === peg$FAILED) {
s3 = peg$c4;
} else {
peg$currPos = s3;
s3 = peg$c2;
}
if (s3 !== peg$FAILED) {
s4 = peg$currPos;
peg$silentFails++;
s5 = peg$parsereset();
peg$silentFails--;
if (s5 === peg$FAILED) {
s4 = peg$c4;
} else {
peg$currPos = s4;
s4 = peg$c2;
}
if (s4 !== peg$FAILED) {
s5 = peg$parseany();
if (s5 !== peg$FAILED) {
peg$reportedPos = s2;
s3 = peg$c5(s5);
s2 = s3;
} else {
peg$currPos = s2;
s2 = peg$c2;
}
} else {
peg$currPos = s2;
s2 = peg$c2;
}
} else {
peg$currPos = s2;
s2 = peg$c2;
}
}
} else {
s1 = peg$c2;
}
if (s1 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c6(s1);
}
s0 = s1;
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c1); }
}
return s0;
}
function peg$parsetag() {
var s0, s1, s2, s3, s4, s5, s6, s7, s8;
s0 = peg$currPos;
s1 = peg$parseld();
if (s1 !== peg$FAILED) {
s2 = peg$parsecolor();
if (s2 !== peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 58) {
s3 = peg$c7;
peg$currPos++;
} else {
s3 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c8); }
}
if (s3 !== peg$FAILED) {
s4 = [];
s5 = peg$currPos;
s6 = peg$currPos;
peg$silentFails++;
s7 = peg$parseld();
peg$silentFails--;
if (s7 === peg$FAILED) {
s6 = peg$c4;
} else {
peg$currPos = s6;
s6 = peg$c2;
}
if (s6 !== peg$FAILED) {
s7 = peg$currPos;
peg$silentFails++;
s8 = peg$parserd();
peg$silentFails--;
if (s8 === peg$FAILED) {
s7 = peg$c4;
} else {
peg$currPos = s7;
s7 = peg$c2;
}
if (s7 !== peg$FAILED) {
s8 = peg$parseany();
if (s8 !== peg$FAILED) {
peg$reportedPos = s5;
s6 = peg$c9(s8);
s5 = s6;
} else {
peg$currPos = s5;
s5 = peg$c2;
}
} else {
peg$currPos = s5;
s5 = peg$c2;
}
} else {
peg$currPos = s5;
s5 = peg$c2;
}
if (s5 !== peg$FAILED) {
while (s5 !== peg$FAILED) {
s4.push(s5);
s5 = peg$currPos;
s6 = peg$currPos;
peg$silentFails++;
s7 = peg$parseld();
peg$silentFails--;
if (s7 === peg$FAILED) {
s6 = peg$c4;
} else {
peg$currPos = s6;
s6 = peg$c2;
}
if (s6 !== peg$FAILED) {
s7 = peg$currPos;
peg$silentFails++;
s8 = peg$parserd();
peg$silentFails--;
if (s8 === peg$FAILED) {
s7 = peg$c4;
} else {
peg$currPos = s7;
s7 = peg$c2;
}
if (s7 !== peg$FAILED) {
s8 = peg$parseany();
if (s8 !== peg$FAILED) {
peg$reportedPos = s5;
s6 = peg$c9(s8);
s5 = s6;
} else {
peg$currPos = s5;
s5 = peg$c2;
}
} else {
peg$currPos = s5;
s5 = peg$c2;
}
} else {
peg$currPos = s5;
s5 = peg$c2;
}
}
} else {
s4 = peg$c2;
}
if (s4 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c10(s2, s4);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c2;
}
} else {
peg$currPos = s0;
s0 = peg$c2;
}
} else {
peg$currPos = s0;
s0 = peg$c2;
}
} else {
peg$currPos = s0;
s0 = peg$c2;
}
return s0;
}
function peg$parseany() {
var s0, s1;
s0 = peg$parseesc_left();
if (s0 === peg$FAILED) {
s0 = peg$parseesc_right();
if (s0 === peg$FAILED) {
s0 = peg$currPos;
if (input.length > peg$currPos) {
s1 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c11); }
}
if (s1 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c12(s1);
}
s0 = s1;
}
}
return s0;
}
function peg$parseesc_left() {
var s0, s1, s2;
s0 = peg$currPos;
s1 = peg$parseesc_seq();
if (s1 !== peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 123) {
s2 = peg$c13;
peg$currPos++;
} else {
s2 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c14); }
}
if (s2 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c15(s2);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c2;
}
} else {
peg$currPos = s0;
s0 = peg$c2;
}
return s0;
}
function peg$parseesc_right() {
var s0, s1, s2;
s0 = peg$currPos;
s1 = peg$parseesc_seq();
if (s1 !== peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 125) {
s2 = peg$c16;
peg$currPos++;
} else {
s2 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c17); }
}
if (s2 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c15(s2);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c2;
}
} else {
peg$currPos = s0;
s0 = peg$c2;
}
return s0;
}
function peg$parseesc_seq() {
var s0;
if (input.charCodeAt(peg$currPos) === 92) {
s0 = peg$c18;
peg$currPos++;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c19); }
}
return s0;
}
function peg$parsecolor() {
var s0, s1, s2;
s0 = peg$currPos;
s1 = [];
if (peg$c20.test(input.charAt(peg$currPos))) {
s2 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s2 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c21); }
}
if (s2 !== peg$FAILED) {
while (s2 !== peg$FAILED) {
s1.push(s2);
if (peg$c20.test(input.charAt(peg$currPos))) {
s2 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s2 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c21); }
}
}
} else {
s1 = peg$c2;
}
if (s1 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c22(s1);
}
s0 = s1;
return s0;
}
function peg$parsereset() {
var s0, s1, s2, s3;
s0 = peg$currPos;
s1 = peg$currPos;
s2 = peg$currPos;
peg$silentFails++;
s3 = peg$parseesc_right();
peg$silentFails--;
if (s3 === peg$FAILED) {
s2 = peg$c4;
} else {
peg$currPos = s2;
s2 = peg$c2;
}
if (s2 !== peg$FAILED) {
s3 = peg$parserd();
if (s3 !== peg$FAILED) {
s2 = [s2, s3];
s1 = s2;
} else {
peg$currPos = s1;
s1 = peg$c2;
}
} else {
peg$currPos = s1;
s1 = peg$c2;
}
if (s1 !== peg$FAILED) {
s2 = peg$parseafter();
if (s2 === peg$FAILED) {
s2 = peg$c23;
}
if (s2 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c24(s1, s2);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c2;
}
} else {
peg$currPos = s0;
s0 = peg$c2;
}
return s0;
}
function peg$parseafter() {
var s0, s1, s2, s3, s4;
s0 = [];
s1 = peg$currPos;
s2 = peg$currPos;
peg$silentFails++;
s3 = peg$parseld();
peg$silentFails--;
if (s3 === peg$FAILED) {
s2 = peg$c4;
} else {
peg$currPos = s2;
s2 = peg$c2;
}
if (s2 !== peg$FAILED) {
s3 = peg$currPos;
peg$silentFails++;
s4 = peg$parserd();
peg$silentFails--;
if (s4 === peg$FAILED) {
s3 = peg$c4;
} else {
peg$currPos = s3;
s3 = peg$c2;
}
if (s3 !== peg$FAILED) {
s4 = peg$parseany();
if (s4 !== peg$FAILED) {
peg$reportedPos = s1;
s2 = peg$c25(s4);
s1 = s2;
} else {
peg$currPos = s1;
s1 = peg$c2;
}
} else {
peg$currPos = s1;
s1 = peg$c2;
}
} else {
peg$currPos = s1;
s1 = peg$c2;
}
if (s1 !== peg$FAILED) {
while (s1 !== peg$FAILED) {
s0.push(s1);
s1 = peg$currPos;
s2 = peg$currPos;
peg$silentFails++;
s3 = peg$parseld();
peg$silentFails--;
if (s3 === peg$FAILED) {
s2 = peg$c4;
} else {
peg$currPos = s2;
s2 = peg$c2;
}
if (s2 !== peg$FAILED) {
s3 = peg$currPos;
peg$silentFails++;
s4 = peg$parserd();
peg$silentFails--;
if (s4 === peg$FAILED) {
s3 = peg$c4;
} else {
peg$currPos = s3;
s3 = peg$c2;
}
if (s3 !== peg$FAILED) {
s4 = peg$parseany();
if (s4 !== peg$FAILED) {
peg$reportedPos = s1;
s2 = peg$c25(s4);
s1 = s2;
} else {
peg$currPos = s1;
s1 = peg$c2;
}
} else {
peg$currPos = s1;
s1 = peg$c2;
}
} else {
peg$currPos = s1;
s1 = peg$c2;
}
}
} else {
s0 = peg$c2;
}
return s0;
}
function peg$parseld() {
var s0;
if (input.charCodeAt(peg$currPos) === 123) {
s0 = peg$c13;
peg$currPos++;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c14); }
}
return s0;
}
function peg$parserd() {
var s0;
if (input.charCodeAt(peg$currPos) === 125) {
s0 = peg$c16;
peg$currPos++;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c17); }
}
return s0;
}
function peg$parseeol() {
var s0;
if (input.charCodeAt(peg$currPos) === 10) {
s0 = peg$c26;
peg$currPos++;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c27); }
}
if (s0 === peg$FAILED) {
if (input.substr(peg$currPos, 2) === peg$c28) {
s0 = peg$c28;
peg$currPos += 2;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c29); }
}
if (s0 === peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 13) {
s0 = peg$c30;
peg$currPos++;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c31); }
}
if (s0 === peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 8232) {
s0 = peg$c32;
peg$currPos++;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c33); }
}
if (s0 === peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 8233) {
s0 = peg$c34;
peg$currPos++;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c35); }
}
}
}
}
}
return s0;
}
function peg$parsews() {
var s0;
if (peg$c36.test(input.charAt(peg$currPos))) {
s0 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c37); }
}
if (s0 === peg$FAILED) {
s0 = peg$parseeol();
}
return s0;
}
peg$result = peg$startRuleFunction();
if (peg$result !== peg$FAILED && peg$currPos === input.length) {
return peg$result;
} else {
if (peg$result !== peg$FAILED && peg$currPos < input.length) {
peg$fail({ type: "end", description: "end of input" });
}
throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);
}
}
return {
SyntaxError: SyntaxError,
parse: parse
};
})()

116
node_modules/tfunk/node_modules/chalk/index.js generated vendored Normal file
View File

@ -0,0 +1,116 @@
'use strict';
var escapeStringRegexp = require('escape-string-regexp');
var ansiStyles = require('ansi-styles');
var stripAnsi = require('strip-ansi');
var hasAnsi = require('has-ansi');
var supportsColor = require('supports-color');
var defineProps = Object.defineProperties;
var isSimpleWindowsTerm = process.platform === 'win32' && !/^xterm/i.test(process.env.TERM);
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 (isSimpleWindowsTerm) {
ansiStyles.blue.open = '\u001b[94m';
}
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 build(_styles) {
var builder = function () {
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.
/* eslint-disable no-proto */
builder.__proto__ = proto;
return builder;
}
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;
}
var nestedStyles = this._styles;
var i = nestedStyles.length;
// Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,
// see https://github.com/chalk/chalk/issues/58
// If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.
var originalDim = ansiStyles.dim.open;
if (isSimpleWindowsTerm && (nestedStyles.indexOf('gray') !== -1 || nestedStyles.indexOf('grey') !== -1)) {
ansiStyles.dim.open = '';
}
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;
}
// Reset the original 'dim' if we changed it to work around the Windows dimmed gray issue.
ansiStyles.dim.open = originalDim;
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;

21
node_modules/tfunk/node_modules/chalk/license generated vendored Normal file
View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.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.

117
node_modules/tfunk/node_modules/chalk/package.json generated vendored Normal file
View File

@ -0,0 +1,117 @@
{
"_args": [
[
"chalk@1.1.3",
"/Users/tatiana/selfdefined"
]
],
"_from": "chalk@1.1.3",
"_id": "chalk@1.1.3",
"_inBundle": false,
"_integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"_location": "/tfunk/chalk",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "chalk@1.1.3",
"name": "chalk",
"escapedName": "chalk",
"rawSpec": "1.1.3",
"saveSpec": null,
"fetchSpec": "1.1.3"
},
"_requiredBy": [
"/tfunk"
],
"_resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"_spec": "1.1.3",
"_where": "/Users/tatiana/selfdefined",
"bugs": {
"url": "https://github.com/chalk/chalk/issues"
},
"dependencies": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
"has-ansi": "^2.0.0",
"strip-ansi": "^3.0.0",
"supports-color": "^2.0.0"
},
"description": "Terminal string styling done right. Much color.",
"devDependencies": {
"coveralls": "^2.11.2",
"matcha": "^0.6.0",
"mocha": "*",
"nyc": "^3.0.0",
"require-uncached": "^1.0.2",
"resolve-from": "^1.0.0",
"semver": "^4.3.3",
"xo": "*"
},
"engines": {
"node": ">=0.10.0"
},
"files": [
"index.js"
],
"homepage": "https://github.com/chalk/chalk#readme",
"keywords": [
"color",
"colour",
"colors",
"terminal",
"console",
"cli",
"string",
"str",
"ansi",
"style",
"styles",
"tty",
"formatting",
"rgb",
"256",
"shell",
"xterm",
"log",
"logging",
"command-line",
"text"
],
"license": "MIT",
"maintainers": [
{
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "sindresorhus.com"
},
{
"name": "Joshua Appelman",
"email": "jappelman@xebia.com",
"url": "jbnicolai.com"
},
{
"name": "JD Ballard",
"email": "i.am.qix@gmail.com",
"url": "github.com/qix-"
}
],
"name": "chalk",
"repository": {
"type": "git",
"url": "git+https://github.com/chalk/chalk.git"
},
"scripts": {
"bench": "matcha benchmark.js",
"coverage": "nyc npm test && nyc report",
"coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls",
"test": "xo && mocha"
},
"version": "1.1.3",
"xo": {
"envs": [
"node",
"mocha"
]
}
}

213
node_modules/tfunk/node_modules/chalk/readme.md generated vendored Normal file
View File

@ -0,0 +1,213 @@
<h1 align="center">
<br>
<br>
<img width="360" src="https://cdn.rawgit.com/chalk/chalk/19935d6484811c5e468817f846b7b3d417d7bf4a/logo.svg" alt="chalk">
<br>
<br>
<br>
</h1>
> Terminal string styling done right
[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk)
[![Coverage Status](https://coveralls.io/repos/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/r/chalk/chalk?branch=master)
[![](http://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4)
[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.**
![](https://github.com/chalk/ansi-styles/raw/master/screenshot.png)
## Why
- Highly performant
- Doesn't extend `String.prototype`
- Expressive API
- Ability to nest styles
- Clean and focused
- Auto-detects color support
- Actively maintained
- [Used by ~4500 modules](https://www.npmjs.com/browse/depended/chalk) as of July 15, 2015
## 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/chalk/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/chalk/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/chalk/has-ansi).
### chalk.stripColor(string)
[Strip color](https://github.com/chalk/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 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`.
## Related
- [chalk-cli](https://github.com/chalk/chalk-cli) - CLI for this module
- [ansi-styles](https://github.com/chalk/ansi-styles/) - ANSI escape codes for styling strings in the terminal
- [supports-color](https://github.com/chalk/supports-color/) - Detect whether a terminal supports color
- [strip-ansi](https://github.com/chalk/strip-ansi) - Strip ANSI escape codes
- [has-ansi](https://github.com/chalk/has-ansi) - Check if a string has ANSI escape codes
- [ansi-regex](https://github.com/chalk/ansi-regex) - Regular expression for matching ANSI escape codes
- [wrap-ansi](https://github.com/chalk/wrap-ansi) - Wordwrap a string with ANSI escape codes
## License
MIT © [Sindre Sorhus](http://sindresorhus.com)

87
node_modules/tfunk/package.json generated vendored Normal file
View File

@ -0,0 +1,87 @@
{
"_args": [
[
"tfunk@3.1.0",
"/Users/tatiana/selfdefined"
]
],
"_from": "tfunk@3.1.0",
"_id": "tfunk@3.1.0",
"_inBundle": false,
"_integrity": "sha1-OORBT8ZJd9h6/apy+sttKfgve1s=",
"_location": "/tfunk",
"_phantomChildren": {
"ansi-styles": "2.2.1",
"escape-string-regexp": "1.0.5",
"has-ansi": "2.0.0",
"strip-ansi": "3.0.1",
"supports-color": "2.0.0"
},
"_requested": {
"type": "version",
"registry": true,
"raw": "tfunk@3.1.0",
"name": "tfunk",
"escapedName": "tfunk",
"rawSpec": "3.1.0",
"saveSpec": null,
"fetchSpec": "3.1.0"
},
"_requiredBy": [
"/eazy-logger"
],
"_resolved": "https://registry.npmjs.org/tfunk/-/tfunk-3.1.0.tgz",
"_spec": "3.1.0",
"_where": "/Users/tatiana/selfdefined",
"author": {
"name": "Shane Osbourne"
},
"bugs": {
"url": "https://github.com/shakyShane/tfunk/issues"
},
"dependencies": {
"chalk": "^1.1.1",
"object-path": "^0.9.0"
},
"description": "Multi-colour console output from chalk with added awesome",
"devDependencies": {
"chai": "^1.10.0",
"jshint": "^2.6.0",
"mocha": "^2.1.0",
"pegjs": "^0.8.0"
},
"files": [
"index.js",
"lib"
],
"homepage": "https://github.com/shakyShane/tfunk#readme",
"keywords": [
"color",
"colour",
"colors",
"terminal",
"console",
"cli",
"string",
"styles",
"formatting",
"rgb",
"shell",
"xterm",
"log",
"logging",
"command-line",
"text"
],
"license": "MIT",
"name": "tfunk",
"repository": {
"type": "git",
"url": "git+https://github.com/shakyShane/tfunk.git"
},
"scripts": {
"lint": "jshint test/*.js index.js",
"test": "npm run lint && mocha"
},
"version": "3.1.0"
}