summaryrefslogtreecommitdiff
path: root/tools/eslint/node_modules/escope/node_modules/esrecurse
diff options
context:
space:
mode:
Diffstat (limited to 'tools/eslint/node_modules/escope/node_modules/esrecurse')
-rw-r--r--tools/eslint/node_modules/escope/node_modules/esrecurse/README.md86
-rw-r--r--tools/eslint/node_modules/escope/node_modules/esrecurse/esrecurse.js122
-rw-r--r--tools/eslint/node_modules/escope/node_modules/esrecurse/gulpfile.coffee79
-rw-r--r--tools/eslint/node_modules/escope/node_modules/esrecurse/package.json71
4 files changed, 358 insertions, 0 deletions
diff --git a/tools/eslint/node_modules/escope/node_modules/esrecurse/README.md b/tools/eslint/node_modules/escope/node_modules/esrecurse/README.md
new file mode 100644
index 0000000000..e767592faa
--- /dev/null
+++ b/tools/eslint/node_modules/escope/node_modules/esrecurse/README.md
@@ -0,0 +1,86 @@
+### Esrecurse [![Build Status](https://secure.travis-ci.org/estools/esrecurse.png)](http://travis-ci.org/estools/esrecurse)
+
+Esrecurse ([esrecurse](http://github.com/estools/esrecurse)) is
+[ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm)
+recursive traversing functionality.
+
+### Example Usage
+
+The following code will output all variables declared at the root of a file.
+
+```javascript
+esrecurse.visit(ast, {
+ XXXStatement: function (node) {
+ this.visit(node.left);
+ // do something...
+ this.visit(node.right);
+ }
+});
+```
+
+We can use `Visitor` instance.
+
+```javascript
+var visitor = new esrecurse.Visitor({
+ XXXStatement: function (node) {
+ this.visit(node.left);
+ // do something...
+ this.visit(node.right);
+ }
+});
+
+visitor.visit(ast);
+```
+
+We can inherit `Visitor` instance easily.
+
+```javascript
+function DerivedVisitor() {
+ esrecurse.Visitor.call(/* this for constructor */ this /* visitor object automatically becomes this. */);
+}
+util.inherits(DerivedVisitor, esrecurse.Visitor);
+DerivedVisitor.prototype.XXXStatement = function (node) {
+ this.visit(node.left);
+ // do something...
+ this.visit(node.right);
+};
+```
+
+And you can invoke default visiting operation inside custom visit operation.
+
+```javascript
+function DerivedVisitor() {
+ esrecurse.Visitor.call(/* this for constructor */ this /* visitor object automatically becomes this. */);
+}
+util.inherits(DerivedVisitor, esrecurse.Visitor);
+DerivedVisitor.prototype.XXXStatement = function (node) {
+ // do something...
+ this.visitChildren(node);
+};
+```
+
+### License
+
+Copyright (C) 2014 [Yusuke Suzuki](http://github.com/Constellation)
+ (twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors.
+
+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.
diff --git a/tools/eslint/node_modules/escope/node_modules/esrecurse/esrecurse.js b/tools/eslint/node_modules/escope/node_modules/esrecurse/esrecurse.js
new file mode 100644
index 0000000000..0774f86f6b
--- /dev/null
+++ b/tools/eslint/node_modules/escope/node_modules/esrecurse/esrecurse.js
@@ -0,0 +1,122 @@
+/*
+ Copyright (C) 2014 Yusuke Suzuki <utatane.tea@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.
+*/
+(function () {
+ 'use strict';
+
+ var estraverse,
+ isArray,
+ objectKeys;
+
+ estraverse = require('estraverse');
+
+ isArray = Array.isArray;
+ if (!isArray) {
+ isArray = function isArray(array) {
+ return Object.prototype.toString.call(array) === '[object Array]';
+ };
+ }
+
+ objectKeys = Object.keys || function (o) {
+ var keys = [], key;
+ for (key in o) {
+ keys.push(key);
+ }
+ return keys;
+ };
+
+ function isNode(node) {
+ if (node == null) {
+ return false;
+ }
+ return typeof node === 'object' && typeof node.type === 'string';
+ }
+
+ function isProperty(nodeType, key) {
+ return (nodeType === estraverse.Syntax.ObjectExpression || nodeType === estraverse.Syntax.ObjectPattern) && key === 'properties';
+ }
+
+ function Visitor(visitor) {
+ this.__visitor = visitor || this;
+ }
+
+ /* Default method for visiting children.
+ * When you need to call default visiting operation inside custom visiting
+ * operation, you can use it with `this.visitChildren(node)`.
+ */
+ Visitor.prototype.visitChildren = function (node) {
+ var type, children, i, iz, j, jz, child;
+
+ if (node == null) {
+ return;
+ }
+
+ type = node.type || estraverse.Syntax.Property;
+
+ children = estraverse.VisitorKeys[type];
+ if (!children) {
+ children = objectKeys(node);
+ }
+
+ for (i = 0, iz = children.length; i < iz; ++i) {
+ child = node[children[i]];
+ if (child) {
+ if (Array.isArray(child)) {
+ for (j = 0, jz = child.length; j < jz; ++j) {
+ if (child[j]) {
+ if (isNode(child[j]) || isProperty(type, children[i])) {
+ this.visit(child[j]);
+ }
+ }
+ }
+ } else if (isNode(child)) {
+ this.visit(child);
+ }
+ }
+ }
+ };
+
+ /* Dispatching node. */
+ Visitor.prototype.visit = function (node) {
+ var type;
+
+ if (node == null) {
+ return;
+ }
+
+ type = node.type || estraverse.Syntax.Property;
+ if (this.__visitor[type]) {
+ this.__visitor[type].call(this, node);
+ return;
+ }
+ this.visitChildren(node);
+ };
+
+ exports.version = require('./package.json').version;
+ exports.Visitor = Visitor;
+ exports.visit = function (node, visitor) {
+ var v = new Visitor(visitor);
+ v.visit(node);
+ };
+}());
+/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/tools/eslint/node_modules/escope/node_modules/esrecurse/gulpfile.coffee b/tools/eslint/node_modules/escope/node_modules/esrecurse/gulpfile.coffee
new file mode 100644
index 0000000000..e778189677
--- /dev/null
+++ b/tools/eslint/node_modules/escope/node_modules/esrecurse/gulpfile.coffee
@@ -0,0 +1,79 @@
+# Copyright (C) 2014 Yusuke Suzuki <utatane.tea@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.
+
+gulp = require 'gulp'
+mocha = require 'gulp-mocha'
+eslint = require 'gulp-eslint'
+minimist = require 'minimist'
+git = require 'gulp-git'
+bump = require 'gulp-bump'
+filter = require 'gulp-filter'
+tagVersion = require 'gulp-tag-version'
+require 'coffee-script/register'
+
+SOURCE = [
+ '*.js'
+]
+
+ESLINT_OPTION =
+ rules:
+ 'quotes': 0
+ 'eqeqeq': 0
+ 'no-use-before-define': 0
+ 'no-shadow': 0
+ 'no-new': 0
+ 'no-underscore-dangle': 0
+ 'no-multi-spaces': false
+ 'no-native-reassign': 0
+ 'no-loop-func': 0
+ env:
+ 'node': true
+
+gulp.task 'test', ->
+ options = minimist process.argv.slice(2),
+ string: 'test',
+ default:
+ test: 'test/*.coffee'
+ return gulp.src(options.test).pipe(mocha reporter: 'spec')
+
+gulp.task 'lint', ->
+ return gulp.src(SOURCE)
+ .pipe(eslint(ESLINT_OPTION))
+ .pipe(eslint.formatEach('stylish', process.stderr))
+ .pipe(eslint.failOnError())
+
+inc = (importance) ->
+ gulp.src(['./package.json'])
+ .pipe(bump({type: importance}))
+ .pipe(gulp.dest('./'))
+ .pipe(git.commit('Bumps package version'))
+ .pipe(filter('package.json'))
+ .pipe(tagVersion({
+ prefix: ''
+ }))
+
+gulp.task 'travis', [ 'lint', 'test' ]
+gulp.task 'default', [ 'travis' ]
+
+gulp.task 'patch', [ ], -> inc('patch')
+gulp.task 'minor', [ ], -> inc('minor')
+gulp.task 'major', [ ], -> inc('major')
diff --git a/tools/eslint/node_modules/escope/node_modules/esrecurse/package.json b/tools/eslint/node_modules/escope/node_modules/esrecurse/package.json
new file mode 100644
index 0000000000..70f7d8569a
--- /dev/null
+++ b/tools/eslint/node_modules/escope/node_modules/esrecurse/package.json
@@ -0,0 +1,71 @@
+{
+ "name": "esrecurse",
+ "description": "ECMAScript scope analyzer",
+ "homepage": "http://github.com/estools/esrecurse",
+ "main": "esrecurse.js",
+ "version": "3.1.1",
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "maintainers": [
+ {
+ "name": "constellation",
+ "email": "utatane.tea@gmail.com"
+ },
+ {
+ "name": "michaelficarra",
+ "email": "npm@michael.ficarra.me"
+ }
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/estools/esrecurse.git"
+ },
+ "dependencies": {
+ "estraverse": "~3.1.0"
+ },
+ "devDependencies": {
+ "chai": "^2.1.1",
+ "coffee-script": "^1.9.1",
+ "esprima": "^2.1.0",
+ "gulp": "~3.8.10",
+ "gulp-bump": "^0.2.2",
+ "gulp-eslint": "^0.6.0",
+ "gulp-filter": "^2.0.2",
+ "gulp-git": "^1.1.0",
+ "gulp-mocha": "~2.0.0",
+ "gulp-tag-version": "^1.2.1",
+ "jsdoc": "~3.3.0-alpha10",
+ "minimist": "^1.1.0"
+ },
+ "licenses": [
+ {
+ "type": "BSD",
+ "url": "http://github.com/estools/esrecurse/raw/master/LICENSE.BSD"
+ }
+ ],
+ "scripts": {
+ "test": "gulp travis",
+ "unit-test": "gulp test",
+ "lint": "gulp lint"
+ },
+ "gitHead": "600a8aac5e7b313875a873134fd110b47a76fc77",
+ "bugs": {
+ "url": "https://github.com/estools/esrecurse/issues"
+ },
+ "_id": "esrecurse@3.1.1",
+ "_shasum": "8feb963699d4d1b2d65a576cd4b1296672a0f0e9",
+ "_from": "esrecurse@>=3.1.1 <4.0.0",
+ "_npmVersion": "2.0.0-alpha-5",
+ "_npmUser": {
+ "name": "constellation",
+ "email": "utatane.tea@gmail.com"
+ },
+ "dist": {
+ "shasum": "8feb963699d4d1b2d65a576cd4b1296672a0f0e9",
+ "tarball": "http://registry.npmjs.org/esrecurse/-/esrecurse-3.1.1.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-3.1.1.tgz",
+ "readme": "ERROR: No README data found!"
+}