You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@griffin.apache.org by gu...@apache.org on 2017/03/20 18:10:03 UTC
[7/8] incubator-griffin-site git commit: remove node modules from repo
http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/b0372a55/node_modules/.bin/bunyan
----------------------------------------------------------------------
diff --git a/node_modules/.bin/bunyan b/node_modules/.bin/bunyan
deleted file mode 100755
index 73cf458..0000000
--- a/node_modules/.bin/bunyan
+++ /dev/null
@@ -1,1665 +0,0 @@
-#!/usr/bin/env node
-/**
- * Copyright 2016 Trent Mick
- * Copyright 2016 Joyent Inc.
- *
- * bunyan -- filter and pretty-print Bunyan log files (line-delimited JSON)
- *
- * See <https://github.com/trentm/node-bunyan>.
- *
- * -*- mode: js -*-
- * vim: expandtab:ts=4:sw=4
- */
-
-var VERSION = '1.8.8';
-
-var p = console.log;
-var util = require('util');
-var pathlib = require('path');
-var vm = require('vm');
-var http = require('http');
-var fs = require('fs');
-var warn = console.warn;
-var child_process = require('child_process'),
- spawn = child_process.spawn,
- exec = child_process.exec,
- execFile = child_process.execFile;
-var assert = require('assert');
-
-try {
- var moment = require('moment');
-} catch (e) {
- moment = null;
-}
-
-
-//---- globals and constants
-
-var nodeVer = process.versions.node.split('.').map(Number);
-var nodeSpawnSupportsStdio = (nodeVer[0] > 0 || nodeVer[1] >= 8);
-
-// Internal debug logging via `console.warn`.
-var _DEBUG = false;
-
-// Output modes.
-var OM_LONG = 1;
-var OM_JSON = 2;
-var OM_INSPECT = 3;
-var OM_SIMPLE = 4;
-var OM_SHORT = 5;
-var OM_BUNYAN = 6;
-var OM_FROM_NAME = {
- 'long': OM_LONG,
- 'paul': OM_LONG, /* backward compat */
- 'json': OM_JSON,
- 'inspect': OM_INSPECT,
- 'simple': OM_SIMPLE,
- 'short': OM_SHORT,
- 'bunyan': OM_BUNYAN
-};
-
-
-// Levels
-var TRACE = 10;
-var DEBUG = 20;
-var INFO = 30;
-var WARN = 40;
-var ERROR = 50;
-var FATAL = 60;
-
-var levelFromName = {
- 'trace': TRACE,
- 'debug': DEBUG,
- 'info': INFO,
- 'warn': WARN,
- 'error': ERROR,
- 'fatal': FATAL
-};
-var nameFromLevel = {};
-var upperNameFromLevel = {};
-var upperPaddedNameFromLevel = {};
-Object.keys(levelFromName).forEach(function (name) {
- var lvl = levelFromName[name];
- nameFromLevel[lvl] = name;
- upperNameFromLevel[lvl] = name.toUpperCase();
- upperPaddedNameFromLevel[lvl] = (
- name.length === 4 ? ' ' : '') + name.toUpperCase();
-});
-
-
-// Display time formats.
-var TIME_UTC = 1; // the default, bunyan's native format
-var TIME_LOCAL = 2;
-
-// Timezone formats: output format -> momentjs format string
-var TIMEZONE_UTC_FORMATS = {
- long: '[[]YYYY-MM-DD[T]HH:mm:ss.SSS[Z][]]',
- short: 'HH:mm:ss.SSS[Z]'
-};
-var TIMEZONE_LOCAL_FORMATS = {
- long: '[[]YYYY-MM-DD[T]HH:mm:ss.SSSZ[]]',
- short: 'HH:mm:ss.SSS'
-};
-
-
-// The current raw input line being processed. Used for `uncaughtException`.
-var currLine = null;
-
-// Child dtrace process, if any. Used for signal-handling.
-var child = null;
-
-// Whether ANSI codes are being used. Used for signal-handling.
-var usingAnsiCodes = false;
-
-// Used to tell the 'uncaughtException' handler that '-c CODE' is being used.
-var gUsingConditionOpts = false;
-
-// Pager child process, and output stream to which to write.
-var pager = null;
-var stdout = process.stdout;
-
-// Whether we are reading from stdin.
-var readingStdin = false;
-
-
-
-//---- support functions
-
-function getVersion() {
- return VERSION;
-}
-
-
-var format = util.format;
-if (!format) {
- /* BEGIN JSSTYLED */
- // If not node 0.6, then use its `util.format`:
- // <https://github.com/joyent/node/blob/master/lib/util.js#L22>:
- var inspect = util.inspect;
- var formatRegExp = /%[sdj%]/g;
- format = function format(f) {
- if (typeof f !== 'string') {
- var objects = [];
- for (var i = 0; i < arguments.length; i++) {
- objects.push(inspect(arguments[i]));
- }
- return objects.join(' ');
- }
-
- var i = 1;
- var args = arguments;
- var len = args.length;
- var str = String(f).replace(formatRegExp, function (x) {
- if (i >= len)
- return x;
- switch (x) {
- case '%s': return String(args[i++]);
- case '%d': return Number(args[i++]);
- case '%j': return JSON.stringify(args[i++]);
- case '%%': return '%';
- default:
- return x;
- }
- });
- for (var x = args[i]; i < len; x = args[++i]) {
- if (x === null || typeof x !== 'object') {
- str += ' ' + x;
- } else {
- str += ' ' + inspect(x);
- }
- }
- return str;
- };
- /* END JSSTYLED */
-}
-
-function indent(s) {
- return ' ' + s.split(/\r?\n/).join('\n ');
-}
-
-function objCopy(obj) {
- if (obj === null) {
- return null;
- } else if (Array.isArray(obj)) {
- return obj.slice();
- } else {
- var copy = {};
- Object.keys(obj).forEach(function (k) {
- copy[k] = obj[k];
- });
- return copy;
- }
-}
-
-function printHelp() {
- /* BEGIN JSSTYLED */
- p('Usage:');
- p(' bunyan [OPTIONS] [FILE ...]');
- p(' ... | bunyan [OPTIONS]');
- p(' bunyan [OPTIONS] -p PID');
- p('');
- p('Filter and pretty-print Bunyan log file content.');
- p('');
- p('General options:');
- p(' -h, --help print this help info and exit');
- p(' --version print version of this command and exit');
- p('');
- p('Runtime log snooping (via DTrace, only on supported platforms):');
- p(' -p PID Process bunyan:log-* probes from the process');
- p(' with the given PID. Can be used multiple times,');
- p(' or specify all processes with "*", or a set of');
- p(' processes whose command & args match a pattern');
- p(' with "-p NAME".');
- p('');
- p('Filtering options:');
- p(' -l, --level LEVEL');
- p(' Only show messages at or above the specified level.');
- p(' You can specify level *names* or the internal numeric');
- p(' values.');
- p(' -c, --condition CONDITION');
- p(' Run each log message through the condition and');
- p(' only show those that return truish. E.g.:');
- p(' -c \'this.pid == 123\'');
- p(' -c \'this.level == DEBUG\'');
- p(' -c \'this.msg.indexOf("boom") != -1\'');
- p(' "CONDITION" must be legal JS code. `this` holds');
- p(' the log record. The TRACE, DEBUG, ... FATAL values');
- p(' are defined to help with comparing `this.level`.');
- p(' --strict Suppress all but legal Bunyan JSON log lines. By default');
- p(' non-JSON, and non-Bunyan lines are passed through.');
- p('');
- p('Output options:');
- p(' --pager Pipe output into `less` (or $PAGER if set), if');
- p(' stdout is a TTY. This overrides $BUNYAN_NO_PAGER.');
- p(' Note: Paging is only supported on node >=0.8.');
- p(' --no-pager Do not pipe output into a pager.');
- p(' --color Colorize output. Defaults to try if output');
- p(' stream is a TTY.');
- p(' --no-color Force no coloring (e.g. terminal doesn\'t support it)');
- p(' -o, --output MODE');
- p(' Specify an output mode/format. One of');
- p(' long: (the default) pretty');
- p(' json: JSON output, 2-space indent');
- p(' json-N: JSON output, N-space indent, e.g. "json-4"');
- p(' bunyan: 0 indented JSON, bunyan\'s native format');
- p(' inspect: node.js `util.inspect` output');
- p(' short: like "long", but more concise');
- p(' simple: level, followed by "-" and then the message');
- p(' -j shortcut for `-o json`');
- p(' -0 shortcut for `-o bunyan`');
- p(' -L, --time local');
- p(' Display time field in local time, rather than UTC.');
- p('');
- p('Environment Variables:');
- p(' BUNYAN_NO_COLOR Set to a non-empty value to force no output ');
- p(' coloring. See "--no-color".');
- p(' BUNYAN_NO_PAGER Disable piping output to a pager. ');
- p(' See "--no-pager".');
- p('');
- p('See <https://github.com/trentm/node-bunyan> for more complete docs.');
- p('Please report bugs to <https://github.com/trentm/node-bunyan/issues>.');
- /* END JSSTYLED */
-}
-
-/*
- * If the user specifies multiple input sources, we want to print out records
- * from all sources in a single, chronologically ordered stream. To do this
- * efficiently, we first assume that all records within each source are ordered
- * already, so we need only keep track of the next record in each source and
- * the time of the last record emitted. To avoid excess memory usage, we
- * pause() streams that are ahead of others.
- *
- * 'streams' is an object indexed by source name (file name) which specifies:
- *
- * stream Actual stream object, so that we can pause and resume it.
- *
- * records Array of log records we've read, but not yet emitted. Each
- * record includes 'line' (the raw line), 'rec' (the JSON
- * record), and 'time' (the parsed time value).
- *
- * done Whether the stream has any more records to emit.
- */
-var streams = {};
-
-function gotRecord(file, line, rec, opts, stylize)
-{
- var time = new Date(rec.time);
-
- streams[file]['records'].push({ line: line, rec: rec, time: time });
- emitNextRecord(opts, stylize);
-}
-
-function filterRecord(rec, opts)
-{
- if (opts.level && rec.level < opts.level) {
- return false;
- }
-
- if (opts.condFuncs) {
- var recCopy = objCopy(rec);
- for (var i = 0; i < opts.condFuncs.length; i++) {
- var pass = opts.condFuncs[i].call(recCopy);
- if (!pass)
- return false;
- }
- } else if (opts.condVm) {
- for (var i = 0; i < opts.condVm.length; i++) {
- var pass = opts.condVm[i].runInNewContext(rec);
- if (!pass)
- return false;
- }
- }
-
- return true;
-}
-
-function emitNextRecord(opts, stylize)
-{
- var ofile, ready, minfile, rec;
-
- for (;;) {
- /*
- * Take a first pass through the input streams to see if we have a
- * record from all of them. If not, we'll pause any streams for
- * which we do already have a record (to avoid consuming excess
- * memory) and then wait until we have records from the others
- * before emitting the next record.
- *
- * As part of the same pass, we look for the earliest record
- * we have not yet emitted.
- */
- minfile = undefined;
- ready = true;
- for (ofile in streams) {
-
- if (streams[ofile].stream === null ||
- (!streams[ofile].done && streams[ofile].records.length === 0)) {
- ready = false;
- break;
- }
-
- if (streams[ofile].records.length > 0 &&
- (minfile === undefined ||
- streams[minfile].records[0].time >
- streams[ofile].records[0].time)) {
- minfile = ofile;
- }
- }
-
- if (!ready || minfile === undefined) {
- for (ofile in streams) {
- if (!streams[ofile].stream || streams[ofile].done)
- continue;
-
- if (streams[ofile].records.length > 0) {
- if (!streams[ofile].paused) {
- streams[ofile].paused = true;
- streams[ofile].stream.pause();
- }
- } else if (streams[ofile].paused) {
- streams[ofile].paused = false;
- streams[ofile].stream.resume();
- }
- }
-
- return;
- }
-
- /*
- * Emit the next record for 'minfile', and invoke ourselves again to
- * make sure we emit as many records as we can right now.
- */
- rec = streams[minfile].records.shift();
- emitRecord(rec.rec, rec.line, opts, stylize);
- }
-}
-
-/**
- * Return a function for the given JS code that returns.
- *
- * If no 'return' in the given javascript snippet, then assume we are a single
- * statement and wrap in 'return (...)'. This is for convenience for short
- * '-c ...' snippets.
- */
-function funcWithReturnFromSnippet(js) {
- // auto-"return"
- if (js.indexOf('return') === -1) {
- if (js.substring(js.length - 1) === ';') {
- js = js.substring(0, js.length - 1);
- }
- js = 'return (' + js + ')';
- }
-
- // Expose level definitions to condition func context
- var varDefs = [];
- Object.keys(upperNameFromLevel).forEach(function (lvl) {
- varDefs.push(format('var %s = %d;',
- upperNameFromLevel[lvl], lvl));
- });
- varDefs = varDefs.join('\n') + '\n';
-
- return (new Function(varDefs + js));
-}
-
-/**
- * Parse the command-line options and arguments into an object.
- *
- * {
- * 'args': [...] // arguments
- * 'help': true, // true if '-h' option given
- * // etc.
- * }
- *
- * @return {Object} The parsed options. `.args` is the argument list.
- * @throws {Error} If there is an error parsing argv.
- */
-function parseArgv(argv) {
- var parsed = {
- args: [],
- help: false,
- color: null,
- paginate: null,
- outputMode: OM_LONG,
- jsonIndent: 2,
- level: null,
- strict: false,
- pids: null,
- pidsType: null,
- timeFormat: TIME_UTC // one of the TIME_ constants
- };
-
- // Turn '-iH' into '-i -H', except for argument-accepting options.
- var args = argv.slice(2); // drop ['node', 'scriptname']
- var newArgs = [];
- var optTakesArg = {'d': true, 'o': true, 'c': true, 'l': true, 'p': true};
- for (var i = 0; i < args.length; i++) {
- if (args[i].charAt(0) === '-' && args[i].charAt(1) !== '-' &&
- args[i].length > 2)
- {
- var splitOpts = args[i].slice(1).split('');
- for (var j = 0; j < splitOpts.length; j++) {
- newArgs.push('-' + splitOpts[j]);
- if (optTakesArg[splitOpts[j]]) {
- var optArg = splitOpts.slice(j+1).join('');
- if (optArg.length) {
- newArgs.push(optArg);
- }
- break;
- }
- }
- } else {
- newArgs.push(args[i]);
- }
- }
- args = newArgs;
-
- // Expose level definitions to condition vm context
- var condDefines = [];
- Object.keys(upperNameFromLevel).forEach(function (lvl) {
- condDefines.push(
- format('Object.prototype.%s = %s;', upperNameFromLevel[lvl], lvl));
- });
- condDefines = condDefines.join('\n') + '\n';
-
- var endOfOptions = false;
- while (args.length > 0) {
- var arg = args.shift();
- switch (arg) {
- case '--':
- endOfOptions = true;
- break;
- case '-h': // display help and exit
- case '--help':
- parsed.help = true;
- break;
- case '--version':
- parsed.version = true;
- break;
- case '--strict':
- parsed.strict = true;
- break;
- case '--color':
- parsed.color = true;
- break;
- case '--no-color':
- parsed.color = false;
- break;
- case '--pager':
- parsed.paginate = true;
- break;
- case '--no-pager':
- parsed.paginate = false;
- break;
- case '-o':
- case '--output':
- var name = args.shift();
- var idx = name.lastIndexOf('-');
- if (idx !== -1) {
- var indentation = Number(name.slice(idx+1));
- if (! isNaN(indentation)) {
- parsed.jsonIndent = indentation;
- name = name.slice(0, idx);
- }
- }
- parsed.outputMode = OM_FROM_NAME[name];
- if (parsed.outputMode === undefined) {
- throw new Error('unknown output mode: "'+name+'"');
- }
- break;
- case '-j': // output with JSON.stringify
- parsed.outputMode = OM_JSON;
- break;
- case '-0':
- parsed.outputMode = OM_BUNYAN;
- break;
- case '-L':
- parsed.timeFormat = TIME_LOCAL;
- if (!moment) {
- throw new Error(
- 'could not find moment package required for "-L"');
- }
- break;
- case '--time':
- var timeArg = args.shift();
- switch (timeArg) {
- case 'utc':
- parsed.timeFormat = TIME_UTC;
- break
- case 'local':
- parsed.timeFormat = TIME_LOCAL;
- if (!moment) {
- throw new Error('could not find moment package '
- + 'required for "--time=local"');
- }
- break
- case undefined:
- throw new Error('missing argument to "--time"');
- default:
- throw new Error(format('invalid time format: "%s"',
- timeArg));
- }
- break;
- case '-p':
- if (!parsed.pids) {
- parsed.pids = [];
- }
- var pidArg = args.shift();
- var pid = +(pidArg);
- if (!isNaN(pid) || pidArg === '*') {
- if (parsed.pidsType && parsed.pidsType !== 'num') {
- throw new Error(format('cannot mix PID name and '
- + 'number arguments: "%s"', pidArg));
- }
- parsed.pidsType = 'num';
- if (!parsed.pids) {
- parsed.pids = [];
- }
- parsed.pids.push(isNaN(pid) ? pidArg : pid);
- } else {
- if (parsed.pidsType && parsed.pidsType !== 'name') {
- throw new Error(format('cannot mix PID name and '
- + 'number arguments: "%s"', pidArg));
- }
- parsed.pidsType = 'name';
- parsed.pids = pidArg;
- }
- break;
- case '-l':
- case '--level':
- var levelArg = args.shift();
- var level = +(levelArg);
- if (isNaN(level)) {
- level = +levelFromName[levelArg.toLowerCase()];
- }
- if (isNaN(level)) {
- throw new Error('unknown level value: "'+levelArg+'"');
- }
- parsed.level = level;
- break;
- case '-c':
- case '--condition':
- gUsingConditionOpts = true;
- var condition = args.shift();
- if (Boolean(process.env.BUNYAN_EXEC &&
- process.env.BUNYAN_EXEC === 'vm'))
- {
- parsed.condVm = parsed.condVm || [];
- var scriptName = 'bunyan-condition-'+parsed.condVm.length;
- var code = condDefines + condition;
- var script;
- try {
- script = vm.createScript(code, scriptName);
- } catch (complErr) {
- throw new Error(format('illegal CONDITION code: %s\n'
- + ' CONDITION script:\n'
- + '%s\n'
- + ' Error:\n'
- + '%s',
- complErr, indent(code), indent(complErr.stack)));
- }
-
- // Ensure this is a reasonably safe CONDITION.
- try {
- script.runInNewContext(minValidRecord);
- } catch (condErr) {
- throw new Error(format(
- /* JSSTYLED */
- 'CONDITION code cannot safely filter a minimal Bunyan log record\n'
- + ' CONDITION script:\n'
- + '%s\n'
- + ' Minimal Bunyan log record:\n'
- + '%s\n'
- + ' Filter error:\n'
- + '%s',
- indent(code),
- indent(JSON.stringify(minValidRecord, null, 2)),
- indent(condErr.stack)
- ));
- }
- parsed.condVm.push(script);
- } else {
- parsed.condFuncs = parsed.condFuncs || [];
- parsed.condFuncs.push(funcWithReturnFromSnippet(condition));
- }
- break;
- default: // arguments
- if (!endOfOptions && arg.length > 0 && arg[0] === '-') {
- throw new Error('unknown option "'+arg+'"');
- }
- parsed.args.push(arg);
- break;
- }
- }
- //TODO: '--' handling and error on a first arg that looks like an option.
-
- return parsed;
-}
-
-
-function isInteger(s) {
- return (s.search(/^-?[0-9]+$/) == 0);
-}
-
-
-// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
-// Suggested colors (some are unreadable in common cases):
-// - Good: cyan, yellow (limited use), bold, green, magenta, red
-// - Bad: blue (not visible on cmd.exe), grey (same color as background on
-// Solarized Dark theme from <https://github.com/altercation/solarized>, see
-// issue #160)
-var colors = {
- 'bold' : [1, 22],
- 'italic' : [3, 23],
- 'underline' : [4, 24],
- 'inverse' : [7, 27],
- 'white' : [37, 39],
- 'grey' : [90, 39],
- 'black' : [30, 39],
- 'blue' : [34, 39],
- 'cyan' : [36, 39],
- 'green' : [32, 39],
- 'magenta' : [35, 39],
- 'red' : [31, 39],
- 'yellow' : [33, 39]
-};
-
-function stylizeWithColor(str, color) {
- if (!str)
- return '';
- var codes = colors[color];
- if (codes) {
- return '\033[' + codes[0] + 'm' + str +
- '\033[' + codes[1] + 'm';
- } else {
- return str;
- }
-}
-
-function stylizeWithoutColor(str, color) {
- return str;
-}
-
-
-/**
- * Is this a valid Bunyan log record.
- */
-function isValidRecord(rec) {
- if (rec.v == null ||
- rec.level == null ||
- rec.name == null ||
- rec.hostname == null ||
- rec.pid == null ||
- rec.time == null ||
- rec.msg == null) {
- // Not valid Bunyan log.
- return false;
- } else {
- return true;
- }
-}
-var minValidRecord = {
- v: 0, //TODO: get this from bunyan.LOG_VERSION
- level: INFO,
- name: 'name',
- hostname: 'hostname',
- pid: 123,
- time: Date.now(),
- msg: 'msg'
-};
-
-
-/**
- * Parses the given log line and either emits it right away (for invalid
- * records) or enqueues it for emitting later when it's the next line to show.
- */
-function handleLogLine(file, line, opts, stylize) {
- currLine = line; // intentionally global
-
- // Emit non-JSON lines immediately.
- var rec;
- if (!line) {
- if (!opts.strict) emit(line + '\n');
- return;
- } else if (line[0] !== '{') {
- if (!opts.strict) emit(line + '\n'); // not JSON
- return;
- } else {
- try {
- rec = JSON.parse(line);
- } catch (e) {
- if (!opts.strict) emit(line + '\n');
- return;
- }
- }
-
- if (!isValidRecord(rec)) {
- if (!opts.strict) emit(line + '\n');
- return;
- }
-
- if (!filterRecord(rec, opts))
- return;
-
- if (file === null)
- return emitRecord(rec, line, opts, stylize);
-
- return gotRecord(file, line, rec, opts, stylize);
-}
-
-/**
- * Print out a single result, considering input options.
- */
-function emitRecord(rec, line, opts, stylize) {
- var short = false;
-
- switch (opts.outputMode) {
- case OM_SHORT:
- short = true;
- /* jsl:fall-thru */
-
- case OM_LONG:
- // [time] LEVEL: name[/comp]/pid on hostname (src): msg* (extras...)
- // msg*
- // --
- // long and multi-line extras
- // ...
- // If 'msg' is single-line, then it goes in the top line.
- // If 'req', show the request.
- // If 'res', show the response.
- // If 'err' and 'err.stack' then show that.
- if (!isValidRecord(rec)) {
- return emit(line + '\n');
- }
-
- delete rec.v;
-
- // Time.
- var time;
- if (!short && opts.timeFormat === TIME_UTC) {
- // Fast default path: We assume the raw `rec.time` is a UTC time
- // in ISO 8601 format (per spec).
- time = '[' + rec.time + ']';
- } else if (!moment && opts.timeFormat === TIME_UTC) {
- // Don't require momentjs install, as long as not using TIME_LOCAL.
- time = rec.time.substr(11);
- } else {
- var tzFormat;
- var moTime = moment(rec.time);
- switch (opts.timeFormat) {
- case TIME_UTC:
- tzFormat = TIMEZONE_UTC_FORMATS[short ? 'short' : 'long'];
- moTime.utc();
- break;
- case TIME_LOCAL:
- tzFormat = TIMEZONE_LOCAL_FORMATS[short ? 'short' : 'long'];
- break;
- default:
- throw new Error('unexpected timeFormat: ' + opts.timeFormat);
- };
- time = moTime.format(tzFormat);
- }
- time = stylize(time, 'XXX');
- delete rec.time;
-
- var nameStr = rec.name;
- delete rec.name;
-
- if (rec.component) {
- nameStr += '/' + rec.component;
- }
- delete rec.component;
-
- if (!short)
- nameStr += '/' + rec.pid;
- delete rec.pid;
-
- var level = (upperPaddedNameFromLevel[rec.level] || 'LVL' + rec.level);
- if (opts.color) {
- var colorFromLevel = {
- 10: 'white', // TRACE
- 20: 'yellow', // DEBUG
- 30: 'cyan', // INFO
- 40: 'magenta', // WARN
- 50: 'red', // ERROR
- 60: 'inverse', // FATAL
- };
- level = stylize(level, colorFromLevel[rec.level]);
- }
- delete rec.level;
-
- var src = '';
- if (rec.src && rec.src.file) {
- var s = rec.src;
- if (s.func) {
- src = format(' (%s:%d in %s)', s.file, s.line, s.func);
- } else {
- src = format(' (%s:%d)', s.file, s.line);
- }
- src = stylize(src, 'green');
- }
- delete rec.src;
-
- var hostname = rec.hostname;
- delete rec.hostname;
-
- var extras = [];
- var details = [];
-
- if (rec.req_id) {
- extras.push('req_id=' + rec.req_id);
- }
- delete rec.req_id;
-
- var onelineMsg;
- if (rec.msg.indexOf('\n') !== -1) {
- onelineMsg = '';
- details.push(indent(stylize(rec.msg, 'cyan')));
- } else {
- onelineMsg = ' ' + stylize(rec.msg, 'cyan');
- }
- delete rec.msg;
-
- if (rec.req && typeof (rec.req) === 'object') {
- var req = rec.req;
- delete rec.req;
- var headers = req.headers;
- if (!headers) {
- headers = '';
- } else if (typeof (headers) === 'string') {
- headers = '\n' + headers;
- } else if (typeof (headers) === 'object') {
- headers = '\n' + Object.keys(headers).map(function (h) {
- return h + ': ' + headers[h];
- }).join('\n');
- }
- var s = format('%s %s HTTP/%s%s', req.method,
- req.url,
- req.httpVersion || '1.1',
- headers
- );
- delete req.url;
- delete req.method;
- delete req.httpVersion;
- delete req.headers;
- if (req.body) {
- s += '\n\n' + (typeof (req.body) === 'object'
- ? JSON.stringify(req.body, null, 2) : req.body);
- delete req.body;
- }
- if (req.trailers && Object.keys(req.trailers) > 0) {
- s += '\n' + Object.keys(req.trailers).map(function (t) {
- return t + ': ' + req.trailers[t];
- }).join('\n');
- }
- delete req.trailers;
- details.push(indent(s));
- // E.g. for extra 'foo' field on 'req', add 'req.foo' at
- // top-level. This *does* have the potential to stomp on a
- // literal 'req.foo' key.
- Object.keys(req).forEach(function (k) {
- rec['req.' + k] = req[k];
- })
- }
-
- if (rec.client_req && typeof (rec.client_req) === 'object') {
- var client_req = rec.client_req;
- delete rec.client_req;
- var headers = client_req.headers;
- var hostHeaderLine = '';
- var s = '';
- if (client_req.address) {
- hostHeaderLine = '\nHost: ' + client_req.address;
- if (client_req.port)
- hostHeaderLine += ':' + client_req.port;
- }
- delete client_req.headers;
- delete client_req.address;
- delete client_req.port;
- s += format('%s %s HTTP/%s%s%s', client_req.method,
- client_req.url,
- client_req.httpVersion || '1.1',
- hostHeaderLine,
- (headers ?
- '\n' + Object.keys(headers).map(
- function (h) {
- return h + ': ' + headers[h];
- }).join('\n') :
- ''));
- delete client_req.method;
- delete client_req.url;
- delete client_req.httpVersion;
- if (client_req.body) {
- s += '\n\n' + (typeof (client_req.body) === 'object' ?
- JSON.stringify(client_req.body, null, 2) :
- client_req.body);
- delete client_req.body;
- }
- // E.g. for extra 'foo' field on 'client_req', add
- // 'client_req.foo' at top-level. This *does* have the potential
- // to stomp on a literal 'client_req.foo' key.
- Object.keys(client_req).forEach(function (k) {
- rec['client_req.' + k] = client_req[k];
- })
- details.push(indent(s));
- }
-
- function _res(res) {
- var s = '';
- if (res.statusCode !== undefined) {
- s += format('HTTP/1.1 %s %s\n', res.statusCode,
- http.STATUS_CODES[res.statusCode]);
- delete res.statusCode;
- }
- // Handle `res.header` or `res.headers` as either a string or
- // and object of header key/value pairs. Prefer `res.header` if set
- // (TODO: Why? I don't recall. Typical of restify serializer?
- // Typical JSON.stringify of a core node HttpResponse?)
- var headerTypes = {string: true, object: true};
- var headers;
- if (res.header && headerTypes[typeof (res.header)]) {
- headers = res.header;
- delete res.header;
- } else if (res.headers && headerTypes[typeof (res.headers)]) {
- headers = res.headers;
- delete res.headers;
- }
- if (headers === undefined) {
- /* pass through */
- } else if (typeof (headers) === 'string') {
- s += headers.trimRight();
- } else {
- s += Object.keys(headers).map(
- function (h) { return h + ': ' + headers[h]; }).join('\n');
- }
- if (res.body !== undefined) {
- var body = (typeof (res.body) === 'object'
- ? JSON.stringify(res.body, null, 2) : res.body);
- if (body.length > 0) { s += '\n\n' + body };
- delete res.body;
- } else {
- s = s.trimRight();
- }
- if (res.trailer) {
- s += '\n' + res.trailer;
- }
- delete res.trailer;
- if (s) {
- details.push(indent(s));
- }
- // E.g. for extra 'foo' field on 'res', add 'res.foo' at
- // top-level. This *does* have the potential to stomp on a
- // literal 'res.foo' key.
- Object.keys(res).forEach(function (k) {
- rec['res.' + k] = res[k];
- });
- }
-
- if (rec.res && typeof (rec.res) === 'object') {
- _res(rec.res);
- delete rec.res;
- }
- if (rec.client_res && typeof (rec.client_res) === 'object') {
- _res(rec.client_res);
- delete rec.client_res;
- }
-
- if (rec.err && rec.err.stack) {
- var err = rec.err
- if (typeof (err.stack) !== 'string') {
- details.push(indent(err.stack.toString()));
- } else {
- details.push(indent(err.stack));
- }
- delete err.message;
- delete err.name;
- delete err.stack;
- // E.g. for extra 'foo' field on 'err', add 'err.foo' at
- // top-level. This *does* have the potential to stomp on a
- // literal 'err.foo' key.
- Object.keys(err).forEach(function (k) {
- rec['err.' + k] = err[k];
- })
- delete rec.err;
- }
-
- var leftover = Object.keys(rec);
- for (var i = 0; i < leftover.length; i++) {
- var key = leftover[i];
- var value = rec[key];
- var stringified = false;
- if (typeof (value) !== 'string') {
- value = JSON.stringify(value, null, 2);
- stringified = true;
- }
- if (value.indexOf('\n') !== -1 || value.length > 50) {
- details.push(indent(key + ': ' + value));
- } else if (!stringified && (value.indexOf(' ') != -1 ||
- value.length === 0))
- {
- extras.push(key + '=' + JSON.stringify(value));
- } else {
- extras.push(key + '=' + value);
- }
- }
-
- extras = stylize(
- (extras.length ? ' (' + extras.join(', ') + ')' : ''), 'XXX');
- details = stylize(
- (details.length ? details.join('\n --\n') + '\n' : ''), 'XXX');
- if (!short)
- emit(format('%s %s: %s on %s%s:%s%s\n%s',
- time,
- level,
- nameStr,
- hostname || '<no-hostname>',
- src,
- onelineMsg,
- extras,
- details));
- else
- emit(format('%s %s %s:%s%s\n%s',
- time,
- level,
- nameStr,
- onelineMsg,
- extras,
- details));
- break;
-
- case OM_INSPECT:
- emit(util.inspect(rec, false, Infinity, true) + '\n');
- break;
-
- case OM_BUNYAN:
- emit(JSON.stringify(rec, null, 0) + '\n');
- break;
-
- case OM_JSON:
- emit(JSON.stringify(rec, null, opts.jsonIndent) + '\n');
- break;
-
- case OM_SIMPLE:
- /* JSSTYLED */
- // <http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/SimpleLayout.html>
- if (!isValidRecord(rec)) {
- return emit(line + '\n');
- }
- emit(format('%s - %s\n',
- upperNameFromLevel[rec.level] || 'LVL' + rec.level,
- rec.msg));
- break;
- default:
- throw new Error('unknown output mode: '+opts.outputMode);
- }
-}
-
-
-var stdoutFlushed = true;
-function emit(s) {
- try {
- stdoutFlushed = stdout.write(s);
- } catch (e) {
- // Handle any exceptions in stdout writing in `stdout.on('error', ...)`.
- }
-}
-
-
-/**
- * A hacked up version of 'process.exit' that will first drain stdout
- * before exiting. *WARNING: This doesn't stop event processing.* IOW,
- * callers have to be careful that code following this call isn't
- * accidentally executed.
- *
- * In node v0.6 "process.stdout and process.stderr are blocking when they
- * refer to regular files or TTY file descriptors." However, this hack might
- * still be necessary in a shell pipeline.
- */
-function drainStdoutAndExit(code) {
- if (_DEBUG) warn('(drainStdoutAndExit(%d))', code);
- stdout.on('drain', function () {
- cleanupAndExit(code);
- });
- if (stdoutFlushed) {
- cleanupAndExit(code);
- }
-}
-
-
-/**
- * Process all input from stdin.
- *
- * @params opts {Object} Bunyan options object.
- * @param stylize {Function} Output stylize function to use.
- * @param callback {Function} `function ()`
- */
-function processStdin(opts, stylize, callback) {
- readingStdin = true;
- var leftover = ''; // Left-over partial line from last chunk.
- var stdin = process.stdin;
- stdin.resume();
- stdin.setEncoding('utf8');
- stdin.on('data', function (chunk) {
- var lines = chunk.split(/\r\n|\n/);
- var length = lines.length;
- if (length === 1) {
- leftover += lines[0];
- return;
- }
-
- if (length > 1) {
- handleLogLine(null, leftover + lines[0], opts, stylize);
- }
- leftover = lines.pop();
- length -= 1;
- for (var i = 1; i < length; i++) {
- handleLogLine(null, lines[i], opts, stylize);
- }
- });
- stdin.on('end', function () {
- if (leftover) {
- handleLogLine(null, leftover, opts, stylize);
- leftover = '';
- }
- callback();
- });
-}
-
-
-/**
- * Process bunyan:log-* probes from the given pid.
- *
- * @params opts {Object} Bunyan options object.
- * @param stylize {Function} Output stylize function to use.
- * @param callback {Function} `function (code)`
- */
-function processPids(opts, stylize, callback) {
- var leftover = ''; // Left-over partial line from last chunk.
-
- /**
- * Get the PIDs to dtrace.
- *
- * @param cb {Function} `function (errCode, pids)`
- */
- function getPids(cb) {
- if (opts.pidsType === 'num') {
- return cb(null, opts.pids);
- }
- if (process.platform === 'sunos') {
- execFile('/bin/pgrep', ['-lf', opts.pids],
- function (pidsErr, stdout, stderr) {
- if (pidsErr) {
- warn('bunyan: error getting PIDs for "%s": %s\n%s\n%s',
- opts.pids, pidsErr.message, stdout, stderr);
- return cb(1);
- }
- var pids = stdout.trim().split('\n')
- .map(function (line) {
- return line.trim().split(/\s+/)[0]
- })
- .filter(function (pid) {
- return Number(pid) !== process.pid
- });
- if (pids.length === 0) {
- warn('bunyan: error: no matching PIDs found for "%s"',
- opts.pids);
- return cb(2);
- }
- cb(null, pids);
- }
- );
- } else {
- var regex = opts.pids;
- if (regex && /[a-zA-Z0-9_]/.test(regex[0])) {
- // 'foo' -> '[f]oo' trick to exclude the 'grep' PID from its
- // own search.
- regex = '[' + regex[0] + ']' + regex.slice(1);
- }
- exec(format('ps -A -o pid,command | grep \'%s\'', regex),
- function (pidsErr, stdout, stderr) {
- if (pidsErr) {
- warn('bunyan: error getting PIDs for "%s": %s\n%s\n%s',
- opts.pids, pidsErr.message, stdout, stderr);
- return cb(1);
- }
- var pids = stdout.trim().split('\n')
- .map(function (line) {
- return line.trim().split(/\s+/)[0];
- })
- .filter(function (pid) {
- return Number(pid) !== process.pid;
- });
- if (pids.length === 0) {
- warn('bunyan: error: no matching PIDs found for "%s"',
- opts.pids);
- return cb(2);
- }
- cb(null, pids);
- }
- );
- }
- }
-
- getPids(function (errCode, pids) {
- if (errCode) {
- return callback(errCode);
- }
-
- var probes = pids.map(function (pid) {
- if (!opts.level)
- return format('bunyan%s:::log-*', pid);
-
- var rval = [], l;
-
- for (l in levelFromName) {
- if (levelFromName[l] >= opts.level)
- rval.push(format('bunyan%s:::log-%s', pid, l));
- }
-
- if (rval.length != 0)
- return rval.join(',');
-
- warn('bunyan: error: level (%d) exceeds maximum logging level',
- opts.level);
- return drainStdoutAndExit(1);
- }).join(',');
- var argv = ['dtrace', '-Z', '-x', 'strsize=4k',
- '-x', 'switchrate=10hz', '-qn',
- format('%s{printf("%s", copyinstr(arg0))}', probes)];
- //console.log('dtrace argv: %s', argv);
- var dtrace = spawn(argv[0], argv.slice(1),
- // Share the stderr handle to have error output come
- // straight through. Only supported in v0.8+.
- {stdio: ['pipe', 'pipe', process.stderr]});
- dtrace.on('error', function (e) {
- if (e.syscall === 'spawn' && e.errno === 'ENOENT') {
- console.error('bunyan: error: could not spawn "dtrace" ' +
- '("bunyan -p" is only supported on platforms with dtrace)');
- } else {
- console.error('bunyan: error: unexpected dtrace error: %s', e);
- }
- callback(1);
- })
- child = dtrace; // intentionally global
-
- function finish(code) {
- if (leftover) {
- handleLogLine(null, leftover, opts, stylize);
- leftover = '';
- }
- callback(code);
- }
-
- dtrace.stdout.setEncoding('utf8');
- dtrace.stdout.on('data', function (chunk) {
- var lines = chunk.split(/\r\n|\n/);
- var length = lines.length;
- if (length === 1) {
- leftover += lines[0];
- return;
- }
- if (length > 1) {
- handleLogLine(null, leftover + lines[0], opts, stylize);
- }
- leftover = lines.pop();
- length -= 1;
- for (var i = 1; i < length; i++) {
- handleLogLine(null, lines[i], opts, stylize);
- }
- });
-
- if (nodeSpawnSupportsStdio) {
- dtrace.on('exit', finish);
- } else {
- // Fallback (for < v0.8) to pipe the dtrace process' stderr to
- // this stderr. Wait for all of (1) process 'exit', (2) stderr
- // 'end', and (2) stdout 'end' before returning to ensure all
- // stderr is flushed (issue #54).
- var returnCode = null;
- var eventsRemaining = 3;
- function countdownToFinish(code) {
- returnCode = code;
- eventsRemaining--;
- if (eventsRemaining == 0) {
- finish(returnCode);
- }
- }
- dtrace.stderr.pipe(process.stderr);
- dtrace.stderr.on('end', countdownToFinish);
- dtrace.stderr.on('end', countdownToFinish);
- dtrace.on('exit', countdownToFinish);
- }
- });
-}
-
-
-/**
- * Process all input from the given log file.
- *
- * @param file {String} Log file path to process.
- * @params opts {Object} Bunyan options object.
- * @param stylize {Function} Output stylize function to use.
- * @param callback {Function} `function ()`
- */
-function processFile(file, opts, stylize, callback) {
- var stream = fs.createReadStream(file);
- if (/\.gz$/.test(file)) {
- stream = stream.pipe(require('zlib').createGunzip());
- }
- // Manually decode streams - lazy load here as per node/lib/fs.js
- var decoder = new (require('string_decoder').StringDecoder)('utf8');
-
- streams[file].stream = stream;
-
- stream.on('error', function (err) {
- streams[file].done = true;
- callback(err);
- });
-
- var leftover = ''; // Left-over partial line from last chunk.
- stream.on('data', function (data) {
- var chunk = decoder.write(data);
- if (!chunk.length) {
- return;
- }
- var lines = chunk.split(/\r\n|\n/);
- var length = lines.length;
- if (length === 1) {
- leftover += lines[0];
- return;
- }
-
- if (length > 1) {
- handleLogLine(file, leftover + lines[0], opts, stylize);
- }
- leftover = lines.pop();
- length -= 1;
- for (var i = 1; i < length; i++) {
- handleLogLine(file, lines[i], opts, stylize);
- }
- });
-
- stream.on('end', function () {
- streams[file].done = true;
- if (leftover) {
- handleLogLine(file, leftover, opts, stylize);
- leftover = '';
- } else {
- emitNextRecord(opts, stylize);
- }
- callback();
- });
-}
-
-
-/**
- * From node async module.
- */
-/* BEGIN JSSTYLED */
-function asyncForEach(arr, iterator, callback) {
- callback = callback || function () {};
- if (!arr.length) {
- return callback();
- }
- var completed = 0;
- arr.forEach(function (x) {
- iterator(x, function (err) {
- if (err) {
- callback(err);
- callback = function () {};
- }
- else {
- completed += 1;
- if (completed === arr.length) {
- callback();
- }
- }
- });
- });
-};
-/* END JSSTYLED */
-
-
-
-/**
- * Cleanup and exit properly.
- *
- * Warning: this doesn't stop processing, i.e. process exit might be delayed.
- * It is up to the caller to ensure that no subsequent bunyan processing
- * is done after calling this.
- *
- * @param code {Number} exit code.
- * @param signal {String} Optional signal name, if this was exitting because
- * of a signal.
- */
-var cleanedUp = false;
-function cleanupAndExit(code, signal) {
- // Guard one call.
- if (cleanedUp) {
- return;
- }
- cleanedUp = true;
- if (_DEBUG) warn('(bunyan: cleanupAndExit)');
-
- // Clear possibly interrupted ANSI code (issue #59).
- if (usingAnsiCodes) {
- stdout.write('\033[0m');
- }
-
- // Kill possible dtrace child.
- if (child) {
- child.kill(signal);
- }
-
- if (pager) {
- // Let pager know that output is done, then wait for pager to exit.
- stdout.end();
- pager.on('exit', function (pagerCode) {
- if (_DEBUG)
- warn('(bunyan: pager exit -> process.exit(%s))',
- pagerCode || code);
- process.exit(pagerCode || code);
- });
- } else {
- if (_DEBUG) warn('(bunyan: process.exit(%s))', code);
- process.exit(code);
- }
-}
-
-
-
-//---- mainline
-
-process.on('SIGINT', function () {
- /**
- * Ignore SIGINT (Ctrl+C) if processing stdin -- we should process
- * remaining output from preceding process in the pipeline and
- * except *it* to close.
- */
- if (!readingStdin) {
- cleanupAndExit(1, 'SIGINT');
- }
-});
-process.on('SIGQUIT', function () { cleanupAndExit(1, 'SIGQUIT'); });
-process.on('SIGTERM', function () { cleanupAndExit(1, 'SIGTERM'); });
-process.on('SIGHUP', function () { cleanupAndExit(1, 'SIGHUP'); });
-
-process.on('uncaughtException', function (err) {
- function _indent(s) {
- var lines = s.split(/\r?\n/);
- for (var i = 0; i < lines.length; i++) {
- lines[i] = '* ' + lines[i];
- }
- return lines.join('\n');
- }
-
- var title = encodeURIComponent(format(
- 'Bunyan %s crashed: %s', getVersion(), String(err)));
- var e = console.error;
- e('```');
- e('* The Bunyan CLI crashed!');
- e('*');
- if (err.name === 'ReferenceError' && gUsingConditionOpts) {
- /* BEGIN JSSTYLED */
- e('* This crash was due to a "ReferenceError", which is often the result of given');
- e('* `-c CONDITION` code that doesn\'t guard against undefined values. If that is');
- /* END JSSTYLED */
- e('* not the problem:');
- e('*');
- }
- e('* Please report this issue and include the details below:');
- e('*');
- e('* https://github.com/trentm/node-bunyan/issues/new?title=%s', title);
- e('*');
- e('* * *');
- e('* platform:', process.platform);
- e('* node version:', process.version);
- e('* bunyan version:', getVersion());
- e('* argv: %j', process.argv);
- e('* log line: %j', currLine);
- e('* stack:');
- e(_indent(err.stack));
- e('```');
- process.exit(1);
-});
-
-
-function main(argv) {
- try {
- var opts = parseArgv(argv);
- } catch (e) {
- warn('bunyan: error: %s', e.message);
- return drainStdoutAndExit(1);
- }
- if (opts.help) {
- printHelp();
- return;
- }
- if (opts.version) {
- console.log('bunyan ' + getVersion());
- return;
- }
- if (opts.pid && opts.args.length > 0) {
- warn('bunyan: error: can\'t use both "-p PID" (%s) and file (%s) args',
- opts.pid, opts.args.join(' '));
- return drainStdoutAndExit(1);
- }
- if (opts.color === null) {
- if (process.env.BUNYAN_NO_COLOR &&
- process.env.BUNYAN_NO_COLOR.length > 0) {
- opts.color = false;
- } else {
- opts.color = process.stdout.isTTY;
- }
- }
- usingAnsiCodes = opts.color; // intentionally global
- var stylize = (opts.color ? stylizeWithColor : stylizeWithoutColor);
-
- // Pager.
- var paginate = (
- process.stdout.isTTY &&
- process.stdin.isTTY &&
- !opts.pids && // Don't page if following process output.
- opts.args.length > 0 && // Don't page if no file args to process.
- process.platform !== 'win32' &&
- (nodeVer[0] > 0 || nodeVer[1] >= 8) &&
- (opts.paginate === true ||
- (opts.paginate !== false &&
- (!process.env.BUNYAN_NO_PAGER ||
- process.env.BUNYAN_NO_PAGER.length === 0))));
- if (paginate) {
- var pagerCmd = process.env.PAGER || 'less';
- /* JSSTYLED */
- assert.ok(pagerCmd.indexOf('"') === -1 && pagerCmd.indexOf("'") === -1,
- 'cannot parse PAGER quotes yet');
- var argv = pagerCmd.split(/\s+/g);
- var env = objCopy(process.env);
- if (env.LESS === undefined) {
- // git's default is LESS=FRSX. I don't like the 'S' here because
- // lines are *typically* wide with bunyan output and scrolling
- // horizontally is a royal pain. Note a bug in Mac's `less -F`,
- // such that SIGWINCH can kill it. If that rears too much then
- // I'll remove 'F' from here.
- env.LESS = 'FRX';
- }
- if (_DEBUG) warn('(pager: argv=%j, env.LESS=%j)', argv, env.LESS);
- // `pager` and `stdout` intentionally global.
- pager = spawn(argv[0], argv.slice(1),
- // Share the stderr handle to have error output come
- // straight through. Only supported in v0.8+.
- {env: env, stdio: ['pipe', 1, 2]});
- stdout = pager.stdin;
-
- // Early termination of the pager: just stop.
- pager.on('exit', function (pagerCode) {
- if (_DEBUG) warn('(bunyan: pager exit)');
- pager = null;
- stdout.end()
- stdout = process.stdout;
- cleanupAndExit(pagerCode);
- });
- }
-
- // Stdout error handling. (Couldn't setup until `stdout` was determined.)
- stdout.on('error', function (err) {
- if (_DEBUG) warn('(stdout error event: %s)', err);
- if (err.code === 'EPIPE') {
- drainStdoutAndExit(0);
- } else if (err.toString() === 'Error: This socket is closed.') {
- // Could get this if the pager closes its stdin, but hasn't
- // exited yet.
- drainStdoutAndExit(1);
- } else {
- warn(err);
- drainStdoutAndExit(1);
- }
- });
-
- var retval = 0;
- if (opts.pids) {
- processPids(opts, stylize, function (code) {
- cleanupAndExit(code);
- });
- } else if (opts.args.length > 0) {
- var files = opts.args;
- files.forEach(function (file) {
- streams[file] = { stream: null, records: [], done: false }
- });
- asyncForEach(files,
- function (file, next) {
- processFile(file, opts, stylize, function (err) {
- if (err) {
- warn('bunyan: %s', err.message);
- retval += 1;
- }
- next();
- });
- },
- function (err) {
- if (err) {
- warn('bunyan: unexpected error: %s', err.stack || err);
- return drainStdoutAndExit(1);
- }
- cleanupAndExit(retval);
- }
- );
- } else {
- processStdin(opts, stylize, function () {
- cleanupAndExit(retval);
- });
- }
-}
-
-if (require.main === module) {
- // HACK guard for <https://github.com/trentm/json/issues/24>.
- // We override the `process.stdout.end` guard that core node.js puts in
- // place. The real fix is that `.end()` shouldn't be called on stdout
- // in node core. Node v0.6.9 fixes that. Only guard for v0.6.0..v0.6.8.
- if ([0, 6, 0] <= nodeVer && nodeVer <= [0, 6, 8]) {
- var stdout = process.stdout;
- stdout.end = stdout.destroy = stdout.destroySoon = function () {
- /* pass */
- };
- }
-
- main(process.argv);
-}
diff --git a/node_modules/.bin/bunyan b/node_modules/.bin/bunyan
new file mode 120000
index 0000000..3555ac7
--- /dev/null
+++ b/node_modules/.bin/bunyan
@@ -0,0 +1 @@
+../bunyan/bin/bunyan
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/b0372a55/node_modules/.bin/escodegen
----------------------------------------------------------------------
diff --git a/node_modules/.bin/escodegen b/node_modules/.bin/escodegen
deleted file mode 100755
index a7c38aa..0000000
--- a/node_modules/.bin/escodegen
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/env node
-/*
- Copyright (C) 2012 Yusuke Suzuki <ut...@gmail.com>
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*jslint sloppy:true node:true */
-
-var fs = require('fs'),
- path = require('path'),
- root = path.join(path.dirname(fs.realpathSync(__filename)), '..'),
- esprima = require('esprima'),
- escodegen = require(root),
- optionator = require('optionator')({
- prepend: 'Usage: escodegen [options] file...',
- options: [
- {
- option: 'config',
- alias: 'c',
- type: 'String',
- description: 'configuration json for escodegen'
- }
- ]
- }),
- args = optionator.parse(process.argv),
- files = args._,
- options,
- esprimaOptions = {
- raw: true,
- tokens: true,
- range: true,
- comment: true
- };
-
-if (files.length === 0) {
- console.log(optionator.generateHelp());
- process.exit(1);
-}
-
-if (args.config) {
- try {
- options = JSON.parse(fs.readFileSync(args.config, 'utf-8'));
- } catch (err) {
- console.error('Error parsing config: ', err);
- }
-}
-
-files.forEach(function (filename) {
- var content = fs.readFileSync(filename, 'utf-8'),
- syntax = esprima.parse(content, esprimaOptions);
-
- if (options.comment) {
- escodegen.attachComments(syntax, syntax.comments, syntax.tokens);
- }
-
- console.log(escodegen.generate(syntax, options));
-});
-/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/node_modules/.bin/escodegen b/node_modules/.bin/escodegen
new file mode 120000
index 0000000..01a7c32
--- /dev/null
+++ b/node_modules/.bin/escodegen
@@ -0,0 +1 @@
+../escodegen/bin/escodegen.js
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/b0372a55/node_modules/.bin/esgenerate
----------------------------------------------------------------------
diff --git a/node_modules/.bin/esgenerate b/node_modules/.bin/esgenerate
deleted file mode 100755
index 449abcc..0000000
--- a/node_modules/.bin/esgenerate
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env node
-/*
- Copyright (C) 2012 Yusuke Suzuki <ut...@gmail.com>
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*jslint sloppy:true node:true */
-
-var fs = require('fs'),
- path = require('path'),
- root = path.join(path.dirname(fs.realpathSync(__filename)), '..'),
- escodegen = require(root),
- optionator = require('optionator')({
- prepend: 'Usage: esgenerate [options] file.json ...',
- options: [
- {
- option: 'config',
- alias: 'c',
- type: 'String',
- description: 'configuration json for escodegen'
- }
- ]
- }),
- args = optionator.parse(process.argv),
- files = args._,
- options;
-
-if (files.length === 0) {
- console.log(optionator.generateHelp());
- process.exit(1);
-}
-
-if (args.config) {
- try {
- options = JSON.parse(fs.readFileSync(args.config, 'utf-8'))
- } catch (err) {
- console.error('Error parsing config: ', err);
- }
-}
-
-files.forEach(function (filename) {
- var content = fs.readFileSync(filename, 'utf-8');
- console.log(escodegen.generate(JSON.parse(content), options));
-});
-/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/node_modules/.bin/esgenerate b/node_modules/.bin/esgenerate
new file mode 120000
index 0000000..7d0293e
--- /dev/null
+++ b/node_modules/.bin/esgenerate
@@ -0,0 +1 @@
+../escodegen/bin/esgenerate.js
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/b0372a55/node_modules/.bin/esparse
----------------------------------------------------------------------
diff --git a/node_modules/.bin/esparse b/node_modules/.bin/esparse
deleted file mode 100755
index 98bdbf4..0000000
--- a/node_modules/.bin/esparse
+++ /dev/null
@@ -1,126 +0,0 @@
-#!/usr/bin/env node
-/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*jslint sloppy:true node:true rhino:true */
-
-var fs, esprima, fname, content, options, syntax;
-
-if (typeof require === 'function') {
- fs = require('fs');
- esprima = require('esprima');
-} else if (typeof load === 'function') {
- try {
- load('esprima.js');
- } catch (e) {
- load('../esprima.js');
- }
-}
-
-// Shims to Node.js objects when running under Rhino.
-if (typeof console === 'undefined' && typeof process === 'undefined') {
- console = { log: print };
- fs = { readFileSync: readFile };
- process = { argv: arguments, exit: quit };
- process.argv.unshift('esparse.js');
- process.argv.unshift('rhino');
-}
-
-function showUsage() {
- console.log('Usage:');
- console.log(' esparse [options] file.js');
- console.log();
- console.log('Available options:');
- console.log();
- console.log(' --comment Gather all line and block comments in an array');
- console.log(' --loc Include line-column location info for each syntax node');
- console.log(' --range Include index-based range for each syntax node');
- console.log(' --raw Display the raw value of literals');
- console.log(' --tokens List all tokens in an array');
- console.log(' --tolerant Tolerate errors on a best-effort basis (experimental)');
- console.log(' -v, --version Shows program version');
- console.log();
- process.exit(1);
-}
-
-if (process.argv.length <= 2) {
- showUsage();
-}
-
-options = {};
-
-process.argv.splice(2).forEach(function (entry) {
-
- if (entry === '-h' || entry === '--help') {
- showUsage();
- } else if (entry === '-v' || entry === '--version') {
- console.log('ECMAScript Parser (using Esprima version', esprima.version, ')');
- console.log();
- process.exit(0);
- } else if (entry === '--comment') {
- options.comment = true;
- } else if (entry === '--loc') {
- options.loc = true;
- } else if (entry === '--range') {
- options.range = true;
- } else if (entry === '--raw') {
- options.raw = true;
- } else if (entry === '--tokens') {
- options.tokens = true;
- } else if (entry === '--tolerant') {
- options.tolerant = true;
- } else if (entry.slice(0, 2) === '--') {
- console.log('Error: unknown option ' + entry + '.');
- process.exit(1);
- } else if (typeof fname === 'string') {
- console.log('Error: more than one input file.');
- process.exit(1);
- } else {
- fname = entry;
- }
-});
-
-if (typeof fname !== 'string') {
- console.log('Error: no input file.');
- process.exit(1);
-}
-
-// Special handling for regular expression literal since we need to
-// convert it to a string literal, otherwise it will be decoded
-// as object "{}" and the regular expression would be lost.
-function adjustRegexLiteral(key, value) {
- if (key === 'value' && value instanceof RegExp) {
- value = value.toString();
- }
- return value;
-}
-
-try {
- content = fs.readFileSync(fname, 'utf-8');
- syntax = esprima.parse(content, options);
- console.log(JSON.stringify(syntax, adjustRegexLiteral, 4));
-} catch (e) {
- console.log('Error: ' + e.message);
- process.exit(1);
-}
diff --git a/node_modules/.bin/esparse b/node_modules/.bin/esparse
new file mode 120000
index 0000000..7423b18
--- /dev/null
+++ b/node_modules/.bin/esparse
@@ -0,0 +1 @@
+../esprima/bin/esparse.js
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/b0372a55/node_modules/.bin/esvalidate
----------------------------------------------------------------------
diff --git a/node_modules/.bin/esvalidate b/node_modules/.bin/esvalidate
deleted file mode 100755
index f522dec..0000000
--- a/node_modules/.bin/esvalidate
+++ /dev/null
@@ -1,199 +0,0 @@
-#!/usr/bin/env node
-/*
- Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*jslint sloppy:true plusplus:true node:true rhino:true */
-/*global phantom:true */
-
-var fs, system, esprima, options, fnames, count;
-
-if (typeof esprima === 'undefined') {
- // PhantomJS can only require() relative files
- if (typeof phantom === 'object') {
- fs = require('fs');
- system = require('system');
- esprima = require('./esprima');
- } else if (typeof require === 'function') {
- fs = require('fs');
- esprima = require('esprima');
- } else if (typeof load === 'function') {
- try {
- load('esprima.js');
- } catch (e) {
- load('../esprima.js');
- }
- }
-}
-
-// Shims to Node.js objects when running under PhantomJS 1.7+.
-if (typeof phantom === 'object') {
- fs.readFileSync = fs.read;
- process = {
- argv: [].slice.call(system.args),
- exit: phantom.exit
- };
- process.argv.unshift('phantomjs');
-}
-
-// Shims to Node.js objects when running under Rhino.
-if (typeof console === 'undefined' && typeof process === 'undefined') {
- console = { log: print };
- fs = { readFileSync: readFile };
- process = { argv: arguments, exit: quit };
- process.argv.unshift('esvalidate.js');
- process.argv.unshift('rhino');
-}
-
-function showUsage() {
- console.log('Usage:');
- console.log(' esvalidate [options] file.js');
- console.log();
- console.log('Available options:');
- console.log();
- console.log(' --format=type Set the report format, plain (default) or junit');
- console.log(' -v, --version Print program version');
- console.log();
- process.exit(1);
-}
-
-if (process.argv.length <= 2) {
- showUsage();
-}
-
-options = {
- format: 'plain'
-};
-
-fnames = [];
-
-process.argv.splice(2).forEach(function (entry) {
-
- if (entry === '-h' || entry === '--help') {
- showUsage();
- } else if (entry === '-v' || entry === '--version') {
- console.log('ECMAScript Validator (using Esprima version', esprima.version, ')');
- console.log();
- process.exit(0);
- } else if (entry.slice(0, 9) === '--format=') {
- options.format = entry.slice(9);
- if (options.format !== 'plain' && options.format !== 'junit') {
- console.log('Error: unknown report format ' + options.format + '.');
- process.exit(1);
- }
- } else if (entry.slice(0, 2) === '--') {
- console.log('Error: unknown option ' + entry + '.');
- process.exit(1);
- } else {
- fnames.push(entry);
- }
-});
-
-if (fnames.length === 0) {
- console.log('Error: no input file.');
- process.exit(1);
-}
-
-if (options.format === 'junit') {
- console.log('<?xml version="1.0" encoding="UTF-8"?>');
- console.log('<testsuites>');
-}
-
-count = 0;
-fnames.forEach(function (fname) {
- var content, timestamp, syntax, name;
- try {
- content = fs.readFileSync(fname, 'utf-8');
-
- if (content[0] === '#' && content[1] === '!') {
- content = '//' + content.substr(2, content.length);
- }
-
- timestamp = Date.now();
- syntax = esprima.parse(content, { tolerant: true });
-
- if (options.format === 'junit') {
-
- name = fname;
- if (name.lastIndexOf('/') >= 0) {
- name = name.slice(name.lastIndexOf('/') + 1);
- }
-
- console.log('<testsuite name="' + fname + '" errors="0" ' +
- ' failures="' + syntax.errors.length + '" ' +
- ' tests="' + syntax.errors.length + '" ' +
- ' time="' + Math.round((Date.now() - timestamp) / 1000) +
- '">');
-
- syntax.errors.forEach(function (error) {
- var msg = error.message;
- msg = msg.replace(/^Line\ [0-9]*\:\ /, '');
- console.log(' <testcase name="Line ' + error.lineNumber + ': ' + msg + '" ' +
- ' time="0">');
- console.log(' <error type="SyntaxError" message="' + error.message + '">' +
- error.message + '(' + name + ':' + error.lineNumber + ')' +
- '</error>');
- console.log(' </testcase>');
- });
-
- console.log('</testsuite>');
-
- } else if (options.format === 'plain') {
-
- syntax.errors.forEach(function (error) {
- var msg = error.message;
- msg = msg.replace(/^Line\ [0-9]*\:\ /, '');
- msg = fname + ':' + error.lineNumber + ': ' + msg;
- console.log(msg);
- ++count;
- });
-
- }
- } catch (e) {
- ++count;
- if (options.format === 'junit') {
- console.log('<testsuite name="' + fname + '" errors="1" failures="0" tests="1" ' +
- ' time="' + Math.round((Date.now() - timestamp) / 1000) + '">');
- console.log(' <testcase name="' + e.message + '" ' + ' time="0">');
- console.log(' <error type="ParseError" message="' + e.message + '">' +
- e.message + '(' + fname + ((e.lineNumber) ? ':' + e.lineNumber : '') +
- ')</error>');
- console.log(' </testcase>');
- console.log('</testsuite>');
- } else {
- console.log('Error: ' + e.message);
- }
- }
-});
-
-if (options.format === 'junit') {
- console.log('</testsuites>');
-}
-
-if (count > 0) {
- process.exit(1);
-}
-
-if (count === 0 && typeof phantom === 'object') {
- process.exit(0);
-}
diff --git a/node_modules/.bin/esvalidate b/node_modules/.bin/esvalidate
new file mode 120000
index 0000000..16069ef
--- /dev/null
+++ b/node_modules/.bin/esvalidate
@@ -0,0 +1 @@
+../esprima/bin/esvalidate.js
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/b0372a55/node_modules/.bin/hexo
----------------------------------------------------------------------
diff --git a/node_modules/.bin/hexo b/node_modules/.bin/hexo
deleted file mode 100755
index 7344e8d..0000000
--- a/node_modules/.bin/hexo
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env node
-
-'use strict';
-
-require('hexo-cli')();
diff --git a/node_modules/.bin/hexo b/node_modules/.bin/hexo
new file mode 120000
index 0000000..3efb5f2
--- /dev/null
+++ b/node_modules/.bin/hexo
@@ -0,0 +1 @@
+../hexo/bin/hexo
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/b0372a55/node_modules/.bin/js-yaml
----------------------------------------------------------------------
diff --git a/node_modules/.bin/js-yaml b/node_modules/.bin/js-yaml
deleted file mode 100755
index e79186b..0000000
--- a/node_modules/.bin/js-yaml
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/usr/bin/env node
-
-
-'use strict';
-
-/*eslint-disable no-console*/
-
-
-// stdlib
-var fs = require('fs');
-
-
-// 3rd-party
-var argparse = require('argparse');
-
-
-// internal
-var yaml = require('..');
-
-
-////////////////////////////////////////////////////////////////////////////////
-
-
-var cli = new argparse.ArgumentParser({
- prog: 'js-yaml',
- version: require('../package.json').version,
- addHelp: true
-});
-
-
-cli.addArgument([ '-c', '--compact' ], {
- help: 'Display errors in compact mode',
- action: 'storeTrue'
-});
-
-
-// deprecated (not needed after we removed output colors)
-// option suppressed, but not completely removed for compatibility
-cli.addArgument([ '-j', '--to-json' ], {
- help: argparse.Const.SUPPRESS,
- dest: 'json',
- action: 'storeTrue'
-});
-
-
-cli.addArgument([ '-t', '--trace' ], {
- help: 'Show stack trace on error',
- action: 'storeTrue'
-});
-
-cli.addArgument([ 'file' ], {
- help: 'File to read, utf-8 encoded without BOM',
- nargs: '?',
- defaultValue: '-'
-});
-
-
-////////////////////////////////////////////////////////////////////////////////
-
-
-var options = cli.parseArgs();
-
-
-////////////////////////////////////////////////////////////////////////////////
-
-function readFile(filename, encoding, callback) {
- if (options.file === '-') {
- // read from stdin
-
- var chunks = [];
-
- process.stdin.on('data', function (chunk) {
- chunks.push(chunk);
- });
-
- process.stdin.on('end', function () {
- return callback(null, Buffer.concat(chunks).toString(encoding));
- });
- } else {
- fs.readFile(filename, encoding, callback);
- }
-}
-
-readFile(options.file, 'utf8', function (error, input) {
- var output, isYaml;
-
- if (error) {
- if (error.code === 'ENOENT') {
- console.error('File not found: ' + options.file);
- process.exit(2);
- }
-
- console.error(
- options.trace && error.stack ||
- error.message ||
- String(error));
-
- process.exit(1);
- }
-
- try {
- output = JSON.parse(input);
- isYaml = false;
- } catch (err) {
- if (err instanceof SyntaxError) {
- try {
- output = [];
- yaml.loadAll(input, function (doc) { output.push(doc); }, {});
- isYaml = true;
-
- if (output.length === 0) output = null;
- else if (output.length === 1) output = output[0];
-
- } catch (e) {
- if (options.trace && err.stack) console.error(e.stack);
- else console.error(e.toString(options.compact));
-
- process.exit(1);
- }
- } else {
- console.error(
- options.trace && err.stack ||
- err.message ||
- String(err));
-
- process.exit(1);
- }
- }
-
- if (isYaml) console.log(JSON.stringify(output, null, ' '));
- else console.log(yaml.dump(output));
-});
diff --git a/node_modules/.bin/js-yaml b/node_modules/.bin/js-yaml
new file mode 120000
index 0000000..9dbd010
--- /dev/null
+++ b/node_modules/.bin/js-yaml
@@ -0,0 +1 @@
+../js-yaml/bin/js-yaml.js
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/b0372a55/node_modules/.bin/marked
----------------------------------------------------------------------
diff --git a/node_modules/.bin/marked b/node_modules/.bin/marked
deleted file mode 100755
index 64254fc..0000000
--- a/node_modules/.bin/marked
+++ /dev/null
@@ -1,187 +0,0 @@
-#!/usr/bin/env node
-
-/**
- * Marked CLI
- * Copyright (c) 2011-2013, Christopher Jeffrey (MIT License)
- */
-
-var fs = require('fs')
- , util = require('util')
- , marked = require('../');
-
-/**
- * Man Page
- */
-
-function help() {
- var spawn = require('child_process').spawn;
-
- var options = {
- cwd: process.cwd(),
- env: process.env,
- setsid: false,
- customFds: [0, 1, 2]
- };
-
- spawn('man',
- [__dirname + '/../man/marked.1'],
- options);
-}
-
-/**
- * Main
- */
-
-function main(argv, callback) {
- var files = []
- , options = {}
- , input
- , output
- , arg
- , tokens
- , opt;
-
- function getarg() {
- var arg = argv.shift();
-
- if (arg.indexOf('--') === 0) {
- // e.g. --opt
- arg = arg.split('=');
- if (arg.length > 1) {
- // e.g. --opt=val
- argv.unshift(arg.slice(1).join('='));
- }
- arg = arg[0];
- } else if (arg[0] === '-') {
- if (arg.length > 2) {
- // e.g. -abc
- argv = arg.substring(1).split('').map(function(ch) {
- return '-' + ch;
- }).concat(argv);
- arg = argv.shift();
- } else {
- // e.g. -a
- }
- } else {
- // e.g. foo
- }
-
- return arg;
- }
-
- while (argv.length) {
- arg = getarg();
- switch (arg) {
- case '--test':
- return require('../test').main(process.argv.slice());
- case '-o':
- case '--output':
- output = argv.shift();
- break;
- case '-i':
- case '--input':
- input = argv.shift();
- break;
- case '-t':
- case '--tokens':
- tokens = true;
- break;
- case '-h':
- case '--help':
- return help();
- default:
- if (arg.indexOf('--') === 0) {
- opt = camelize(arg.replace(/^--(no-)?/, ''));
- if (!marked.defaults.hasOwnProperty(opt)) {
- continue;
- }
- if (arg.indexOf('--no-') === 0) {
- options[opt] = typeof marked.defaults[opt] !== 'boolean'
- ? null
- : false;
- } else {
- options[opt] = typeof marked.defaults[opt] !== 'boolean'
- ? argv.shift()
- : true;
- }
- } else {
- files.push(arg);
- }
- break;
- }
- }
-
- function getData(callback) {
- if (!input) {
- if (files.length <= 2) {
- return getStdin(callback);
- }
- input = files.pop();
- }
- return fs.readFile(input, 'utf8', callback);
- }
-
- return getData(function(err, data) {
- if (err) return callback(err);
-
- data = tokens
- ? JSON.stringify(marked.lexer(data, options), null, 2)
- : marked(data, options);
-
- if (!output) {
- process.stdout.write(data + '\n');
- return callback();
- }
-
- return fs.writeFile(output, data, callback);
- });
-}
-
-/**
- * Helpers
- */
-
-function getStdin(callback) {
- var stdin = process.stdin
- , buff = '';
-
- stdin.setEncoding('utf8');
-
- stdin.on('data', function(data) {
- buff += data;
- });
-
- stdin.on('error', function(err) {
- return callback(err);
- });
-
- stdin.on('end', function() {
- return callback(null, buff);
- });
-
- try {
- stdin.resume();
- } catch (e) {
- callback(e);
- }
-}
-
-function camelize(text) {
- return text.replace(/(\w)-(\w)/g, function(_, a, b) {
- return a + b.toUpperCase();
- });
-}
-
-/**
- * Expose / Entry Point
- */
-
-if (!module.parent) {
- process.title = 'marked';
- main(process.argv.slice(), function(err, code) {
- if (err) throw err;
- return process.exit(code || 0);
- });
-} else {
- module.exports = main;
-}
diff --git a/node_modules/.bin/marked b/node_modules/.bin/marked
new file mode 120000
index 0000000..a8d872e
--- /dev/null
+++ b/node_modules/.bin/marked
@@ -0,0 +1 @@
+../marked/bin/marked
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/b0372a55/node_modules/.bin/md2html
----------------------------------------------------------------------
diff --git a/node_modules/.bin/md2html b/node_modules/.bin/md2html
deleted file mode 100755
index f8ce1dd..0000000
--- a/node_modules/.bin/md2html
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/env node
-(function () {
- "use strict";
-
- var fs = require("fs")
- , markdown = require("markdown").markdown
- , nopt = require("nopt")
- , stream
- , opts
- , buffer = ""
- ;
-
- opts = nopt(
- { "dialect": [ "Gruber", "Maruku"]
- , "help": Boolean
- }
- );
-
- if (opts.help) {
- var name = process.argv[1].split("/").pop()
- console.warn( require("util").format(
- "usage: %s [--dialect=DIALECT] FILE\n\nValid dialects are Gruber (the default) or Maruku",
- name
- ) );
- process.exit(0);
- }
-
- var fullpath = opts.argv.remain[0];
-
- if (fullpath && fullpath !== "-") {
- stream = fs.createReadStream(fullpath);
- } else {
- stream = process.stdin;
- }
- stream.resume();
- stream.setEncoding("utf8");
-
- stream.on("error", function(error) {
- console.error(error.toString());
- process.exit(1);
- });
-
- stream.on("data", function(data) {
- buffer += data;
- });
-
- stream.on("end", function() {
- var html = markdown.toHTML(buffer, opts.dialect);
- console.log(html);
- });
-
-}())
diff --git a/node_modules/.bin/md2html b/node_modules/.bin/md2html
new file mode 120000
index 0000000..ebcab9a
--- /dev/null
+++ b/node_modules/.bin/md2html
@@ -0,0 +1 @@
+../markdown/bin/md2html.js
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/b0372a55/node_modules/.bin/mime
----------------------------------------------------------------------
diff --git a/node_modules/.bin/mime b/node_modules/.bin/mime
deleted file mode 100755
index 20b1ffe..0000000
--- a/node_modules/.bin/mime
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env node
-
-var mime = require('./mime.js');
-var file = process.argv[2];
-var type = mime.lookup(file);
-
-process.stdout.write(type + '\n');
-
diff --git a/node_modules/.bin/mime b/node_modules/.bin/mime
new file mode 120000
index 0000000..fbb7ee0
--- /dev/null
+++ b/node_modules/.bin/mime
@@ -0,0 +1 @@
+../mime/cli.js
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/b0372a55/node_modules/.bin/mkdirp
----------------------------------------------------------------------
diff --git a/node_modules/.bin/mkdirp b/node_modules/.bin/mkdirp
deleted file mode 100755
index d95de15..0000000
--- a/node_modules/.bin/mkdirp
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env node
-
-var mkdirp = require('../');
-var minimist = require('minimist');
-var fs = require('fs');
-
-var argv = minimist(process.argv.slice(2), {
- alias: { m: 'mode', h: 'help' },
- string: [ 'mode' ]
-});
-if (argv.help) {
- fs.createReadStream(__dirname + '/usage.txt').pipe(process.stdout);
- return;
-}
-
-var paths = argv._.slice();
-var mode = argv.mode ? parseInt(argv.mode, 8) : undefined;
-
-(function next () {
- if (paths.length === 0) return;
- var p = paths.shift();
-
- if (mode === undefined) mkdirp(p, cb)
- else mkdirp(p, mode, cb)
-
- function cb (err) {
- if (err) {
- console.error(err.message);
- process.exit(1);
- }
- else next();
- }
-})();
diff --git a/node_modules/.bin/mkdirp b/node_modules/.bin/mkdirp
new file mode 120000
index 0000000..017896c
--- /dev/null
+++ b/node_modules/.bin/mkdirp
@@ -0,0 +1 @@
+../mkdirp/bin/cmd.js
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/b0372a55/node_modules/.bin/ncp
----------------------------------------------------------------------
diff --git a/node_modules/.bin/ncp b/node_modules/.bin/ncp
deleted file mode 100755
index 388eaba..0000000
--- a/node_modules/.bin/ncp
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env node
-
-
-
-
-var ncp = require('../lib/ncp'),
- args = process.argv.slice(2),
- source, dest;
-
-if (args.length < 2) {
- console.error('Usage: ncp [source] [destination] [--filter=filter] [--limit=concurrency limit]');
- process.exit(1);
-}
-
-// parse arguments the hard way
-function startsWith(str, prefix) {
- return str.substr(0, prefix.length) == prefix;
-}
-
-var options = {};
-args.forEach(function (arg) {
- if (startsWith(arg, "--limit=")) {
- options.limit = parseInt(arg.split('=', 2)[1], 10);
- }
- if (startsWith(arg, "--filter=")) {
- options.filter = new RegExp(arg.split('=', 2)[1]);
- }
- if (startsWith(arg, "--stoponerr")) {
- options.stopOnErr = true;
- }
-});
-
-ncp.ncp(args[0], args[1], options, function (err) {
- if (Array.isArray(err)) {
- console.error('There were errors during the copy.');
- err.forEach(function (err) {
- console.error(err.stack || err.message);
- });
- process.exit(1);
- }
- else if (err) {
- console.error('An error has occurred.');
- console.error(err.stack || err.message);
- process.exit(1);
- }
-});
-
-
diff --git a/node_modules/.bin/ncp b/node_modules/.bin/ncp
new file mode 120000
index 0000000..1c02648
--- /dev/null
+++ b/node_modules/.bin/ncp
@@ -0,0 +1 @@
+../ncp/bin/ncp
\ No newline at end of file