{"maintainers":[{"name":"evcohen","email":"ethanvcohen@gmail.com"}],"keywords":["jsx","ast","lint","eslint"],"dist-tags":{"latest":"2.0.0"},"author":{"name":"Ethan Cohen"},"description":"AST utility module for statically analyzing JSX","readme":"<p align=\"center\">\n  <a href=\"https://travis-ci.org/evcohen/jsx-ast-utils\">\n    <img src=\"https://api.travis-ci.org/evcohen/jsx-ast-utils.svg?branch=master\"\n         alt=\"build status\">\n  </a>\n  <a href=\"https://npmjs.org/package/jsx-ast-utils\">\n    <img src=\"https://img.shields.io/npm/v/jsx-ast-utils.svg\"\n         alt=\"npm version\">\n  </a>\n  <a href=\"https://github.com/evcohen/jsx-ast-utils/blob/master/LICENSE.md\">\n    <img src=\"https://img.shields.io/npm/l/jsx-ast-utils.svg\"\n         alt=\"license\">\n  </a>\n  <a href='https://coveralls.io/github/evcohen/jsx-ast-utils?branch=master'>\n    <img src='https://coveralls.io/repos/github/evcohen/jsx-ast-utils/badge.svg?branch=master' alt='Coverage Status' />\n  </a>\n  <a href='https://npmjs.org/package/jsx-ast-utils'>\n    <img src='https://img.shields.io/npm/dt/jsx-ast-utils.svg'\n    alt='Total npm downloads' />\n  </a>\n</p>\n\n# jsx-ast-utils\n\nAST utility module for statically analyzing JSX.\n\n## Installation\n```sh\n$ npm i jsx-ast-utils --save\n```\n\n## Usage\nThis is a utility module to evaluate AST objects for JSX syntax. This can be super useful when writing linting rules for JSX code. It was originally in the code for [eslint-plugin-jsx-a11y](https://github.com/evcohen/eslint-plugin-jsx-a11y), however I thought it could be useful to be extracted and maintained separately so **you** could write new interesting rules to statically analyze JSX.\n\n### ESLint example\n```js\nimport { hasProp } from 'jsx-ast-utils';\n// OR: var hasProp = require('jsx-ast-utils').hasProp;\n// OR: const hasProp = require('jsx-ast-utils/hasProp');\n// OR: import hasProp from 'jsx-ast-utils/hasProp';\n\nmodule.exports = context => ({\n  JSXOpeningElement: node => {\n    const onChange = hasProp(node.attributes, 'onChange');\n\n    if (onChange) {\n      context.report({\n        node,\n        message: `No onChange!`\n      });\n    }\n  }\n});\n```\n\n## API\n### AST Resources\n1. [JSX spec](https://github.com/facebook/jsx/blob/master/AST.md)\n2. [JS spec](https://github.com/estree/estree/blob/master/spec.md)\n\n### hasProp\n```js\nhasProp(props, prop, options);\n```\nReturns boolean indicating whether an prop exists as an attribute on a JSX element node.\n\n#### Props\nObject - The attributes on the visited node. (Usually `node.attributes`).\n#### Prop\nString - A string representation of the prop you want to check for existence.\n#### Options\nObject - An object representing options for existence checking\n  1. `ignoreCase` - automatically set to `true`.\n  2. `spreadStrict` - automatically set to `true`. This means if spread operator exists in\n     props, it will assume the prop you are looking for is not in the spread.\n     Example: `<div {...props} />` looking for specific prop here will return false if `spreadStrict` is `true`.\n\n<hr />\n\n### hasAnyProp\n\n```js\nhasAnyProp(props, prop, options);\n```\nReturns a boolean indicating if **any** of props in `prop` argument exist on the node.\n\n#### Props\nObject - The attributes on the visited node. (Usually `node.attributes`).\n#### Prop\nArray<String> - An array of strings representing the props you want to check for existence.\n#### Options\nObject - An object representing options for existence checking\n  1. `ignoreCase` - automatically set to `true`.\n  2. `spreadStrict` - automatically set to `true`. This means if spread operator exists in\n     props, it will assume the prop you are looking for is not in the spread.\n     Example: `<div {...props} />` looking for specific prop here will return false if `spreadStrict` is `true`.\n\n<hr />\n\n### hasEveryProp\n\n```js\nhasEveryProp(props, prop, options);\n```\nReturns a boolean indicating if **all** of props in `prop` argument exist on the node.\n\n#### Props\nObject - The attributes on the visited node. (Usually `node.attributes`).\n#### Prop\nArray<String> - An array of strings representing the props you want to check for existence.\n#### Options\nObject - An object representing options for existence checking\n 1. `ignoreCase` - automatically set to `true`.\n 2. `spreadStrict` - automatically set to `true`. This means if spread operator exists in\n    props, it will assume the prop you are looking for is not in the spread.\n    Example: `<div {...props} />` looking for specific prop here will return false if `spreadStrict` is `true`.\n\n<hr />\n\n### getProp\n\n```js\ngetProp(props, prop, options);\n```\nReturns the JSXAttribute itself or undefined, indicating the prop is not present on the JSXOpeningElement.\n\n#### Props\nObject - The attributes on the visited node. (Usually `node.attributes`).\n#### Prop\nString - A string representation of the prop you want to check for existence.\n#### Options\nObject - An object representing options for existence checking\n  1. `ignoreCase` - automatically set to `true`.\n\n<hr />\n\n### elementType\n```js\nelementType(node)\n```\nReturns the tagName associated with a JSXElement.\n\n#### Node\nObject - The visited JSXElement node object.\n\n<hr />\n\n### getPropValue\n\n```js\ngetPropValue(prop);\n```\nReturns the value of a given attribute. Different types of attributes have their associated values in different properties on the object.\n\nThis function should return the most *closely* associated value with the intention of the JSX.\n\n#### Prop\nObject - The JSXAttribute collected by AST parser.\n\n<hr />\n\n### getLiteralPropValue\n\n```js\ngetLiteralPropValue(prop);\n```\nReturns the value of a given attribute. Different types of attributes have their associated values in different properties on the object.\n\nThis function should return a value only if we can extract a literal value from its attribute (i.e. values that have generic types in JavaScript - strings, numbers, booleans, etc.)\n\n#### Prop\nObject - The JSXAttribute collected by AST parser.\n\n<hr />\n\n### propName\n\n```js\npropName(prop);\n```\nReturns the name associated with a JSXAttribute. For example, given `<div foo=\"bar\" />` and the JSXAttribute for `foo`, this will return the string `\"foo\"`.\n\n#### Prop\nObject - The JSXAttribute collected by AST parser.\n\n<hr />\n\n### eventHandlers\n\n```js\nconsole.log(eventHandlers);\n/*\n[\n  'onCopy',\n  'onCut',\n  'onPaste',\n  'onCompositionEnd',\n  'onCompositionStart',\n  'onCompositionUpdate',\n  'onKeyDown',\n  'onKeyPress',\n  'onKeyUp',\n  'onFocus',\n  'onBlur',\n  'onChange',\n  'onInput',\n  'onSubmit',\n  'onClick',\n  'onContextMenu',\n  'onDblClick',\n  'onDoubleClick',\n  'onDrag',\n  'onDragEnd',\n  'onDragEnter',\n  'onDragExit',\n  'onDragLeave',\n  'onDragOver',\n  'onDragStart',\n  'onDrop',\n  'onMouseDown',\n  'onMouseEnter',\n  'onMouseLeave',\n  'onMouseMove',\n  'onMouseOut',\n  'onMouseOver',\n  'onMouseUp',\n  'onSelect',\n  'onTouchCancel',\n  'onTouchEnd',\n  'onTouchMove',\n  'onTouchStart',\n  'onScroll',\n  'onWheel',\n  'onAbort',\n  'onCanPlay',\n  'onCanPlayThrough',\n  'onDurationChange',\n  'onEmptied',\n  'onEncrypted',\n  'onEnded',\n  'onError',\n  'onLoadedData',\n  'onLoadedMetadata',\n  'onLoadStart',\n  'onPause',\n  'onPlay',\n  'onPlaying',\n  'onProgress',\n  'onRateChange',\n  'onSeeked',\n  'onSeeking',\n  'onStalled',\n  'onSuspend',\n  'onTimeUpdate',\n  'onVolumeChange',\n  'onWaiting',\n  'onLoad',\n  'onError',\n  'onAnimationStart',\n  'onAnimationEnd',\n  'onAnimationIteration',\n  'onTransitionEnd',\n]\n*/\n```\n\nContains a flat list of common event handler props used in JSX to attach behaviors\nto DOM events.\n\n#### eventHandlersByType\n\nThe same list as `eventHandlers`, grouped into types.\n\n```js\nconsole.log(eventHandlersByType);\n/*\n{\n  clipboard: [ 'onCopy', 'onCut', 'onPaste' ],\n  composition: [ 'onCompositionEnd', 'onCompositionStart', 'onCompositionUpdate' ],\n  keyboard: [ 'onKeyDown', 'onKeyPress', 'onKeyUp' ],\n  focus: [ 'onFocus', 'onBlur' ],\n  form: [ 'onChange', 'onInput', 'onSubmit' ],\n  mouse: [ 'onClick', 'onContextMenu', 'onDblClick', 'onDoubleClick', 'onDrag', 'onDragEnd', 'onDragEnter', 'onDragExit', 'onDragLeave', 'onDragOver', 'onDragStart', 'onDrop', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp' ],\n  selection: [ 'onSelect' ],\n  touch: [ 'onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart' ],\n  ui: [ 'onScroll' ],\n  wheel: [ 'onWheel' ],\n  media: [ 'onAbort', 'onCanPlay', 'onCanPlayThrough', 'onDurationChange', 'onEmptied', 'onEncrypted', 'onEnded', 'onError', 'onLoadedData', 'onLoadedMetadata', 'onLoadStart', 'onPause', 'onPlay', 'onPlaying', 'onProgress', 'onRateChange', 'onSeeked', 'onSeeking', 'onStalled', 'onSuspend', 'onTimeUpdate', 'onVolumeChange', 'onWaiting' ],\n  image: [ 'onLoad', 'onError' ],\n  animation: [ 'onAnimationStart', 'onAnimationEnd', 'onAnimationIteration' ],\n  transition: [ 'onTransitionEnd' ],\n}\n*/\n```\n","repository":{"type":"git","url":"git+https://github.com/evcohen/jsx-ast-utils.git"},"users":{"evcohen":true},"bugs":{"url":"https://github.com/evcohen/jsx-ast-utils/issues"},"license":"MIT","versions":{"1.0.0":{"name":"jsx-ast-utils","version":"1.0.0","description":"AST utility module for statically analyzing JSX","main":"lib/index.js","scripts":{"build":"rimraf lib && babel src --out-dir lib","prepublish":"npm run lint && npm run test && npm run build","coveralls":"cat ./reports/coverage/lcov.info | coveralls","lint":"eslint  --config .eslintrc .","pretest":"npm run lint","test":"istanbul cover --dir reports/coverage node_modules/mocha/bin/_mocha tests/**/*.js -- --compilers js:babel-core/register --reporter dot"},"devDependencies":{"acorn-jsx":"^3.0.1","babel-cli":"^6.6.0","babel-core":"^6.6.0","babel-eslint":"^6.0.0","babel-preset-es2015":"^6.6.0","coveralls":"^2.11.8","eslint":"^2.11.1","eslint-config-airbnb-base":"^3.0.1","eslint-plugin-import":"^1.8.1","istanbul":"^1.0.0-alpha.2","mocha":"^2.4.5","rimraf":"^2.5.2"},"engines":{"node":">=0.10.0"},"keywords":["jsx","ast","lint","eslint"],"author":{"name":"Ethan Cohen"},"repository":{"type":"git","url":"git+https://github.com/evcohen/jsx-ast-utils.git"},"license":"MIT","dependencies":{"object-assign":"^4.1.0"},"gitHead":"57013b84a382799340553632cc8b0b9892554965","bugs":{"url":"https://github.com/evcohen/jsx-ast-utils/issues"},"homepage":"https://github.com/evcohen/jsx-ast-utils#readme","_id":"jsx-ast-utils@1.0.0","_shasum":"ad326dc887a8caaab2c2fd937aa7e2dc2688ff04","_from":".","_npmVersion":"3.9.1","_nodeVersion":"6.1.0","_npmUser":{"name":"evcohen","email":"ethanvcohen@gmail.com"},"dist":{"shasum":"ad326dc887a8caaab2c2fd937aa7e2dc2688ff04","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/jsx-ast-utils/-/jsx-ast-utils-1.0.0.tgz"},"maintainers":[{"name":"evcohen","email":"ethanvcohen@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/jsx-ast-utils-1.0.0.tgz_1465505950235_0.04185824701562524"},"directories":{}},"1.0.1":{"name":"jsx-ast-utils","version":"1.0.1","description":"AST utility module for statically analyzing JSX","main":"lib/index.js","scripts":{"build":"rimraf lib && babel src --out-dir lib","prepublish":"npm run lint && npm run test && npm run build","coveralls":"cat ./reports/coverage/lcov.info | coveralls","lint":"eslint  --config .eslintrc .","pretest":"npm run lint","test":"istanbul cover --dir reports/coverage node_modules/mocha/bin/_mocha tests/**/*.js -- --compilers js:babel-core/register --reporter dot"},"devDependencies":{"acorn-jsx":"^3.0.1","babel-cli":"^6.6.0","babel-core":"^6.6.0","babel-eslint":"^6.0.0","babel-preset-es2015":"^6.6.0","coveralls":"^2.11.8","eslint":"^2.11.1","eslint-config-airbnb-base":"^3.0.1","eslint-plugin-import":"^1.8.1","istanbul":"^1.0.0-alpha.2","mocha":"^2.4.5","rimraf":"^2.5.2"},"engines":{"node":">=0.10.0"},"keywords":["jsx","ast","lint","eslint"],"author":{"name":"Ethan Cohen"},"repository":{"type":"git","url":"git+https://github.com/evcohen/jsx-ast-utils.git"},"license":"MIT","dependencies":{"object-assign":"^4.1.0"},"gitHead":"a72e944c6a7f5a0a3bbad4427d359d353123c691","bugs":{"url":"https://github.com/evcohen/jsx-ast-utils/issues"},"homepage":"https://github.com/evcohen/jsx-ast-utils#readme","_id":"jsx-ast-utils@1.0.1","_shasum":"ef00cecaa17e27553b0acd4e4ee8bbb4f4296809","_from":".","_npmVersion":"3.9.1","_nodeVersion":"6.1.0","_npmUser":{"name":"evcohen","email":"ethanvcohen@gmail.com"},"dist":{"shasum":"ef00cecaa17e27553b0acd4e4ee8bbb4f4296809","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/jsx-ast-utils/-/jsx-ast-utils-1.0.1.tgz"},"maintainers":[{"name":"evcohen","email":"ethanvcohen@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/jsx-ast-utils-1.0.1.tgz_1465585005594_0.605570120504126"},"directories":{}},"1.1.0":{"name":"jsx-ast-utils","version":"1.1.0","description":"AST utility module for statically analyzing JSX","main":"lib/index.js","scripts":{"build":"rimraf lib && babel src --out-dir lib","prepublish":"npm run lint && npm run test && npm run build","coveralls":"cat ./reports/coverage/lcov.info | coveralls","lint":"eslint  --config .eslintrc .","pretest":"npm run lint","test":"istanbul cover --dir reports/coverage node_modules/mocha/bin/_mocha tests/**/*.js -- --compilers js:babel-core/register --reporter dot"},"devDependencies":{"acorn-jsx":"^3.0.1","babel-cli":"^6.6.0","babel-core":"^6.6.0","babel-eslint":"^6.0.0","babel-preset-es2015":"^6.6.0","coveralls":"^2.11.8","eslint":"^2.11.1","eslint-config-airbnb-base":"^3.0.1","eslint-plugin-import":"^1.8.1","istanbul":"^1.0.0-alpha.2","mocha":"^2.4.5","rimraf":"^2.5.2"},"engines":{"node":">=0.10.0"},"keywords":["jsx","ast","lint","eslint"],"author":{"name":"Ethan Cohen"},"repository":{"type":"git","url":"git+https://github.com/evcohen/jsx-ast-utils.git"},"license":"MIT","dependencies":{"object-assign":"^4.1.0"},"gitHead":"36d85f94d3dbacbadd4ac66ae0dc12e8212b0a65","bugs":{"url":"https://github.com/evcohen/jsx-ast-utils/issues"},"homepage":"https://github.com/evcohen/jsx-ast-utils#readme","_id":"jsx-ast-utils@1.1.0","_shasum":"b02c75b300e06fef20c05fc1dc1ee9afc01ebda5","_from":".","_npmVersion":"3.9.1","_nodeVersion":"6.1.0","_npmUser":{"name":"evcohen","email":"ethanvcohen@gmail.com"},"dist":{"shasum":"b02c75b300e06fef20c05fc1dc1ee9afc01ebda5","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/jsx-ast-utils/-/jsx-ast-utils-1.1.0.tgz"},"maintainers":[{"name":"evcohen","email":"ethanvcohen@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/jsx-ast-utils-1.1.0.tgz_1465595273014_0.7705848752520978"},"directories":{}},"1.1.1":{"name":"jsx-ast-utils","version":"1.1.1","description":"AST utility module for statically analyzing JSX","main":"lib/index.js","scripts":{"build":"rimraf lib && babel src --out-dir lib","prepublish":"npm run lint && npm run test && npm run build","coveralls":"cat ./reports/coverage/lcov.info | coveralls","lint":"eslint  --config .eslintrc .","pretest":"npm run lint","test":"istanbul cover --dir reports/coverage node_modules/mocha/bin/_mocha tests/**/*.js -- --compilers js:babel-core/register --reporter dot"},"devDependencies":{"acorn-jsx":"^3.0.1","babel-cli":"^6.6.0","babel-core":"^6.6.0","babel-eslint":"^6.0.0","babel-preset-es2015":"^6.6.0","coveralls":"^2.11.8","eslint":"^2.11.1","eslint-config-airbnb-base":"^3.0.1","eslint-plugin-import":"^1.8.1","istanbul":"^1.0.0-alpha.2","mocha":"^2.4.5","rimraf":"^2.5.2"},"engines":{"node":">=0.10.0"},"keywords":["jsx","ast","lint","eslint"],"author":{"name":"Ethan Cohen"},"repository":{"type":"git","url":"git+https://github.com/evcohen/jsx-ast-utils.git"},"license":"MIT","dependencies":{"object-assign":"^4.1.0"},"gitHead":"1345ecf5277b1cc650d3f830ec73034d1f5592fa","bugs":{"url":"https://github.com/evcohen/jsx-ast-utils/issues"},"homepage":"https://github.com/evcohen/jsx-ast-utils#readme","_id":"jsx-ast-utils@1.1.1","_shasum":"02b3dac419a011656940cf777c3bd99f0661a4bc","_from":".","_npmVersion":"3.9.1","_nodeVersion":"6.1.0","_npmUser":{"name":"evcohen","email":"ethanvcohen@gmail.com"},"dist":{"shasum":"02b3dac419a011656940cf777c3bd99f0661a4bc","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/jsx-ast-utils/-/jsx-ast-utils-1.1.1.tgz"},"maintainers":[{"name":"evcohen","email":"ethanvcohen@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/jsx-ast-utils-1.1.1.tgz_1465774676677_0.6566750002093613"},"directories":{}},"1.2.0":{"name":"jsx-ast-utils","version":"1.2.0","description":"AST utility module for statically analyzing JSX","main":"lib/index.js","scripts":{"build":"rimraf lib && babel src --out-dir lib","prepublish":"npm run lint && npm run test && npm run build","coveralls":"cat ./reports/coverage/lcov.info | coveralls","lint":"eslint  --config .eslintrc .","pretest":"npm run lint","test":"istanbul cover --dir reports/coverage node_modules/mocha/bin/_mocha tests/**/*.js -- --compilers js:babel-core/register --reporter dot"},"devDependencies":{"acorn-jsx":"^3.0.1","babel-cli":"^6.6.0","babel-core":"^6.6.0","babel-eslint":"^6.0.0","babel-preset-es2015":"^6.6.0","coveralls":"^2.11.8","eslint":"^2.11.1","eslint-config-airbnb-base":"^3.0.1","eslint-plugin-import":"^1.8.1","istanbul":"^1.0.0-alpha.2","mocha":"^2.4.5","rimraf":"^2.5.2"},"engines":{"node":">=0.10.0"},"keywords":["jsx","ast","lint","eslint"],"author":{"name":"Ethan Cohen"},"repository":{"type":"git","url":"git+https://github.com/evcohen/jsx-ast-utils.git"},"license":"MIT","dependencies":{"object-assign":"^4.1.0"},"gitHead":"f50935301b62705c9ee862828e3360f87f1cce0e","bugs":{"url":"https://github.com/evcohen/jsx-ast-utils/issues"},"homepage":"https://github.com/evcohen/jsx-ast-utils#readme","_id":"jsx-ast-utils@1.2.0","_shasum":"934fc492790942be674945468338560d50729d66","_from":".","_npmVersion":"3.8.6","_nodeVersion":"5.11.1","_npmUser":{"name":"evcohen","email":"ethanvcohen@gmail.com"},"dist":{"shasum":"934fc492790942be674945468338560d50729d66","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/jsx-ast-utils/-/jsx-ast-utils-1.2.0.tgz"},"maintainers":[{"name":"evcohen","email":"ethanvcohen@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/jsx-ast-utils-1.2.0.tgz_1466013859235_0.21560986642725766"},"directories":{}},"1.2.1":{"name":"jsx-ast-utils","version":"1.2.1","description":"AST utility module for statically analyzing JSX","main":"lib/index.js","scripts":{"build":"rimraf lib && babel src --out-dir lib","prepublish":"npm run lint && npm run test && npm run build","coveralls":"cat ./reports/coverage/lcov.info | coveralls","lint":"eslint  --config .eslintrc .","pretest":"npm run lint","test":"istanbul cover -x '**/lib/**' --dir reports/coverage node_modules/mocha/bin/_mocha tests/**/*.js -- --compilers js:babel-core/register --reporter dot"},"devDependencies":{"acorn-jsx":"^3.0.1","babel-cli":"^6.6.0","babel-core":"^6.6.0","babel-eslint":"^6.0.0","babel-preset-es2015":"^6.6.0","coveralls":"^2.11.8","eslint":"^2.11.1","eslint-config-airbnb-base":"^3.0.1","eslint-plugin-import":"^1.8.1","istanbul":"^1.0.0-alpha.2","mocha":"^2.4.5","rimraf":"^2.5.2"},"engines":{"node":">=0.10.0"},"keywords":["jsx","ast","lint","eslint"],"author":{"name":"Ethan Cohen"},"repository":{"type":"git","url":"git+https://github.com/evcohen/jsx-ast-utils.git"},"license":"MIT","dependencies":{"object-assign":"^4.1.0"},"gitHead":"54e010d37fb4f6d4f7a6f785e38a26a477e41855","bugs":{"url":"https://github.com/evcohen/jsx-ast-utils/issues"},"homepage":"https://github.com/evcohen/jsx-ast-utils#readme","_id":"jsx-ast-utils@1.2.1","_shasum":"83e898cf125ec08f46f0d3b467321544bd60b7a0","_from":".","_npmVersion":"3.8.6","_nodeVersion":"5.11.1","_npmUser":{"name":"evcohen","email":"ethanvcohen@gmail.com"},"dist":{"shasum":"83e898cf125ec08f46f0d3b467321544bd60b7a0","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/jsx-ast-utils/-/jsx-ast-utils-1.2.1.tgz"},"maintainers":[{"name":"evcohen","email":"ethanvcohen@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/jsx-ast-utils-1.2.1.tgz_1466014700640_0.3706420324742794"},"directories":{}},"1.3.0":{"name":"jsx-ast-utils","version":"1.3.0","description":"AST utility module for statically analyzing JSX","main":"lib/index.js","scripts":{"build":"rimraf lib && babel src --out-dir lib","prepublish":"npm run lint && npm run test && npm run build","coveralls":"cat ./reports/coverage/lcov.info | coveralls","lint":"eslint  --config .eslintrc .","pretest":"npm run lint","test":"istanbul cover -x '**/lib/**' --dir reports/coverage node_modules/mocha/bin/_mocha tests/**/*.js -- --compilers js:babel-core/register --reporter dot"},"devDependencies":{"acorn-jsx":"^3.0.1","babel-cli":"^6.6.0","babel-core":"^6.6.0","babel-eslint":"^6.0.0","babel-preset-es2015":"^6.6.0","coveralls":"^2.11.8","eslint":"^2.11.1","eslint-config-airbnb-base":"^3.0.1","eslint-plugin-import":"^1.8.1","istanbul":"^1.0.0-alpha.2","mocha":"^2.4.5","rimraf":"^2.5.2"},"engines":{"node":">=0.10.0"},"keywords":["jsx","ast","lint","eslint"],"author":{"name":"Ethan Cohen"},"repository":{"type":"git","url":"git+https://github.com/evcohen/jsx-ast-utils.git"},"license":"MIT","dependencies":{"object-assign":"^4.1.0"},"gitHead":"a5fba3c246fa02097f73f3b8ff93158984216673","bugs":{"url":"https://github.com/evcohen/jsx-ast-utils/issues"},"homepage":"https://github.com/evcohen/jsx-ast-utils#readme","_id":"jsx-ast-utils@1.3.0","_shasum":"dcad64603036d740fb172aae90502507b977dd8f","_from":".","_npmVersion":"3.8.6","_nodeVersion":"5.11.1","_npmUser":{"name":"evcohen","email":"ethanvcohen@gmail.com"},"dist":{"shasum":"dcad64603036d740fb172aae90502507b977dd8f","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/jsx-ast-utils/-/jsx-ast-utils-1.3.0.tgz"},"maintainers":[{"name":"evcohen","email":"ethanvcohen@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/jsx-ast-utils-1.3.0.tgz_1468357578603_0.2603910486213863"},"directories":{}},"1.3.1":{"name":"jsx-ast-utils","version":"1.3.1","description":"AST utility module for statically analyzing JSX","main":"lib/index.js","scripts":{"build":"rimraf lib && babel src --out-dir lib","prepublish":"npm run lint && npm run test && npm run build","coveralls":"cat ./reports/coverage/lcov.info | coveralls","lint":"eslint  --config .eslintrc .","pretest":"npm run lint","test":"istanbul cover -x '**/lib/**' --dir reports/coverage node_modules/mocha/bin/_mocha tests/**/*.js -- --compilers js:babel-core/register --reporter dot"},"devDependencies":{"acorn-jsx":"^3.0.1","babel-cli":"^6.6.0","babel-core":"^6.6.0","babel-eslint":"^6.0.0","babel-preset-es2015":"^6.6.0","coveralls":"^2.11.8","eslint":"^2.11.1","eslint-config-airbnb-base":"^3.0.1","eslint-plugin-import":"^1.8.1","istanbul":"^1.0.0-alpha.2","mocha":"^2.4.5","rimraf":"^2.5.2"},"engines":{"node":">=0.10.0"},"keywords":["jsx","ast","lint","eslint"],"author":{"name":"Ethan Cohen"},"repository":{"type":"git","url":"git+https://github.com/evcohen/jsx-ast-utils.git"},"license":"MIT","dependencies":{"object-assign":"^4.1.0"},"gitHead":"b4485847e1f69a2eafdc387a4816f2ff87086822","bugs":{"url":"https://github.com/evcohen/jsx-ast-utils/issues"},"homepage":"https://github.com/evcohen/jsx-ast-utils#readme","_id":"jsx-ast-utils@1.3.1","_shasum":"14313c5c50da5b0c47020af5d1560c17e781a05a","_from":".","_npmVersion":"3.8.6","_nodeVersion":"5.11.1","_npmUser":{"name":"evcohen","email":"ethanvcohen@gmail.com"},"dist":{"shasum":"14313c5c50da5b0c47020af5d1560c17e781a05a","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/jsx-ast-utils/-/jsx-ast-utils-1.3.1.tgz"},"maintainers":[{"name":"evcohen","email":"ethanvcohen@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/jsx-ast-utils-1.3.1.tgz_1468421887991_0.8875111474189907"},"directories":{}},"1.3.2":{"name":"jsx-ast-utils","version":"1.3.2","description":"AST utility module for statically analyzing JSX","main":"lib/index.js","scripts":{"build":"rimraf lib && babel src --out-dir lib","prepublish":"npm run lint && npm run test && npm run build","coveralls":"cat ./reports/lcov.info | coveralls","lint":"eslint  --config .eslintrc .","lint:fix":"npm run lint -- --fix","pretest":"npm run lint","test":"jest --coverage"},"devDependencies":{"babel-cli":"^6.14.0","babel-core":"^6.14.0","babel-eslint":"^7.0.0","babel-jest":"^16.0.0","babel-polyfill":"^6.16.0","babel-preset-es2015":"^6.14.0","coveralls":"^2.11.8","eslint":"^3.0.0","eslint-config-airbnb-base":"^8.0.0","eslint-plugin-import":"^1.16.0","jest":"^16.0.1","rimraf":"^2.5.2"},"engines":{"node":">=4.0"},"keywords":["jsx","ast","lint","eslint"],"author":{"name":"Ethan Cohen"},"repository":{"type":"git","url":"git+https://github.com/evcohen/jsx-ast-utils.git"},"license":"MIT","dependencies":{"acorn-jsx":"^3.0.1","object-assign":"^4.1.0"},"jest":{"coverageReporters":["lcov"],"coverageDirectory":"reports","testPathIgnorePatterns":["/node_modules/","helper.js"]},"gitHead":"d9a9241ed7222ee8a8a9010d67f34841b367e687","bugs":{"url":"https://github.com/evcohen/jsx-ast-utils/issues"},"homepage":"https://github.com/evcohen/jsx-ast-utils#readme","_id":"jsx-ast-utils@1.3.2","_shasum":"dff658782705352111f9865d40471bc4a955961e","_from":".","_npmVersion":"3.9.1","_nodeVersion":"6.1.0","_npmUser":{"name":"evcohen","email":"ethanvcohen@gmail.com"},"dist":{"shasum":"dff658782705352111f9865d40471bc4a955961e","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/jsx-ast-utils/-/jsx-ast-utils-1.3.2.tgz"},"maintainers":[{"name":"evcohen","email":"ethanvcohen@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/jsx-ast-utils-1.3.2.tgz_1476243169215_0.34366767504252493"},"directories":{}},"1.3.3":{"name":"jsx-ast-utils","version":"1.3.3","description":"AST utility module for statically analyzing JSX","main":"lib/index.js","scripts":{"build":"rimraf lib && babel src --out-dir lib","prepublish":"npm run lint && npm run test && npm run build","coveralls":"cat ./reports/lcov.info | coveralls","lint":"eslint  --config .eslintrc .","lint:fix":"npm run lint -- --fix","pretest":"npm run lint","test":"jest --coverage","test:watch":"npm test -- --watch"},"devDependencies":{"babel-cli":"^6.14.0","babel-core":"^6.14.0","babel-eslint":"^7.0.0","babel-jest":"^16.0.0","babel-polyfill":"^6.16.0","babel-preset-es2015":"^6.14.0","coveralls":"^2.11.8","eslint":"^3.0.0","eslint-config-airbnb-base":"^8.0.0","eslint-plugin-import":"^1.16.0","jest":"^16.0.1","rimraf":"^2.5.2"},"engines":{"node":">=4.0"},"keywords":["jsx","ast","lint","eslint"],"author":{"name":"Ethan Cohen"},"repository":{"type":"git","url":"git+https://github.com/evcohen/jsx-ast-utils.git"},"license":"MIT","dependencies":{"acorn-jsx":"^3.0.1","object-assign":"^4.1.0"},"jest":{"coverageReporters":["lcov"],"coverageDirectory":"reports","testPathIgnorePatterns":["/node_modules/","helper.js"]},"gitHead":"9a8397f491a28eebd1bf5569274ab484138091eb","bugs":{"url":"https://github.com/evcohen/jsx-ast-utils/issues"},"homepage":"https://github.com/evcohen/jsx-ast-utils#readme","_id":"jsx-ast-utils@1.3.3","_shasum":"ccfdbe0320ba03f7a1fc4e67ceaf7e2cc0169721","_from":".","_npmVersion":"3.9.1","_nodeVersion":"6.1.0","_npmUser":{"name":"evcohen","email":"ethanvcohen@gmail.com"},"dist":{"shasum":"ccfdbe0320ba03f7a1fc4e67ceaf7e2cc0169721","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/jsx-ast-utils/-/jsx-ast-utils-1.3.3.tgz"},"maintainers":[{"name":"evcohen","email":"ethanvcohen@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/jsx-ast-utils-1.3.3.tgz_1477662011374_0.9092228910885751"},"directories":{}},"1.3.4":{"name":"jsx-ast-utils","version":"1.3.4","description":"AST utility module for statically analyzing JSX","main":"lib/index.js","scripts":{"build":"rimraf lib && babel src --out-dir lib","prepublish":"npm run lint && npm run test && npm run build","coveralls":"cat ./reports/lcov.info | coveralls","lint":"eslint  --config .eslintrc .","lint:fix":"npm run lint -- --fix","pretest":"npm run lint","test":"jest --coverage","test:watch":"npm test -- --watch"},"devDependencies":{"babel-cli":"^6.14.0","babel-core":"^6.14.0","babel-eslint":"^7.0.0","babel-jest":"^16.0.0","babel-polyfill":"^6.16.0","babel-preset-es2015":"^6.14.0","coveralls":"^2.11.8","eslint":"^3.0.0","eslint-config-airbnb-base":"^8.0.0","eslint-plugin-import":"^1.16.0","jest":"^16.0.1","rimraf":"^2.5.2"},"engines":{"node":">=4.0"},"keywords":["jsx","ast","lint","eslint"],"author":{"name":"Ethan Cohen"},"repository":{"type":"git","url":"git+https://github.com/evcohen/jsx-ast-utils.git"},"license":"MIT","dependencies":{"acorn-jsx":"^3.0.1","object-assign":"^4.1.0"},"jest":{"coverageReporters":["lcov"],"coverageDirectory":"reports","testPathIgnorePatterns":["/node_modules/","helper.js"]},"gitHead":"572bdc686ef80ef3431b2ba52884a852d02e1fd8","bugs":{"url":"https://github.com/evcohen/jsx-ast-utils/issues"},"homepage":"https://github.com/evcohen/jsx-ast-utils#readme","_id":"jsx-ast-utils@1.3.4","_shasum":"0257ed1cc4b1e65b39d7d9940f9fb4f20f7ba0a9","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"evcohen","email":"ethanvcohen@gmail.com"},"dist":{"shasum":"0257ed1cc4b1e65b39d7d9940f9fb4f20f7ba0a9","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/jsx-ast-utils/-/jsx-ast-utils-1.3.4.tgz"},"maintainers":[{"name":"evcohen","email":"ethanvcohen@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/jsx-ast-utils-1.3.4.tgz_1479224529772_0.3712688011582941"},"directories":{}},"1.3.5":{"name":"jsx-ast-utils","version":"1.3.5","description":"AST utility module for statically analyzing JSX","main":"lib/index.js","scripts":{"build":"rimraf lib && babel src --out-dir lib","prepublish":"npm run lint && npm run test && npm run build","coveralls":"cat ./reports/lcov.info | coveralls","lint":"eslint  --config .eslintrc .","lint:fix":"npm run lint -- --fix","pretest":"npm run lint","test":"jest --coverage","test:watch":"npm test -- --watch"},"devDependencies":{"babel-cli":"^6.14.0","babel-core":"^6.14.0","babel-eslint":"^7.0.0","babel-jest":"^17.0.2","babel-polyfill":"^6.16.0","babel-preset-es2015":"^6.14.0","coveralls":"^2.11.8","eslint":"^3.12.1","eslint-config-airbnb-base":"^11.0.0","eslint-plugin-import":"^2.2.0","jest":"^17.0.2","rimraf":"^2.5.2"},"engines":{"node":">=4.0"},"keywords":["jsx","ast","lint","eslint"],"author":{"name":"Ethan Cohen"},"repository":{"type":"git","url":"git+https://github.com/evcohen/jsx-ast-utils.git"},"license":"MIT","dependencies":{"acorn-jsx":"^3.0.1","object-assign":"^4.1.0"},"jest":{"coverageReporters":["lcov"],"coverageDirectory":"reports","testPathIgnorePatterns":["/node_modules/","helper.js"]},"gitHead":"e327eb8c51558b46a4cf2c8cc0326590b9ebf21b","bugs":{"url":"https://github.com/evcohen/jsx-ast-utils/issues"},"homepage":"https://github.com/evcohen/jsx-ast-utils#readme","_id":"jsx-ast-utils@1.3.5","_shasum":"9ba6297198d9f754594d62e59496ffb923778dd4","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"evcohen","email":"ethanvcohen@gmail.com"},"dist":{"shasum":"9ba6297198d9f754594d62e59496ffb923778dd4","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/jsx-ast-utils/-/jsx-ast-utils-1.3.5.tgz"},"maintainers":[{"name":"evcohen","email":"ethanvcohen@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/jsx-ast-utils-1.3.5.tgz_1481740712538_0.8030725261196494"},"directories":{}},"1.4.0":{"name":"jsx-ast-utils","version":"1.4.0","description":"AST utility module for statically analyzing JSX","main":"lib/index.js","scripts":{"build":"rimraf lib && babel src --out-dir lib","prepublish":"npm run lint && npm run test && npm run build","coveralls":"cat ./reports/lcov.info | coveralls","lint":"eslint  --config .eslintrc .","lint:fix":"npm run lint -- --fix","pretest":"npm run lint","test":"jest --coverage","test:watch":"npm test -- --watch"},"devDependencies":{"acorn-jsx":"^3.0.1","babel-cli":"^6.14.0","babel-core":"^6.14.0","babel-eslint":"^7.0.0","babel-jest":"^18.0.0","babel-polyfill":"^6.16.0","babel-preset-es2015":"^6.14.0","coveralls":"^2.11.8","eslint":"^3.12.1","eslint-config-airbnb-base":"^11.0.0","eslint-plugin-import":"^2.2.0","jest":"^18.1.0","rimraf":"^2.5.2"},"engines":{"node":">=4.0"},"keywords":["jsx","ast","lint","eslint"],"author":{"name":"Ethan Cohen"},"repository":{"type":"git","url":"git+https://github.com/evcohen/jsx-ast-utils.git"},"license":"MIT","dependencies":{"object-assign":"^4.1.0"},"jest":{"coverageReporters":["lcov"],"coverageDirectory":"reports","testPathIgnorePatterns":["/node_modules/","helper.js"]},"gitHead":"c47a7771324c46eb99641924c2aa88b20d1533a8","bugs":{"url":"https://github.com/evcohen/jsx-ast-utils/issues"},"homepage":"https://github.com/evcohen/jsx-ast-utils#readme","_id":"jsx-ast-utils@1.4.0","_shasum":"5afe38868f56bc8cc7aeaef0100ba8c75bd12591","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.1","_npmUser":{"name":"evcohen","email":"ethanvcohen@gmail.com"},"dist":{"shasum":"5afe38868f56bc8cc7aeaef0100ba8c75bd12591","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/jsx-ast-utils/-/jsx-ast-utils-1.4.0.tgz"},"maintainers":[{"name":"evcohen","email":"ethanvcohen@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/jsx-ast-utils-1.4.0.tgz_1486083172250_0.8955883041489869"},"directories":{}},"1.4.1":{"name":"jsx-ast-utils","version":"1.4.1","description":"AST utility module for statically analyzing JSX","main":"lib/index.js","scripts":{"build":"rimraf lib && babel src --out-dir lib","prepublish":"npm run lint && npm run test && npm run build","coveralls":"cat ./reports/lcov.info | coveralls","lint":"eslint  --config .eslintrc .","lint:fix":"npm run lint -- --fix","pretest":"npm run lint","test":"jest --coverage","test:watch":"npm test -- --watch"},"devDependencies":{"acorn-jsx":"^3.0.1","babel-cli":"^6.14.0","babel-core":"^6.14.0","babel-eslint":"^7.0.0","babel-jest":"^19.0.0","babel-polyfill":"^6.16.0","babel-preset-es2015":"^6.14.0","coveralls":"^2.11.8","eslint":"^3.12.1","eslint-config-airbnb-base":"^11.1.0","eslint-plugin-import":"^2.2.0","jest":"^19.0.0","rimraf":"^2.5.2"},"engines":{"node":">=4.0"},"keywords":["jsx","ast","lint","eslint"],"author":{"name":"Ethan Cohen"},"repository":{"type":"git","url":"git+https://github.com/evcohen/jsx-ast-utils.git"},"license":"MIT","jest":{"coverageReporters":["lcov"],"coverageDirectory":"reports","testPathIgnorePatterns":["/node_modules/","helper.js"]},"gitHead":"c055fab1eee3b5180a905d20cf56f6062c1ba5b5","bugs":{"url":"https://github.com/evcohen/jsx-ast-utils/issues"},"homepage":"https://github.com/evcohen/jsx-ast-utils#readme","_id":"jsx-ast-utils@1.4.1","_shasum":"3867213e8dd79bf1e8f2300c0cfc1efb182c0df1","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.5","_npmUser":{"name":"evcohen","email":"ethanvcohen@gmail.com"},"dist":{"shasum":"3867213e8dd79bf1e8f2300c0cfc1efb182c0df1","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz"},"maintainers":[{"name":"evcohen","email":"ethanvcohen@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/jsx-ast-utils-1.4.1.tgz_1492627284870_0.34522004006430507"},"directories":{}},"2.0.0":{"name":"jsx-ast-utils","version":"2.0.0","description":"AST utility module for statically analyzing JSX","main":"lib/index.js","scripts":{"build":"rimraf lib && babel src --out-dir lib","prepublish":"npm run lint && npm run test && npm run build","coveralls":"cat ./reports/lcov.info | coveralls","lint":"eslint  --config .eslintrc .","lint:fix":"npm run lint -- --fix","pretest":"npm run lint","test":"jest --coverage","test:watch":"npm test -- --watch"},"devDependencies":{"acorn-jsx":"^3.0.1","babel-cli":"^6.14.0","babel-core":"^6.14.0","babel-eslint":"^7.0.0","babel-jest":"^20.0.0","babel-polyfill":"^6.16.0","babel-preset-es2015":"^6.14.0","coveralls":"^2.11.8","eslint":"^3.12.1","eslint-config-airbnb-base":"^11.1.0","eslint-plugin-import":"^2.2.0","jest":"^20.0.0","rimraf":"^2.5.2"},"engines":{"node":">=4.0"},"keywords":["jsx","ast","lint","eslint"],"author":{"name":"Ethan Cohen"},"repository":{"type":"git","url":"git+https://github.com/evcohen/jsx-ast-utils.git"},"license":"MIT","jest":{"coverageReporters":["lcov"],"coverageDirectory":"reports","testPathIgnorePatterns":["/node_modules/","helper.js"]},"dependencies":{"array-includes":"^3.0.3"},"gitHead":"14b3145092183dc0951b1e45db532702b2cb5d0c","bugs":{"url":"https://github.com/evcohen/jsx-ast-utils/issues"},"homepage":"https://github.com/evcohen/jsx-ast-utils#readme","_id":"jsx-ast-utils@2.0.0","_shasum":"ec06a3d60cf307e5e119dac7bad81e89f096f0f8","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.2","_npmUser":{"name":"evcohen","email":"ethanvcohen@gmail.com"},"dist":{"shasum":"ec06a3d60cf307e5e119dac7bad81e89f096f0f8","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/jsx-ast-utils/-/jsx-ast-utils-2.0.0.tgz"},"maintainers":[{"name":"evcohen","email":"ethanvcohen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jsx-ast-utils-2.0.0.tgz_1499464492452_0.7826568274758756"},"directories":{}}},"name":"jsx-ast-utils","time":{"modified":"2017-07-07T21:54:53.697Z","created":"2016-06-09T20:59:12.495Z","1.0.0":"2016-06-09T20:59:12.495Z","1.0.1":"2016-06-10T18:56:48.051Z","1.1.0":"2016-06-10T21:47:55.636Z","1.1.1":"2016-06-12T23:38:00.888Z","1.2.0":"2016-06-15T18:04:24.662Z","1.2.1":"2016-06-15T18:18:25.900Z","1.3.0":"2016-07-12T21:06:21.328Z","1.3.1":"2016-07-13T14:58:09.915Z","1.3.2":"2016-10-12T03:32:51.253Z","1.3.3":"2016-10-28T13:40:13.992Z","1.3.4":"2016-11-15T15:42:10.019Z","1.3.5":"2016-12-14T18:38:34.872Z","1.4.0":"2017-02-03T00:52:52.498Z","1.4.1":"2017-04-19T18:41:26.493Z","2.0.0":"2017-07-07T21:54:53.697Z"},"readmeFilename":"README.md","homepage":"https://github.com/evcohen/jsx-ast-utils#readme"}