http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/fixtures/couch_sample.json ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/fixtures/couch_sample.json b/node_modules/JSONStream/test/fixtures/couch_sample.json new file mode 100644 index 0000000..b154c86 --- /dev/null +++ b/node_modules/JSONStream/test/fixtures/couch_sample.json @@ -0,0 +1,18 @@ +{"total_rows":129,"offset":0,"rows":[ + { "id":"change1_0.6995461115147918" + , "key":"change1_0.6995461115147918" + , "value":{"rev":"1-e240bae28c7bb3667f02760f6398d508"} + , "doc":{ + "_id": "change1_0.6995461115147918" + , "_rev": "1-e240bae28c7bb3667f02760f6398d508","hello":1} + }, + { "id":"change2_0.6995461115147918" + , "key":"change2_0.6995461115147918" + , "value":{"rev":"1-13677d36b98c0c075145bb8975105153"} + , "doc":{ + "_id":"change2_0.6995461115147918" + , "_rev":"1-13677d36b98c0c075145bb8975105153" + , "hello":2 + } + }, +]}
http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/fixtures/depth.json ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/fixtures/depth.json b/node_modules/JSONStream/test/fixtures/depth.json new file mode 100644 index 0000000..868062f --- /dev/null +++ b/node_modules/JSONStream/test/fixtures/depth.json @@ -0,0 +1,15 @@ +{ + "total": 5, + "docs": [ + { + "key": { + "value": 0, + "some": "property" + } + }, + {"value": 1}, + {"value": 2}, + {"blbl": [{}, {"a":0, "b":1, "value":3}, 10]}, + {"value": 4} + ] +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/fixtures/error.json ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/fixtures/error.json b/node_modules/JSONStream/test/fixtures/error.json new file mode 100644 index 0000000..9736f3e --- /dev/null +++ b/node_modules/JSONStream/test/fixtures/error.json @@ -0,0 +1 @@ +{"error": "error_code", "message": "this is an error message"} http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/fixtures/header_footer.json ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/fixtures/header_footer.json b/node_modules/JSONStream/test/fixtures/header_footer.json new file mode 100644 index 0000000..6e4694d --- /dev/null +++ b/node_modules/JSONStream/test/fixtures/header_footer.json @@ -0,0 +1,19 @@ +{"total_rows":129,"offset":0,"rows":[ + { "id":"change1_0.6995461115147918" + , "key":"change1_0.6995461115147918" + , "value":{"rev":"1-e240bae28c7bb3667f02760f6398d508"} + , "doc":{ + "_id": "change1_0.6995461115147918" + , "_rev": "1-e240bae28c7bb3667f02760f6398d508","hello":1} + }, + { "id":"change2_0.6995461115147918" + , "key":"change2_0.6995461115147918" + , "value":{"rev":"1-13677d36b98c0c075145bb8975105153"} + , "doc":{ + "_id":"change2_0.6995461115147918" + , "_rev":"1-13677d36b98c0c075145bb8975105153" + , "hello":2 + } + } +], +"foo": {"bar": "baz"}} http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/fn.js ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/fn.js b/node_modules/JSONStream/test/fn.js new file mode 100644 index 0000000..4acc672 --- /dev/null +++ b/node_modules/JSONStream/test/fn.js @@ -0,0 +1,39 @@ + + +var fs = require ('fs') + , join = require('path').join + , file = join(__dirname, 'fixtures','all_npm.json') + , JSONStream = require('../') + , it = require('it-is') + +function fn (s) { + return !isNaN(parseInt(s, 10)) +} + +var expected = JSON.parse(fs.readFileSync(file)) + , parser = JSONStream.parse(['rows', fn]) + , called = 0 + , ended = false + , parsed = [] + +fs.createReadStream(file).pipe(parser) + +parser.on('data', function (data) { + called ++ + it.has({ + id: it.typeof('string'), + value: {rev: it.typeof('string')}, + key:it.typeof('string') + }) + parsed.push(data) +}) + +parser.on('end', function () { + ended = true +}) + +process.on('exit', function () { + it(called).equal(expected.rows.length) + it(parsed).deepEqual(expected.rows) + console.error('PASSED') +}) http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/gen.js ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/gen.js b/node_modules/JSONStream/test/gen.js new file mode 100644 index 0000000..c233722 --- /dev/null +++ b/node_modules/JSONStream/test/gen.js @@ -0,0 +1,135 @@ +return // dont run this test for now since tape is weird and broken on 0.10 + +var fs = require('fs') +var JSONStream = require('../') +var file = process.argv[2] || '/tmp/JSONStream-test-large.json' +var size = Number(process.argv[3] || 100000) +var tape = require('tape') +// if (process.title !== 'browser') { + tape('out of mem', function (t) { + t.plan(1) + ////////////////////////////////////////////////////// + // Produces a random number between arg1 and arg2 + ////////////////////////////////////////////////////// + var randomNumber = function (min, max) { + var number = Math.floor(Math.random() * (max - min + 1) + min); + return number; + }; + + ////////////////////////////////////////////////////// + // Produces a random string of a length between arg1 and arg2 + ////////////////////////////////////////////////////// + var randomString = function (min, max) { + + // add several spaces to increase chanses of creating 'words' + var chars = ' 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + var result = ''; + + var randomLength = randomNumber(min, max); + + for (var i = randomLength; i > 0; --i) { + result += chars[Math.round(Math.random() * (chars.length - 1))]; + } + return result; + }; + + ////////////////////////////////////////////////////// + // Produces a random JSON document, as a string + ////////////////////////////////////////////////////// + var randomJsonDoc = function () { + + var doc = { + "CrashOccurenceID": randomNumber(10000, 50000), + "CrashID": randomNumber(1000, 10000), + "SiteName": randomString(10, 25), + "MachineName": randomString(10, 25), + "Date": randomString(26, 26), + "ProcessDuration": randomString(18, 18), + "ThreadIdentityName": null, + "WindowsIdentityName": randomString(15, 40), + "OperatingSystemName": randomString(35, 65), + "DetailedExceptionInformation": randomString(100, 800) + }; + + doc = JSON.stringify(doc); + doc = doc.replace(/\,/g, ',\n'); // add new lines after each attribute + return doc; + }; + + ////////////////////////////////////////////////////// + // generates test data + ////////////////////////////////////////////////////// + var generateTestData = function (cb) { + + console.log('generating large data file...'); + + var stream = fs.createWriteStream(file, { + encoding: 'utf8' + }); + + var i = 0; + var max = size; + var writing = false + var split = ',\n'; + var doc = randomJsonDoc(); + stream.write('['); + + function write () { + if(writing) return + writing = true + while(++i < max) { + if(Math.random() < 0.001) + console.log('generate..', i + ' / ' + size) + if(!stream.write(doc + split)) { + writing = false + return stream.once('drain', write) + } + } + stream.write(doc + ']') + stream.end(); + console.log('END') + } + write() + stream.on('close', cb) + }; + + ////////////////////////////////////////////////////// + // Shows that parsing 100000 instances using JSONStream fails + // + // After several seconds, you will get this crash + // FATAL ERROR: JS Allocation failed - process out of memory + ////////////////////////////////////////////////////// + var testJSONStreamParse_causesOutOfMem = function (done) { + var items = 0 + console.log('parsing data files using JSONStream...'); + + var parser = JSONStream.parse([true]); + var stream = fs.createReadStream(file); + stream.pipe(parser); + + parser.on('data', function (data) { + items++ + if(Math.random() < 0.01) console.log(items, '...') + }); + + parser.on('end', function () { + t.equal(items, size) + }); + + }; + + ////////////////////////////////////////////////////// + // main + ////////////////////////////////////////////////////// + + fs.stat(file, function (err, stat) { + console.log(stat) + if(err) + generateTestData(testJSONStreamParse_causesOutOfMem); + else + testJSONStreamParse_causesOutOfMem() + }) + + }) + +// } http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/header_footer.js ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/header_footer.js b/node_modules/JSONStream/test/header_footer.js new file mode 100644 index 0000000..f18fc59 --- /dev/null +++ b/node_modules/JSONStream/test/header_footer.js @@ -0,0 +1,55 @@ + + +var fs = require ('fs') + , join = require('path').join + , file = join(__dirname, 'fixtures','header_footer.json') + , JSONStream = require('../') + , it = require('it-is') + +var expected = JSON.parse(fs.readFileSync(file)) + , parser = JSONStream.parse(['rows', /\d+/ /*, 'value'*/]) + , called = 0 + , headerCalled = 0 + , footerCalled = 0 + , ended = false + , parsed = [] + +fs.createReadStream(file).pipe(parser) + +parser.on('header', function (data) { + headerCalled ++ + it(data).deepEqual({ + total_rows: 129, + offset: 0 + }) +}) + +parser.on('footer', function (data) { + footerCalled ++ + it(data).deepEqual({ + foo: { bar: 'baz' } + }) +}) + +parser.on('data', function (data) { + called ++ + it.has({ + id: it.typeof('string'), + value: {rev: it.typeof('string')}, + key:it.typeof('string') + }) + it(headerCalled).equal(1) + parsed.push(data) +}) + +parser.on('end', function () { + ended = true +}) + +process.on('exit', function () { + it(called).equal(expected.rows.length) + it(headerCalled).equal(1) + it(footerCalled).equal(1) + it(parsed).deepEqual(expected.rows) + console.error('PASSED') +}) http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/issues.js ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/issues.js b/node_modules/JSONStream/test/issues.js new file mode 100644 index 0000000..ea4c743 --- /dev/null +++ b/node_modules/JSONStream/test/issues.js @@ -0,0 +1,34 @@ +var JSONStream = require('../'); +var test = require('tape') + +test('#66', function (t) { + var error = 0; + var stream = JSONStream + .parse() + .on('error', function (err) { + t.ok(err); + error++; + }) + .on('end', function () { + t.ok(error === 1); + t.end(); + }); + + stream.write('["foo":bar['); + stream.end(); + +}); + +test('#81 - failure to parse nested objects', function (t) { + var stream = JSONStream + .parse('.bar.foo') + .on('error', function (err) { + t.error(err); + }) + .on('end', function () { + t.end(); + }); + + stream.write('{"bar":{"foo":"baz"}}'); + stream.end(); +}); http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/keys.js ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/keys.js b/node_modules/JSONStream/test/keys.js new file mode 100644 index 0000000..747723d --- /dev/null +++ b/node_modules/JSONStream/test/keys.js @@ -0,0 +1,105 @@ +var test = require('tape'); +var fs = require ('fs'); +var join = require('path').join; +var couch_sample_file = join(__dirname, 'fixtures','couch_sample.json'); +var JSONStream = require('../'); + +var fixture = { + obj: { + one: 1, + two: 2, + three: 3 + } +}; + +function assertFixtureKeys(stream, t) { + var keys = []; + var values = []; + stream.on('data', function(data) { + keys.push(data.key); + values.push(data.value); + }); + + stream.on('end', function() { + t.deepEqual(keys, ['one', 'two', 'three']); + t.deepEqual(values, [1,2,3]); + t.end(); + }); + stream.write(JSON.stringify(fixture)); + stream.end(); +} + +test('keys via string', function(t) { + var stream = JSONStream.parse('obj.$*'); + assertFixtureKeys(stream, t); +}); + +test('keys via array', function(t) { + var stream = JSONStream.parse(['obj',{emitKey: true}]); + assertFixtureKeys(stream, t); +}); + +test('path via array', function(t) { + var stream = JSONStream.parse(['obj',{emitPath: true}]); + + var paths = []; + var values = []; + stream.on('data', function(data) { + console.log(JSON.stringify(data)); + paths.push(data.path); + values.push(data.value); + }); + + stream.on('end', function() { + t.deepEqual(paths, [['obj', 'one'], ['obj', 'two'], ['obj', 'three']]); + t.deepEqual(values, [1,2,3]); + t.end(); + }); + stream.write(JSON.stringify(fixture)); + stream.end(); +}); + +test('advanced keys', function(t) { + var advanced = fs.readFileSync(couch_sample_file); + var stream = JSONStream.parse(['rows', true, 'doc', {emitKey: true}]); + + var keys = []; + var values = []; + stream.on('data', function(data) { + keys.push(data.key); + values.push(data.value); + }); + + stream.on('end', function() { + t.deepEqual(keys, [ + '_id', '_rev', 'hello', + '_id', '_rev', 'hello' + ]); + t.deepEqual(values, [ + "change1_0.6995461115147918", "1-e240bae28c7bb3667f02760f6398d508", 1, + "change2_0.6995461115147918", "1-13677d36b98c0c075145bb8975105153", 2 + ]); + t.end(); + }); + stream.write(advanced); + stream.end(); +}); + +test('parent keys', function(t) { + var stream = JSONStream.parse('$*'); + var d = null; + stream.on('data', function(data) { + if(d) t.fail('should only be called once'); + d = data; + }); + + stream.on('end', function() { + t.deepEqual(d,{ + key: 'obj', + value: fixture.obj + }); + t.end(); + }); + stream.write(JSON.stringify(fixture)); + stream.end(); +}) http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/map.js ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/map.js b/node_modules/JSONStream/test/map.js new file mode 100644 index 0000000..29b9d89 --- /dev/null +++ b/node_modules/JSONStream/test/map.js @@ -0,0 +1,40 @@ + +var test = require('tape') + +var JSONStream = require('../') + +test('map function', function (t) { + + var actual = [] + + stream = JSONStream.parse([true], function (e) { return e*10 }) + stream.on('data', function (v) { actual.push(v)}) + stream.on('end', function () { + t.deepEqual(actual, [10,20,30,40,50,60]) + t.end() + + }) + + stream.write(JSON.stringify([1,2,3,4,5,6], null, 2)) + stream.end() + +}) + +test('filter function', function (t) { + + var actual = [] + + stream = JSONStream + .parse([true], function (e) { return e%2 ? e : null}) + .on('data', function (v) { actual.push(v)}) + .on('end', function () { + t.deepEqual(actual, [1,3,5]) + t.end() + + }) + + stream.write(JSON.stringify([1,2,3,4,5,6], null, 2)) + stream.end() + +}) + http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/multiple_objects.js ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/multiple_objects.js b/node_modules/JSONStream/test/multiple_objects.js new file mode 100644 index 0000000..22f6324 --- /dev/null +++ b/node_modules/JSONStream/test/multiple_objects.js @@ -0,0 +1,36 @@ +var fs = require ('fs'); +var net = require('net'); +var join = require('path').join; +var file = join(__dirname, 'fixtures','all_npm.json'); +var it = require('it-is'); +var JSONStream = require('../'); + +var str = fs.readFileSync(file); + +var datas = {} + +var server = net.createServer(function(client) { + var data_calls = 0; + var parser = JSONStream.parse(['rows', true, 'key']); + parser.on('data', function(data) { + ++ data_calls; + datas[data] = (datas[data] || 0) + 1 + it(data).typeof('string') + }); + + parser.on('end', function() { + console.log('END') + var min = Infinity + for (var d in datas) + min = min > datas[d] ? datas[d] : min + it(min).equal(3); + server.close(); + }); + client.pipe(parser); +}); +server.listen(9999); + +var client = net.connect({ port : 9999 }, function() { + var msgs = str + ' ' + str + '\n\n' + str + client.end(msgs); +}); http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/multiple_objects_error.js ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/multiple_objects_error.js b/node_modules/JSONStream/test/multiple_objects_error.js new file mode 100644 index 0000000..83d113b --- /dev/null +++ b/node_modules/JSONStream/test/multiple_objects_error.js @@ -0,0 +1,29 @@ +var fs = require ('fs'); +var net = require('net'); +var join = require('path').join; +var file = join(__dirname, 'fixtures','all_npm.json'); +var it = require('it-is'); +var JSONStream = require('../'); + +var str = fs.readFileSync(file); + +var server = net.createServer(function(client) { + var data_calls = 0; + var parser = JSONStream.parse(); + parser.on('error', function(err) { + console.log(err); + server.close(); + }); + + parser.on('end', function() { + console.log('END'); + server.close(); + }); + client.pipe(parser); +}); +server.listen(9999); + +var client = net.connect({ port : 9999 }, function() { + var msgs = str + '}'; + client.end(msgs); +}); http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/null.js ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/null.js b/node_modules/JSONStream/test/null.js new file mode 100644 index 0000000..95dd60c --- /dev/null +++ b/node_modules/JSONStream/test/null.js @@ -0,0 +1,28 @@ +var JSONStream = require('../') + +var data = [ + {ID: 1, optional: null}, + {ID: 2, optional: null}, + {ID: 3, optional: 20}, + {ID: 4, optional: null}, + {ID: 5, optional: 'hello'}, + {ID: 6, optional: null} +] + + +var test = require('tape') + +test ('null properties', function (t) { + var actual = [] + var stream = + + JSONStream.parse('*.optional') + .on('data', function (v) { actual.push(v) }) + .on('end', function () { + t.deepEqual(actual, [20, 'hello']) + t.end() + }) + + stream.write(JSON.stringify(data, null, 2)) + stream.end() +}) http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/parsejson.js ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/parsejson.js b/node_modules/JSONStream/test/parsejson.js new file mode 100644 index 0000000..a943334 --- /dev/null +++ b/node_modules/JSONStream/test/parsejson.js @@ -0,0 +1,25 @@ + + +/* + sometimes jsonparse changes numbers slightly. +*/ + +var r = Math.random() + , Parser = require('jsonparse') + , p = new Parser() + , assert = require('assert') + , times = 20 +while (times --) { + + assert.equal(JSON.parse(JSON.stringify(r)), r, 'core JSON') + + p.onValue = function (v) { + console.error('parsed', v) + assert.equal(v,r) + } + console.error('correct', r) + p.write (new Buffer(JSON.stringify([r]))) + + + +} http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/stringify.js ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/stringify.js b/node_modules/JSONStream/test/stringify.js new file mode 100644 index 0000000..b6de85e --- /dev/null +++ b/node_modules/JSONStream/test/stringify.js @@ -0,0 +1,41 @@ + +var fs = require ('fs') + , join = require('path').join + , file = join(__dirname, 'fixtures','all_npm.json') + , JSONStream = require('../') + , it = require('it-is').style('colour') + + function randomObj () { + return ( + Math.random () < 0.4 + ? {hello: 'eonuhckmqjk', + whatever: 236515, + lies: true, + nothing: [null], + stuff: [Math.random(),Math.random(),Math.random()] + } + : ['AOREC', 'reoubaor', {ouec: 62642}, [[[], {}, 53]]] + ) + } + +var expected = [] + , stringify = JSONStream.stringify() + , es = require('event-stream') + , stringified = '' + , called = 0 + , count = 10 + , ended = false + +while (count --) + expected.push(randomObj()) + + es.connect( + es.readArray(expected), + stringify, + //JSONStream.parse([/./]), + es.writeArray(function (err, lines) { + + it(JSON.parse(lines.join(''))).deepEqual(expected) + console.error('PASSED') + }) + ) http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/stringify_object.js ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/stringify_object.js b/node_modules/JSONStream/test/stringify_object.js new file mode 100644 index 0000000..9490115 --- /dev/null +++ b/node_modules/JSONStream/test/stringify_object.js @@ -0,0 +1,47 @@ + +var fs = require ('fs') + , join = require('path').join + , file = join(__dirname, 'fixtures','all_npm.json') + , JSONStream = require('../') + , it = require('it-is').style('colour') + , es = require('event-stream') + , pending = 10 + , passed = true + + function randomObj () { + return ( + Math.random () < 0.4 + ? {hello: 'eonuhckmqjk', + whatever: 236515, + lies: true, + nothing: [null], + stuff: [Math.random(),Math.random(),Math.random()] + } + : ['AOREC', 'reoubaor', {ouec: 62642}, [[[], {}, 53]]] + ) + } + +for (var ix = 0; ix < pending; ix++) (function (count) { + var expected = {} + , stringify = JSONStream.stringifyObject() + + es.connect( + stringify, + es.writeArray(function (err, lines) { + it(JSON.parse(lines.join(''))).deepEqual(expected) + if (--pending === 0) { + console.error('PASSED') + } + }) + ) + + while (count --) { + var key = Math.random().toString(16).slice(2) + expected[key] = randomObj() + stringify.write([ key, expected[key] ]) + } + + process.nextTick(function () { + stringify.end() + }) +})(ix) http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/test.js ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/test.js b/node_modules/JSONStream/test/test.js new file mode 100644 index 0000000..8ea7c2e --- /dev/null +++ b/node_modules/JSONStream/test/test.js @@ -0,0 +1,35 @@ + + +var fs = require ('fs') + , join = require('path').join + , file = join(__dirname, 'fixtures','all_npm.json') + , JSONStream = require('../') + , it = require('it-is') + +var expected = JSON.parse(fs.readFileSync(file)) + , parser = JSONStream.parse(['rows', /\d+/ /*, 'value'*/]) + , called = 0 + , ended = false + , parsed = [] + +fs.createReadStream(file).pipe(parser) + +parser.on('data', function (data) { + called ++ + it.has({ + id: it.typeof('string'), + value: {rev: it.typeof('string')}, + key:it.typeof('string') + }) + parsed.push(data) +}) + +parser.on('end', function () { + ended = true +}) + +process.on('exit', function () { + it(called).equal(expected.rows.length) + it(parsed).deepEqual(expected.rows) + console.error('PASSED') +}) http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/test2.js ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/test2.js b/node_modules/JSONStream/test/test2.js new file mode 100644 index 0000000..d09df7b --- /dev/null +++ b/node_modules/JSONStream/test/test2.js @@ -0,0 +1,29 @@ + + +var fs = require ('fs') + , join = require('path').join + , file = join(__dirname, '..','package.json') + , JSONStream = require('../') + , it = require('it-is') + +var expected = JSON.parse(fs.readFileSync(file)) + , parser = JSONStream.parse([]) + , called = 0 + , ended = false + , parsed = [] + +fs.createReadStream(file).pipe(parser) + +parser.on('data', function (data) { + called ++ + it(data).deepEqual(expected) +}) + +parser.on('end', function () { + ended = true +}) + +process.on('exit', function () { + it(called).equal(1) + console.error('PASSED') +}) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/JSONStream/test/two-ways.js ---------------------------------------------------------------------- diff --git a/node_modules/JSONStream/test/two-ways.js b/node_modules/JSONStream/test/two-ways.js new file mode 100644 index 0000000..8f3b89c --- /dev/null +++ b/node_modules/JSONStream/test/two-ways.js @@ -0,0 +1,41 @@ + +var fs = require ('fs') + , join = require('path').join + , file = join(__dirname, 'fixtures','all_npm.json') + , JSONStream = require('../') + , it = require('it-is').style('colour') + + function randomObj () { + return ( + Math.random () < 0.4 + ? {hello: 'eonuhckmqjk', + whatever: 236515, + lies: true, + nothing: [null], +// stuff: [Math.random(),Math.random(),Math.random()] + } + : ['AOREC', 'reoubaor', {ouec: 62642}, [[[], {}, 53]]] + ) + } + +var expected = [] + , stringify = JSONStream.stringify() + , es = require('event-stream') + , stringified = '' + , called = 0 + , count = 10 + , ended = false + +while (count --) + expected.push(randomObj()) + + es.connect( + es.readArray(expected), + stringify, + JSONStream.parse([/./]), + es.writeArray(function (err, lines) { + + it(lines).has(expected) + console.error('PASSED') + }) + ) http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/abab/CHANGELOG.md ---------------------------------------------------------------------- diff --git a/node_modules/abab/CHANGELOG.md b/node_modules/abab/CHANGELOG.md new file mode 100644 index 0000000..3b16719 --- /dev/null +++ b/node_modules/abab/CHANGELOG.md @@ -0,0 +1,11 @@ +## 1.0.3 + +- Replaced `let` with `var` in `lib/btoa.js` + - Follow up from `1.0.2` + - Resolves https://github.com/jsdom/abab/issues/18 + +## 1.0.2 + +- Replaced `const` with `var` in `index.js` + - Allows use of `abab` in the browser without a transpilation step + - Resolves https://github.com/jsdom/abab/issues/15 http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/abab/README.md ---------------------------------------------------------------------- diff --git a/node_modules/abab/README.md b/node_modules/abab/README.md new file mode 100644 index 0000000..2d9c1b5 --- /dev/null +++ b/node_modules/abab/README.md @@ -0,0 +1,52 @@ +# abab + +[](https://www.npmjs.com/package/abab) [](https://travis-ci.org/jsdom/abab) + +A module that implements `window.atob` and `window.btoa` according to the [WHATWG spec](https://html.spec.whatwg.org/multipage/webappapis.html#atob). The code is originally from [w3c/web-platform-tests](https://github.com/w3c/web-platform-tests/blob/master/html/webappapis/atob/base64.html). + +Compatibility: Node.js version 3+ and all major browsers (using browserify or webpack) + +Install with `npm`: + +```sh +npm install abab +``` + +## API + +### `btoa` (base64 encode) + +```js +const btoa = require('abab').btoa; +btoa('Hello, world!'); // 'SGVsbG8sIHdvcmxkIQ==' +``` + +### `atob` (base64 decode) + +```js +const atob = require('abab').atob; +atob('SGVsbG8sIHdvcmxkIQ=='); // 'Hello, world!' +``` + +#### Valid characters + +[Per the spec](https://html.spec.whatwg.org/multipage/webappapis.html#atob:dom-windowbase64-btoa-3), `btoa` will accept strings "containing only characters in the range `U+0000` to `U+00FF`." If passed a string with characters above `U+00FF`, `btoa` will return `null`. If `atob` is passed a string that is not base64-valid, it will also return `null`. In both cases when `null` is returned, the spec calls for throwing a `DOMException` of type `InvalidCharacterError`. + +## Browsers + +If you want to include just one of the methods to save bytes in your client-side code, you can `require` the desired module directly. + +```js +var atob = require('abab/lib/atob'); +var btoa = require('abab/lib/btoa'); +``` + +----- + +### Checklists + +If you're **submitting a PR** or **deploying to npm**, please use the [checklists in CONTRIBUTING.md](https://github.com/jsdom/abab/blob/master/CONTRIBUTING.md#checklists) + +### Remembering `atob` vs. `btoa` + +Here's a mnemonic that might be useful: if you have a plain string and want to base64 encode it, then decode it, `btoa` is what you run before (**b**efore - **b**toa), and `atob` is what you run after (**a**fter - **a**tob). http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/abab/index.js ---------------------------------------------------------------------- diff --git a/node_modules/abab/index.js b/node_modules/abab/index.js new file mode 100644 index 0000000..16342c4 --- /dev/null +++ b/node_modules/abab/index.js @@ -0,0 +1,9 @@ +'use strict'; + +var atob = require('./lib/atob'); +var btoa = require('./lib/btoa'); + +module.exports = { + atob: atob, + btoa: btoa +}; http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/abab/lib/atob.js ---------------------------------------------------------------------- diff --git a/node_modules/abab/lib/atob.js b/node_modules/abab/lib/atob.js new file mode 100644 index 0000000..ba2528f --- /dev/null +++ b/node_modules/abab/lib/atob.js @@ -0,0 +1,109 @@ +'use strict'; + +/** + * Implementation of atob() according to the HTML spec, except that instead of + * throwing INVALID_CHARACTER_ERR we return null. + */ +function atob(input) { + // WebIDL requires DOMStrings to just be converted using ECMAScript + // ToString, which in our case amounts to calling String(). + input = String(input); + // "Remove all space characters from input." + input = input.replace(/[ \t\n\f\r]/g, ''); + // "If the length of input divides by 4 leaving no remainder, then: if + // input ends with one or two U+003D EQUALS SIGN (=) characters, remove + // them from input." + if (input.length % 4 == 0 && /==?$/.test(input)) { + input = input.replace(/==?$/, ''); + } + // "If the length of input divides by 4 leaving a remainder of 1, throw an + // INVALID_CHARACTER_ERR exception and abort these steps." + // + // "If input contains a character that is not in the following list of + // characters and character ranges, throw an INVALID_CHARACTER_ERR + // exception and abort these steps: + // + // U+002B PLUS SIGN (+) + // U+002F SOLIDUS (/) + // U+0030 DIGIT ZERO (0) to U+0039 DIGIT NINE (9) + // U+0041 LATIN CAPITAL LETTER A to U+005A LATIN CAPITAL LETTER Z + // U+0061 LATIN SMALL LETTER A to U+007A LATIN SMALL LETTER Z" + if (input.length % 4 == 1 || !/^[+/0-9A-Za-z]*$/.test(input)) { + return null; + } + // "Let output be a string, initially empty." + var output = ''; + // "Let buffer be a buffer that can have bits appended to it, initially + // empty." + // + // We append bits via left-shift and or. accumulatedBits is used to track + // when we've gotten to 24 bits. + var buffer = 0; + var accumulatedBits = 0; + // "While position does not point past the end of input, run these + // substeps:" + for (var i = 0; i < input.length; i++) { + // "Find the character pointed to by position in the first column of + // the following table. Let n be the number given in the second cell of + // the same row." + // + // "Append to buffer the six bits corresponding to number, most + // significant bit first." + // + // atobLookup() implements the table from the spec. + buffer <<= 6; + buffer |= atobLookup(input[i]); + // "If buffer has accumulated 24 bits, interpret them as three 8-bit + // big-endian numbers. Append the three characters with code points + // equal to those numbers to output, in the same order, and then empty + // buffer." + accumulatedBits += 6; + if (accumulatedBits == 24) { + output += String.fromCharCode((buffer & 0xff0000) >> 16); + output += String.fromCharCode((buffer & 0xff00) >> 8); + output += String.fromCharCode(buffer & 0xff); + buffer = accumulatedBits = 0; + } + // "Advance position by one character." + } + // "If buffer is not empty, it contains either 12 or 18 bits. If it + // contains 12 bits, discard the last four and interpret the remaining + // eight as an 8-bit big-endian number. If it contains 18 bits, discard the + // last two and interpret the remaining 16 as two 8-bit big-endian numbers. + // Append the one or two characters with code points equal to those one or + // two numbers to output, in the same order." + if (accumulatedBits == 12) { + buffer >>= 4; + output += String.fromCharCode(buffer); + } else if (accumulatedBits == 18) { + buffer >>= 2; + output += String.fromCharCode((buffer & 0xff00) >> 8); + output += String.fromCharCode(buffer & 0xff); + } + // "Return output." + return output; +} +/** + * A lookup table for atob(), which converts an ASCII character to the + * corresponding six-bit number. + */ +function atobLookup(chr) { + if (/[A-Z]/.test(chr)) { + return chr.charCodeAt(0) - 'A'.charCodeAt(0); + } + if (/[a-z]/.test(chr)) { + return chr.charCodeAt(0) - 'a'.charCodeAt(0) + 26; + } + if (/[0-9]/.test(chr)) { + return chr.charCodeAt(0) - '0'.charCodeAt(0) + 52; + } + if (chr == '+') { + return 62; + } + if (chr == '/') { + return 63; + } + // Throw exception; should not be hit in tests +} + +module.exports = atob; http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/abab/lib/btoa.js ---------------------------------------------------------------------- diff --git a/node_modules/abab/lib/btoa.js b/node_modules/abab/lib/btoa.js new file mode 100644 index 0000000..bc5b665 --- /dev/null +++ b/node_modules/abab/lib/btoa.js @@ -0,0 +1,65 @@ +'use strict'; + +/** + * btoa() as defined by the HTML5 spec, which mostly just references RFC4648. + */ +function btoa(s) { + var i; + // String conversion as required by WebIDL. + s = String(s); + // "The btoa() method must throw an INVALID_CHARACTER_ERR exception if the + // method's first argument contains any character whose code point is + // greater than U+00FF." + for (i = 0; i < s.length; i++) { + if (s.charCodeAt(i) > 255) { + return null; + } + } + var out = ''; + for (i = 0; i < s.length; i += 3) { + var groupsOfSix = [undefined, undefined, undefined, undefined]; + groupsOfSix[0] = s.charCodeAt(i) >> 2; + groupsOfSix[1] = (s.charCodeAt(i) & 0x03) << 4; + if (s.length > i + 1) { + groupsOfSix[1] |= s.charCodeAt(i + 1) >> 4; + groupsOfSix[2] = (s.charCodeAt(i + 1) & 0x0f) << 2; + } + if (s.length > i + 2) { + groupsOfSix[2] |= s.charCodeAt(i + 2) >> 6; + groupsOfSix[3] = s.charCodeAt(i + 2) & 0x3f; + } + for (var j = 0; j < groupsOfSix.length; j++) { + if (typeof groupsOfSix[j] == 'undefined') { + out += '='; + } else { + out += btoaLookup(groupsOfSix[j]); + } + } + } + return out; +} + +/** + * Lookup table for btoa(), which converts a six-bit number into the + * corresponding ASCII character. + */ +function btoaLookup(idx) { + if (idx < 26) { + return String.fromCharCode(idx + 'A'.charCodeAt(0)); + } + if (idx < 52) { + return String.fromCharCode(idx - 26 + 'a'.charCodeAt(0)); + } + if (idx < 62) { + return String.fromCharCode(idx - 52 + '0'.charCodeAt(0)); + } + if (idx == 62) { + return '+'; + } + if (idx == 63) { + return '/'; + } + // Throw INVALID_CHARACTER_ERR exception here -- won't be hit in the tests. +} + +module.exports = btoa; http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/abab/package.json ---------------------------------------------------------------------- diff --git a/node_modules/abab/package.json b/node_modules/abab/package.json new file mode 100644 index 0000000..113fc5c --- /dev/null +++ b/node_modules/abab/package.json @@ -0,0 +1,107 @@ +{ + "_args": [ + [ + { + "raw": "abab@^1.0.0", + "scope": null, + "escapedName": "abab", + "name": "abab", + "rawSpec": "^1.0.0", + "spec": ">=1.0.0 <2.0.0", + "type": "range" + }, + "/Users/yueguo/tmp/griffin-site/node_modules/jsdom" + ] + ], + "_from": "abab@>=1.0.0 <2.0.0", + "_id": "[email protected]", + "_inCache": true, + "_installable": true, + "_location": "/abab", + "_nodeVersion": "4.1.2", + "_npmUser": { + "name": "jeffcarp", + "email": "[email protected]" + }, + "_npmVersion": "2.14.4", + "_phantomChildren": {}, + "_requested": { + "raw": "abab@^1.0.0", + "scope": null, + "escapedName": "abab", + "name": "abab", + "rawSpec": "^1.0.0", + "spec": ">=1.0.0 <2.0.0", + "type": "range" + }, + "_requiredBy": [ + "/jsdom" + ], + "_resolved": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz", + "_shasum": "b81de5f7274ec4e756d797cd834f303642724e5d", + "_shrinkwrap": null, + "_spec": "abab@^1.0.0", + "_where": "/Users/yueguo/tmp/griffin-site/node_modules/jsdom", + "author": { + "name": "Jeff Carpenter", + "email": "[email protected]" + }, + "bugs": { + "url": "https://github.com/jsdom/abab/issues" + }, + "dependencies": {}, + "description": "WHATWG spec-compliant implementations of window.atob and window.btoa.", + "devDependencies": { + "babel-core": "^6.1.4", + "babel-loader": "^6.1.0", + "babel-preset-es2015": "^6.1.4", + "eslint": "^1.3.1", + "jscs": "^2.1.1", + "karma": "^0.13.10", + "karma-cli": "^0.1.1", + "karma-firefox-launcher": "^0.1.6", + "karma-mocha": "^0.2.0", + "karma-sauce-launcher": "^0.2.14", + "karma-webpack": "^1.7.0", + "mocha": "^2.2.5", + "webpack": "^1.12.2" + }, + "directories": {}, + "dist": { + "shasum": "b81de5f7274ec4e756d797cd834f303642724e5d", + "tarball": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz" + }, + "files": [ + "index.js", + "lib/" + ], + "gitHead": "223c06f29e0e4d4f3bc11164f762898474158c3a", + "homepage": "https://github.com/jsdom/abab#readme", + "keywords": [ + "atob", + "btoa", + "browser" + ], + "license": "ISC", + "main": "index.js", + "maintainers": [ + { + "name": "jeffcarp", + "email": "[email protected]" + } + ], + "name": "abab", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/jsdom/abab.git" + }, + "scripts": { + "karma": "karma start", + "lint": "jscs . && eslint .", + "mocha": "mocha test/node", + "test": "npm run lint && npm run mocha && npm run karma" + }, + "version": "1.0.3" +} http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/abbrev/LICENSE ---------------------------------------------------------------------- diff --git a/node_modules/abbrev/LICENSE b/node_modules/abbrev/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/node_modules/abbrev/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/abbrev/README.md ---------------------------------------------------------------------- diff --git a/node_modules/abbrev/README.md b/node_modules/abbrev/README.md new file mode 100644 index 0000000..99746fe --- /dev/null +++ b/node_modules/abbrev/README.md @@ -0,0 +1,23 @@ +# abbrev-js + +Just like [ruby's Abbrev](http://apidock.com/ruby/Abbrev). + +Usage: + + var abbrev = require("abbrev"); + abbrev("foo", "fool", "folding", "flop"); + + // returns: + { fl: 'flop' + , flo: 'flop' + , flop: 'flop' + , fol: 'folding' + , fold: 'folding' + , foldi: 'folding' + , foldin: 'folding' + , folding: 'folding' + , foo: 'foo' + , fool: 'fool' + } + +This is handy for command-line scripts, or other cases where you want to be able to accept shorthands. http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/abbrev/abbrev.js ---------------------------------------------------------------------- diff --git a/node_modules/abbrev/abbrev.js b/node_modules/abbrev/abbrev.js new file mode 100644 index 0000000..7b1dc5d --- /dev/null +++ b/node_modules/abbrev/abbrev.js @@ -0,0 +1,61 @@ +module.exports = exports = abbrev.abbrev = abbrev + +abbrev.monkeyPatch = monkeyPatch + +function monkeyPatch () { + Object.defineProperty(Array.prototype, 'abbrev', { + value: function () { return abbrev(this) }, + enumerable: false, configurable: true, writable: true + }) + + Object.defineProperty(Object.prototype, 'abbrev', { + value: function () { return abbrev(Object.keys(this)) }, + enumerable: false, configurable: true, writable: true + }) +} + +function abbrev (list) { + if (arguments.length !== 1 || !Array.isArray(list)) { + list = Array.prototype.slice.call(arguments, 0) + } + for (var i = 0, l = list.length, args = [] ; i < l ; i ++) { + args[i] = typeof list[i] === "string" ? list[i] : String(list[i]) + } + + // sort them lexicographically, so that they're next to their nearest kin + args = args.sort(lexSort) + + // walk through each, seeing how much it has in common with the next and previous + var abbrevs = {} + , prev = "" + for (var i = 0, l = args.length ; i < l ; i ++) { + var current = args[i] + , next = args[i + 1] || "" + , nextMatches = true + , prevMatches = true + if (current === next) continue + for (var j = 0, cl = current.length ; j < cl ; j ++) { + var curChar = current.charAt(j) + nextMatches = nextMatches && curChar === next.charAt(j) + prevMatches = prevMatches && curChar === prev.charAt(j) + if (!nextMatches && !prevMatches) { + j ++ + break + } + } + prev = current + if (j === cl) { + abbrevs[current] = current + continue + } + for (var a = current.substr(0, j) ; j <= cl ; j ++) { + abbrevs[a] = current + a += current.charAt(j) + } + } + return abbrevs +} + +function lexSort (a, b) { + return a === b ? 0 : a > b ? 1 : -1 +} http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/abbrev/package.json ---------------------------------------------------------------------- diff --git a/node_modules/abbrev/package.json b/node_modules/abbrev/package.json new file mode 100644 index 0000000..ffe503b --- /dev/null +++ b/node_modules/abbrev/package.json @@ -0,0 +1,95 @@ +{ + "_args": [ + [ + { + "raw": "abbrev@^1.0.7", + "scope": null, + "escapedName": "abbrev", + "name": "abbrev", + "rawSpec": "^1.0.7", + "spec": ">=1.0.7 <2.0.0", + "type": "range" + }, + "/Users/yueguo/tmp/griffin-site/node_modules/hexo" + ] + ], + "_from": "abbrev@>=1.0.7 <2.0.0", + "_id": "[email protected]", + "_inCache": true, + "_installable": true, + "_location": "/abbrev", + "_nodeVersion": "8.0.0-pre", + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/abbrev-1.1.0.tgz_1487054000015_0.9229173036292195" + }, + "_npmUser": { + "name": "isaacs", + "email": "[email protected]" + }, + "_npmVersion": "4.3.0", + "_phantomChildren": {}, + "_requested": { + "raw": "abbrev@^1.0.7", + "scope": null, + "escapedName": "abbrev", + "name": "abbrev", + "rawSpec": "^1.0.7", + "spec": ">=1.0.7 <2.0.0", + "type": "range" + }, + "_requiredBy": [ + "/hexo", + "/hexo/hexo-cli", + "/nopt" + ], + "_resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "_shasum": "d0554c2256636e2f56e7c2e5ad183f859428d81f", + "_shrinkwrap": null, + "_spec": "abbrev@^1.0.7", + "_where": "/Users/yueguo/tmp/griffin-site/node_modules/hexo", + "author": { + "name": "Isaac Z. Schlueter", + "email": "[email protected]" + }, + "bugs": { + "url": "https://github.com/isaacs/abbrev-js/issues" + }, + "dependencies": {}, + "description": "Like ruby's abbrev module, but in js", + "devDependencies": { + "tap": "^10.1" + }, + "directories": {}, + "dist": { + "shasum": "d0554c2256636e2f56e7c2e5ad183f859428d81f", + "tarball": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz" + }, + "files": [ + "abbrev.js" + ], + "gitHead": "7136d4d95449dc44115d4f78b80ec907724f64e0", + "homepage": "https://github.com/isaacs/abbrev-js#readme", + "license": "ISC", + "main": "abbrev.js", + "maintainers": [ + { + "name": "isaacs", + "email": "[email protected]" + } + ], + "name": "abbrev", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+ssh://[email protected]/isaacs/abbrev-js.git" + }, + "scripts": { + "postpublish": "git push origin --all; git push origin --tags", + "postversion": "npm publish", + "preversion": "npm test", + "test": "tap test.js --100" + }, + "version": "1.1.0" +} http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/accepts/HISTORY.md ---------------------------------------------------------------------- diff --git a/node_modules/accepts/HISTORY.md b/node_modules/accepts/HISTORY.md new file mode 100644 index 0000000..0477ed7 --- /dev/null +++ b/node_modules/accepts/HISTORY.md @@ -0,0 +1,212 @@ +1.3.3 / 2016-05-02 +================== + + * deps: mime-types@~2.1.11 + - deps: mime-db@~1.23.0 + * deps: [email protected] + - perf: improve `Accept` parsing speed + - perf: improve `Accept-Charset` parsing speed + - perf: improve `Accept-Encoding` parsing speed + - perf: improve `Accept-Language` parsing speed + +1.3.2 / 2016-03-08 +================== + + * deps: mime-types@~2.1.10 + - Fix extension of `application/dash+xml` + - Update primary extension for `audio/mp4` + - deps: mime-db@~1.22.0 + +1.3.1 / 2016-01-19 +================== + + * deps: mime-types@~2.1.9 + - deps: mime-db@~1.21.0 + +1.3.0 / 2015-09-29 +================== + + * deps: mime-types@~2.1.7 + - deps: mime-db@~1.19.0 + * deps: [email protected] + - Fix including type extensions in parameters in `Accept` parsing + - Fix parsing `Accept` parameters with quoted equals + - Fix parsing `Accept` parameters with quoted semicolons + - Lazy-load modules from main entry point + - perf: delay type concatenation until needed + - perf: enable strict mode + - perf: hoist regular expressions + - perf: remove closures getting spec properties + - perf: remove a closure from media type parsing + - perf: remove property delete from media type parsing + +1.2.13 / 2015-09-06 +=================== + + * deps: mime-types@~2.1.6 + - deps: mime-db@~1.18.0 + +1.2.12 / 2015-07-30 +=================== + + * deps: mime-types@~2.1.4 + - deps: mime-db@~1.16.0 + +1.2.11 / 2015-07-16 +=================== + + * deps: mime-types@~2.1.3 + - deps: mime-db@~1.15.0 + +1.2.10 / 2015-07-01 +=================== + + * deps: mime-types@~2.1.2 + - deps: mime-db@~1.14.0 + +1.2.9 / 2015-06-08 +================== + + * deps: mime-types@~2.1.1 + - perf: fix deopt during mapping + +1.2.8 / 2015-06-07 +================== + + * deps: mime-types@~2.1.0 + - deps: mime-db@~1.13.0 + * perf: avoid argument reassignment & argument slice + * perf: avoid negotiator recursive construction + * perf: enable strict mode + * perf: remove unnecessary bitwise operator + +1.2.7 / 2015-05-10 +================== + + * deps: [email protected] + - Fix media type parameter matching to be case-insensitive + +1.2.6 / 2015-05-07 +================== + + * deps: mime-types@~2.0.11 + - deps: mime-db@~1.9.1 + * deps: [email protected] + - Fix comparing media types with quoted values + - Fix splitting media types with quoted commas + +1.2.5 / 2015-03-13 +================== + + * deps: mime-types@~2.0.10 + - deps: mime-db@~1.8.0 + +1.2.4 / 2015-02-14 +================== + + * Support Node.js 0.6 + * deps: mime-types@~2.0.9 + - deps: mime-db@~1.7.0 + * deps: [email protected] + - Fix preference sorting to be stable for long acceptable lists + +1.2.3 / 2015-01-31 +================== + + * deps: mime-types@~2.0.8 + - deps: mime-db@~1.6.0 + +1.2.2 / 2014-12-30 +================== + + * deps: mime-types@~2.0.7 + - deps: mime-db@~1.5.0 + +1.2.1 / 2014-12-30 +================== + + * deps: mime-types@~2.0.5 + - deps: mime-db@~1.3.1 + +1.2.0 / 2014-12-19 +================== + + * deps: [email protected] + - Fix list return order when large accepted list + - Fix missing identity encoding when q=0 exists + - Remove dynamic building of Negotiator class + +1.1.4 / 2014-12-10 +================== + + * deps: mime-types@~2.0.4 + - deps: mime-db@~1.3.0 + +1.1.3 / 2014-11-09 +================== + + * deps: mime-types@~2.0.3 + - deps: mime-db@~1.2.0 + +1.1.2 / 2014-10-14 +================== + + * deps: [email protected] + - Fix error when media type has invalid parameter + +1.1.1 / 2014-09-28 +================== + + * deps: mime-types@~2.0.2 + - deps: mime-db@~1.1.0 + * deps: [email protected] + - Fix all negotiations to be case-insensitive + - Stable sort preferences of same quality according to client order + +1.1.0 / 2014-09-02 +================== + + * update `mime-types` + +1.0.7 / 2014-07-04 +================== + + * Fix wrong type returned from `type` when match after unknown extension + +1.0.6 / 2014-06-24 +================== + + * deps: [email protected] + +1.0.5 / 2014-06-20 +================== + + * fix crash when unknown extension given + +1.0.4 / 2014-06-19 +================== + + * use `mime-types` + +1.0.3 / 2014-06-11 +================== + + * deps: [email protected] + - Order by specificity when quality is the same + +1.0.2 / 2014-05-29 +================== + + * Fix interpretation when header not in request + * deps: pin [email protected] + +1.0.1 / 2014-01-18 +================== + + * Identity encoding isn't always acceptable + * deps: negotiator@~0.4.0 + +1.0.0 / 2013-12-27 +================== + + * Genesis http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/accepts/LICENSE ---------------------------------------------------------------------- diff --git a/node_modules/accepts/LICENSE b/node_modules/accepts/LICENSE new file mode 100644 index 0000000..0616607 --- /dev/null +++ b/node_modules/accepts/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong <[email protected]> +Copyright (c) 2015 Douglas Christopher Wilson <[email protected]> + +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. http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/accepts/README.md ---------------------------------------------------------------------- diff --git a/node_modules/accepts/README.md b/node_modules/accepts/README.md new file mode 100644 index 0000000..ae36676 --- /dev/null +++ b/node_modules/accepts/README.md @@ -0,0 +1,135 @@ +# accepts + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). Extracted from [koa](https://www.npmjs.com/package/koa) for general use. + +In addition to negotiator, it allows: + +- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` as well as `('text/html', 'application/json')`. +- Allows type shorthands such as `json`. +- Returns `false` when no types match +- Treats non-existent headers as `*` + +## Installation + +```sh +npm install accepts +``` + +## API + +```js +var accepts = require('accepts') +``` + +### accepts(req) + +Create a new `Accepts` object for the given `req`. + +#### .charset(charsets) + +Return the first accepted charset. If nothing in `charsets` is accepted, +then `false` is returned. + +#### .charsets() + +Return the charsets that the request accepts, in the order of the client's +preference (most preferred first). + +#### .encoding(encodings) + +Return the first accepted encoding. If nothing in `encodings` is accepted, +then `false` is returned. + +#### .encodings() + +Return the encodings that the request accepts, in the order of the client's +preference (most preferred first). + +#### .language(languages) + +Return the first accepted language. If nothing in `languages` is accepted, +then `false` is returned. + +#### .languages() + +Return the languages that the request accepts, in the order of the client's +preference (most preferred first). + +#### .type(types) + +Return the first accepted type (and it is returned as the same text as what +appears in the `types` array). If nothing in `types` is accepted, then `false` +is returned. + +The `types` array can contain full MIME types or file extensions. Any value +that is not a full MIME types is passed to `require('mime-types').lookup`. + +#### .types() + +Return the types that the request accepts, in the order of the client's +preference (most preferred first). + +## Examples + +### Simple type negotiation + +This simple example shows how to use `accepts` to return a different typed +respond body based on what the client wants to accept. The server lists it's +preferences in order and will get back the best match between the client and +server. + +```js +var accepts = require('accepts') +var http = require('http') + +function app(req, res) { + var accept = accepts(req) + + // the order of this list is significant; should be server preferred order + switch(accept.type(['json', 'html'])) { + case 'json': + res.setHeader('Content-Type', 'application/json') + res.write('{"hello":"world!"}') + break + case 'html': + res.setHeader('Content-Type', 'text/html') + res.write('<b>hello, world!</b>') + break + default: + // the fallback is text/plain, so no need to specify it above + res.setHeader('Content-Type', 'text/plain') + res.write('hello, world!') + break + } + + res.end() +} + +http.createServer(app).listen(3000) +``` + +You can test this out with the cURL program: +```sh +curl -I -H'Accept: text/html' http://localhost:3000/ +``` + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/accepts.svg +[npm-url]: https://npmjs.org/package/accepts +[node-version-image]: https://img.shields.io/node/v/accepts.svg +[node-version-url]: http://nodejs.org/download/ +[travis-image]: https://img.shields.io/travis/jshttp/accepts/master.svg +[travis-url]: https://travis-ci.org/jshttp/accepts +[coveralls-image]: https://img.shields.io/coveralls/jshttp/accepts/master.svg +[coveralls-url]: https://coveralls.io/r/jshttp/accepts +[downloads-image]: https://img.shields.io/npm/dm/accepts.svg +[downloads-url]: https://npmjs.org/package/accepts http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/accepts/index.js ---------------------------------------------------------------------- diff --git a/node_modules/accepts/index.js b/node_modules/accepts/index.js new file mode 100644 index 0000000..e80192a --- /dev/null +++ b/node_modules/accepts/index.js @@ -0,0 +1,231 @@ +/*! + * accepts + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var Negotiator = require('negotiator') +var mime = require('mime-types') + +/** + * Module exports. + * @public + */ + +module.exports = Accepts + +/** + * Create a new Accepts object for the given req. + * + * @param {object} req + * @public + */ + +function Accepts(req) { + if (!(this instanceof Accepts)) + return new Accepts(req) + + this.headers = req.headers + this.negotiator = new Negotiator(req) +} + +/** + * Check if the given `type(s)` is acceptable, returning + * the best match when true, otherwise `undefined`, in which + * case you should respond with 406 "Not Acceptable". + * + * The `type` value may be a single mime type string + * such as "application/json", the extension name + * such as "json" or an array `["json", "html", "text/plain"]`. When a list + * or array is given the _best_ match, if any is returned. + * + * Examples: + * + * // Accept: text/html + * this.types('html'); + * // => "html" + * + * // Accept: text/*, application/json + * this.types('html'); + * // => "html" + * this.types('text/html'); + * // => "text/html" + * this.types('json', 'text'); + * // => "json" + * this.types('application/json'); + * // => "application/json" + * + * // Accept: text/*, application/json + * this.types('image/png'); + * this.types('png'); + * // => undefined + * + * // Accept: text/*;q=.5, application/json + * this.types(['html', 'json']); + * this.types('html', 'json'); + * // => "json" + * + * @param {String|Array} types... + * @return {String|Array|Boolean} + * @public + */ + +Accepts.prototype.type = +Accepts.prototype.types = function (types_) { + var types = types_ + + // support flattened arguments + if (types && !Array.isArray(types)) { + types = new Array(arguments.length) + for (var i = 0; i < types.length; i++) { + types[i] = arguments[i] + } + } + + // no types, return all requested types + if (!types || types.length === 0) { + return this.negotiator.mediaTypes() + } + + if (!this.headers.accept) return types[0]; + var mimes = types.map(extToMime); + var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)); + var first = accepts[0]; + if (!first) return false; + return types[mimes.indexOf(first)]; +} + +/** + * Return accepted encodings or best fit based on `encodings`. + * + * Given `Accept-Encoding: gzip, deflate` + * an array sorted by quality is returned: + * + * ['gzip', 'deflate'] + * + * @param {String|Array} encodings... + * @return {String|Array} + * @public + */ + +Accepts.prototype.encoding = +Accepts.prototype.encodings = function (encodings_) { + var encodings = encodings_ + + // support flattened arguments + if (encodings && !Array.isArray(encodings)) { + encodings = new Array(arguments.length) + for (var i = 0; i < encodings.length; i++) { + encodings[i] = arguments[i] + } + } + + // no encodings, return all requested encodings + if (!encodings || encodings.length === 0) { + return this.negotiator.encodings() + } + + return this.negotiator.encodings(encodings)[0] || false +} + +/** + * Return accepted charsets or best fit based on `charsets`. + * + * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5` + * an array sorted by quality is returned: + * + * ['utf-8', 'utf-7', 'iso-8859-1'] + * + * @param {String|Array} charsets... + * @return {String|Array} + * @public + */ + +Accepts.prototype.charset = +Accepts.prototype.charsets = function (charsets_) { + var charsets = charsets_ + + // support flattened arguments + if (charsets && !Array.isArray(charsets)) { + charsets = new Array(arguments.length) + for (var i = 0; i < charsets.length; i++) { + charsets[i] = arguments[i] + } + } + + // no charsets, return all requested charsets + if (!charsets || charsets.length === 0) { + return this.negotiator.charsets() + } + + return this.negotiator.charsets(charsets)[0] || false +} + +/** + * Return accepted languages or best fit based on `langs`. + * + * Given `Accept-Language: en;q=0.8, es, pt` + * an array sorted by quality is returned: + * + * ['es', 'pt', 'en'] + * + * @param {String|Array} langs... + * @return {Array|String} + * @public + */ + +Accepts.prototype.lang = +Accepts.prototype.langs = +Accepts.prototype.language = +Accepts.prototype.languages = function (languages_) { + var languages = languages_ + + // support flattened arguments + if (languages && !Array.isArray(languages)) { + languages = new Array(arguments.length) + for (var i = 0; i < languages.length; i++) { + languages[i] = arguments[i] + } + } + + // no languages, return all requested languages + if (!languages || languages.length === 0) { + return this.negotiator.languages() + } + + return this.negotiator.languages(languages)[0] || false +} + +/** + * Convert extnames to mime. + * + * @param {String} type + * @return {String} + * @private + */ + +function extToMime(type) { + return type.indexOf('/') === -1 + ? mime.lookup(type) + : type +} + +/** + * Check if mime is valid. + * + * @param {String} type + * @return {String} + * @private + */ + +function validMime(type) { + return typeof type === 'string'; +} http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/accepts/package.json ---------------------------------------------------------------------- diff --git a/node_modules/accepts/package.json b/node_modules/accepts/package.json new file mode 100644 index 0000000..395c24d --- /dev/null +++ b/node_modules/accepts/package.json @@ -0,0 +1,113 @@ +{ + "_args": [ + [ + { + "raw": "accepts@~1.3.3", + "scope": null, + "escapedName": "accepts", + "name": "accepts", + "rawSpec": "~1.3.3", + "spec": ">=1.3.3 <1.4.0", + "type": "range" + }, + "/Users/yueguo/tmp/griffin-site/node_modules/compression" + ] + ], + "_from": "accepts@>=1.3.3 <1.4.0", + "_id": "[email protected]", + "_inCache": true, + "_installable": true, + "_location": "/accepts", + "_nodeVersion": "4.4.3", + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/accepts-1.3.3.tgz_1462251932032_0.7092335098423064" + }, + "_npmUser": { + "name": "dougwilson", + "email": "[email protected]" + }, + "_npmVersion": "2.15.1", + "_phantomChildren": {}, + "_requested": { + "raw": "accepts@~1.3.3", + "scope": null, + "escapedName": "accepts", + "name": "accepts", + "rawSpec": "~1.3.3", + "spec": ">=1.3.3 <1.4.0", + "type": "range" + }, + "_requiredBy": [ + "/compression" + ], + "_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "_shasum": "c3ca7434938648c3e0d9c1e328dd68b622c284ca", + "_shrinkwrap": null, + "_spec": "accepts@~1.3.3", + "_where": "/Users/yueguo/tmp/griffin-site/node_modules/compression", + "bugs": { + "url": "https://github.com/jshttp/accepts/issues" + }, + "contributors": [ + { + "name": "Douglas Christopher Wilson", + "email": "[email protected]" + }, + { + "name": "Jonathan Ong", + "email": "[email protected]", + "url": "http://jongleberry.com" + } + ], + "dependencies": { + "mime-types": "~2.1.11", + "negotiator": "0.6.1" + }, + "description": "Higher-level content negotiation", + "devDependencies": { + "istanbul": "0.4.3", + "mocha": "~1.21.5" + }, + "directories": {}, + "dist": { + "shasum": "c3ca7434938648c3e0d9c1e328dd68b622c284ca", + "tarball": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz" + }, + "engines": { + "node": ">= 0.6" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "index.js" + ], + "gitHead": "3e925b1e65ed7da2798849683d49814680dfa426", + "homepage": "https://github.com/jshttp/accepts#readme", + "keywords": [ + "content", + "negotiation", + "accept", + "accepts" + ], + "license": "MIT", + "maintainers": [ + { + "name": "dougwilson", + "email": "[email protected]" + } + ], + "name": "accepts", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/jshttp/accepts.git" + }, + "scripts": { + "test": "mocha --reporter spec --check-leaks --bail test/", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" + }, + "version": "1.3.3" +} http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/acorn-globals/LICENSE ---------------------------------------------------------------------- diff --git a/node_modules/acorn-globals/LICENSE b/node_modules/acorn-globals/LICENSE new file mode 100644 index 0000000..27cc9f3 --- /dev/null +++ b/node_modules/acorn-globals/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2014 Forbes Lindesay + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/acorn-globals/README.md ---------------------------------------------------------------------- diff --git a/node_modules/acorn-globals/README.md b/node_modules/acorn-globals/README.md new file mode 100644 index 0000000..d8cd372 --- /dev/null +++ b/node_modules/acorn-globals/README.md @@ -0,0 +1,76 @@ +# acorn-globals + +Detect global variables in JavaScript using acorn + +[](https://travis-ci.org/ForbesLindesay/acorn-globals) +[](https://david-dm.org/ForbesLindesay/acorn-globals) +[](https://www.npmjs.org/package/acorn-globals) + +## Installation + + npm install acorn-globals + +## Usage + +detect.js + +```js +var fs = require('fs'); +var detect = require('acorn-globals'); + +var src = fs.readFileSync(__dirname + '/input.js', 'utf8'); + +var scope = detect(src); +console.dir(scope); +``` + +input.js + +```js +var x = 5; +var y = 3, z = 2; + +w.foo(); +w = 2; + +RAWR=444; +RAWR.foo(); + +BLARG=3; + +foo(function () { + var BAR = 3; + process.nextTick(function (ZZZZZZZZZZZZ) { + console.log('beep boop'); + var xyz = 4; + x += 10; + x.zzzzzz; + ZZZ=6; + }); + function doom () { + } + ZZZ.foo(); + +}); + +console.log(xyz); +``` + +output: + +``` +$ node example/detect.js +[ { name: 'BLARG', nodes: [ [Object] ] }, + { name: 'RAWR', nodes: [ [Object], [Object] ] }, + { name: 'ZZZ', nodes: [ [Object], [Object] ] }, + { name: 'console', nodes: [ [Object], [Object] ] }, + { name: 'foo', nodes: [ [Object] ] }, + { name: 'process', nodes: [ [Object] ] }, + { name: 'w', nodes: [ [Object], [Object] ] }, + { name: 'xyz', nodes: [ [Object] ] } ] +``` + + +## License + + MIT http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/acorn-globals/index.js ---------------------------------------------------------------------- diff --git a/node_modules/acorn-globals/index.js b/node_modules/acorn-globals/index.js new file mode 100644 index 0000000..ff924c9 --- /dev/null +++ b/node_modules/acorn-globals/index.js @@ -0,0 +1,180 @@ +'use strict'; + +var acorn = require('acorn'); +var walk = require('acorn/dist/walk'); + +function isScope(node) { + return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration' || node.type === 'ArrowFunctionExpression' || node.type === 'Program'; +} +function isBlockScope(node) { + return node.type === 'BlockStatement' || isScope(node); +} + +function declaresArguments(node) { + return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration'; +} + +function declaresThis(node) { + return node.type === 'FunctionExpression' || node.type === 'FunctionDeclaration'; +} + +function reallyParse(source) { + try { + return acorn.parse(source, { + ecmaVersion: 6, + allowReturnOutsideFunction: true, + allowImportExportEverywhere: true, + allowHashBang: true + }); + } catch (ex) { + return acorn.parse(source, { + ecmaVersion: 5, + allowReturnOutsideFunction: true, + allowImportExportEverywhere: true, + allowHashBang: true + }); + } +} +module.exports = findGlobals; +module.exports.parse = reallyParse; +function findGlobals(source) { + var globals = []; + var ast; + // istanbul ignore else + if (typeof source === 'string') { + ast = reallyParse(source); + } else { + ast = source; + } + // istanbul ignore if + if (!(ast && typeof ast === 'object' && ast.type === 'Program')) { + throw new TypeError('Source must be either a string of JavaScript or an acorn AST'); + } + var declareFunction = function (node) { + var fn = node; + fn.locals = fn.locals || {}; + node.params.forEach(function (node) { + declarePattern(node, fn); + }); + if (node.id) { + fn.locals[node.id.name] = true; + } + } + var declarePattern = function (node, parent) { + switch (node.type) { + case 'Identifier': + parent.locals[node.name] = true; + break; + case 'ObjectPattern': + node.properties.forEach(function (node) { + declarePattern(node.value, parent); + }); + break; + case 'ArrayPattern': + node.elements.forEach(function (node) { + if (node) declarePattern(node, parent); + }); + break; + case 'RestElement': + declarePattern(node.argument, parent); + break; + case 'AssignmentPattern': + declarePattern(node.left, parent); + break; + // istanbul ignore next + default: + throw new Error('Unrecognized pattern type: ' + node.type); + } + } + var declareModuleSpecifier = function (node, parents) { + ast.locals = ast.locals || {}; + ast.locals[node.local.name] = true; + } + walk.ancestor(ast, { + 'VariableDeclaration': function (node, parents) { + var parent = null; + for (var i = parents.length - 1; i >= 0 && parent === null; i--) { + if (node.kind === 'var' ? isScope(parents[i]) : isBlockScope(parents[i])) { + parent = parents[i]; + } + } + parent.locals = parent.locals || {}; + node.declarations.forEach(function (declaration) { + declarePattern(declaration.id, parent); + }); + }, + 'FunctionDeclaration': function (node, parents) { + var parent = null; + for (var i = parents.length - 2; i >= 0 && parent === null; i--) { + if (isScope(parents[i])) { + parent = parents[i]; + } + } + parent.locals = parent.locals || {}; + parent.locals[node.id.name] = true; + declareFunction(node); + }, + 'Function': declareFunction, + 'ClassDeclaration': function (node, parents) { + var parent = null; + for (var i = parents.length - 2; i >= 0 && parent === null; i--) { + if (isScope(parents[i])) { + parent = parents[i]; + } + } + parent.locals = parent.locals || {}; + parent.locals[node.id.name] = true; + }, + 'TryStatement': function (node) { + if (node.handler === null) return; + node.handler.body.locals = node.handler.body.locals || {}; + node.handler.body.locals[node.handler.param.name] = true; + }, + 'ImportDefaultSpecifier': declareModuleSpecifier, + 'ImportSpecifier': declareModuleSpecifier, + 'ImportNamespaceSpecifier': declareModuleSpecifier + }); + function identifier(node, parents) { + var name = node.name; + if (name === 'undefined') return; + for (var i = 0; i < parents.length; i++) { + if (name === 'arguments' && declaresArguments(parents[i])) { + return; + } + if (parents[i].locals && name in parents[i].locals) { + return; + } + } + if ( + parents[parents.length - 2] && + parents[parents.length - 2].type === 'TryStatement' && + parents[parents.length - 2].handler && + node === parents[parents.length - 2].handler.param + ) { + return; + } + node.parents = parents; + globals.push(node); + } + walk.ancestor(ast, { + 'VariablePattern': identifier, + 'Identifier': identifier, + 'ThisExpression': function (node, parents) { + for (var i = 0; i < parents.length; i++) { + if (declaresThis(parents[i])) { + return; + } + } + node.parents = parents; + globals.push(node); + } + }); + var groupedGlobals = {}; + globals.forEach(function (node) { + groupedGlobals[node.name] = (groupedGlobals[node.name] || []); + groupedGlobals[node.name].push(node); + }); + return Object.keys(groupedGlobals).sort().map(function (name) { + return {name: name, nodes: groupedGlobals[name]}; + }); +} http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/acorn-globals/package.json ---------------------------------------------------------------------- diff --git a/node_modules/acorn-globals/package.json b/node_modules/acorn-globals/package.json new file mode 100644 index 0000000..9b1532b --- /dev/null +++ b/node_modules/acorn-globals/package.json @@ -0,0 +1,101 @@ +{ + "_args": [ + [ + { + "raw": "acorn-globals@^1.0.4", + "scope": null, + "escapedName": "acorn-globals", + "name": "acorn-globals", + "rawSpec": "^1.0.4", + "spec": ">=1.0.4 <2.0.0", + "type": "range" + }, + "/Users/yueguo/tmp/griffin-site/node_modules/jsdom" + ] + ], + "_from": "acorn-globals@>=1.0.4 <2.0.0", + "_id": "[email protected]", + "_inCache": true, + "_installable": true, + "_location": "/acorn-globals", + "_nodeVersion": "1.6.2", + "_npmUser": { + "name": "forbeslindesay", + "email": "[email protected]" + }, + "_npmVersion": "2.7.1", + "_phantomChildren": {}, + "_requested": { + "raw": "acorn-globals@^1.0.4", + "scope": null, + "escapedName": "acorn-globals", + "name": "acorn-globals", + "rawSpec": "^1.0.4", + "spec": ">=1.0.4 <2.0.0", + "type": "range" + }, + "_requiredBy": [ + "/jsdom" + ], + "_resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", + "_shasum": "55bb5e98691507b74579d0513413217c380c54cf", + "_shrinkwrap": null, + "_spec": "acorn-globals@^1.0.4", + "_where": "/Users/yueguo/tmp/griffin-site/node_modules/jsdom", + "author": { + "name": "ForbesLindesay" + }, + "bugs": { + "url": "https://github.com/ForbesLindesay/acorn-globals/issues" + }, + "dependencies": { + "acorn": "^2.1.0" + }, + "description": "Detect global variables in JavaScript using acorn", + "devDependencies": { + "testit": "^2.0.2" + }, + "directories": {}, + "dist": { + "shasum": "55bb5e98691507b74579d0513413217c380c54cf", + "tarball": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz" + }, + "files": [ + "index.js", + "LICENSE" + ], + "gitHead": "808cab09764b63679138b012602ca1bb51657f97", + "homepage": "https://github.com/ForbesLindesay/acorn-globals", + "keywords": [ + "ast", + "variable", + "name", + "lexical", + "scope", + "local", + "global", + "implicit" + ], + "license": "MIT", + "maintainers": [ + { + "name": "forbeslindesay", + "email": "[email protected]" + }, + { + "name": "timothygu", + "email": "[email protected]" + } + ], + "name": "acorn-globals", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/ForbesLindesay/acorn-globals.git" + }, + "scripts": { + "test": "node test" + }, + "version": "1.0.9" +} http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/acorn/.editorconfig ---------------------------------------------------------------------- diff --git a/node_modules/acorn/.editorconfig b/node_modules/acorn/.editorconfig new file mode 100644 index 0000000..c14d5c6 --- /dev/null +++ b/node_modules/acorn/.editorconfig @@ -0,0 +1,7 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/acorn/.gitattributes ---------------------------------------------------------------------- diff --git a/node_modules/acorn/.gitattributes b/node_modules/acorn/.gitattributes new file mode 100644 index 0000000..fcadb2c --- /dev/null +++ b/node_modules/acorn/.gitattributes @@ -0,0 +1 @@ +* text eol=lf http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/acorn/.npmignore ---------------------------------------------------------------------- diff --git a/node_modules/acorn/.npmignore b/node_modules/acorn/.npmignore new file mode 100644 index 0000000..ecba291 --- /dev/null +++ b/node_modules/acorn/.npmignore @@ -0,0 +1,3 @@ +/.tern-port +/test +/local http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/acorn/.tern-project ---------------------------------------------------------------------- diff --git a/node_modules/acorn/.tern-project b/node_modules/acorn/.tern-project new file mode 100644 index 0000000..6718ce0 --- /dev/null +++ b/node_modules/acorn/.tern-project @@ -0,0 +1,6 @@ +{ + "plugins": { + "node": true, + "es_modules": true + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/acorn/.travis.yml ---------------------------------------------------------------------- diff --git a/node_modules/acorn/.travis.yml b/node_modules/acorn/.travis.yml new file mode 100644 index 0000000..f50c379 --- /dev/null +++ b/node_modules/acorn/.travis.yml @@ -0,0 +1,6 @@ +language: node_js +sudo: false +node_js: + - '0.10' + - '0.12' + - '4' http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/acorn/AUTHORS ---------------------------------------------------------------------- diff --git a/node_modules/acorn/AUTHORS b/node_modules/acorn/AUTHORS new file mode 100644 index 0000000..0e8f48b --- /dev/null +++ b/node_modules/acorn/AUTHORS @@ -0,0 +1,43 @@ +List of Acorn contributors. Updated before every release. + +Adrian Rakovsky +Alistair Braidwood +Andres Suarez +Aparajita Fishman +Arian Stolwijk +Artem Govorov +Brandon Mills +Charles Hughes +Conrad Irwin +David Bonnet +ForbesLindesay +Forbes Lindesay +Gilad Peleg +impinball +Ingvar Stepanyan +Jesse McCarthy +Jiaxing Wang +Joel Kemp +Johannes Herr +Jürg Lehni +keeyipchan +Kevin Kwok +krator +Marijn Haverbeke +Martin Carlberg +Mathias Bynens +Mathieu 'p01' Henri +Max Schaefer +Max Zerzouri +Mihai Bazon +Mike Rennie +Nick Fitzgerald +Oskar Schöldström +Paul Harper +Peter Rust +PlNG +r-e-d +Rich Harris +Sebastian McKenzie +Timothy Gu +zsjforcn http://git-wip-us.apache.org/repos/asf/incubator-griffin-site/blob/4f8fa326/node_modules/acorn/LICENSE ---------------------------------------------------------------------- diff --git a/node_modules/acorn/LICENSE b/node_modules/acorn/LICENSE new file mode 100644 index 0000000..d4c7fc5 --- /dev/null +++ b/node_modules/acorn/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2012-2014 by various contributors (see AUTHORS) + +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.
