├── .eslintrc ├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── LICENSE ├── README.md ├── index.js ├── package-lock.json ├── package.json ├── parse-tag.js └── test └── index.js /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["eslint-config-mlmorg"] 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '9' 4 | - '8' 5 | - '7' 6 | - '6' 7 | - '4' 8 | notifications: 9 | email: false 10 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## `v3.2.0` 4 | 5 | Add support for React fragments 6 | 7 | ## `v3.1.0` 8 | 9 | Support React `v16` 10 | 11 | ## `v3.0.0` 12 | 13 | - Copy properties object to support inextensible records 14 | - **`React` is now a peerDep** - make sure it is a dependency of your project 15 | - **Object.assign is used and *not* poly-filled** 16 | 17 | ## `v2.4.2` 18 | 19 | Remove virtual-hyperscript dependency 20 | 21 | ## `v2.4.1` 22 | 23 | Fix props.children handling when no children argument is passed 24 | 25 | ## `v2.4.0` 26 | 27 | Support React `v15` 28 | 29 | ## `v2.3.0` 30 | 31 | Supports nested datasets and attributes with the `dataset` and `attributes` keys 32 | 33 | ## `v2.2.2` 34 | 35 | Fix bug where a child as the number `0` would not work 36 | 37 | ## `v2.2.1` 38 | 39 | Fix bug where children could not be a number 40 | 41 | ## `v2.2.0` 42 | 43 | Support React `v0.14` 44 | 45 | ## `v2.1.0` 46 | 47 | Support React `v0.13` 48 | 49 | ## `v2.0.0` 50 | 51 | Support React `v0.12` using its new API 52 | 53 | ## `v1.1.0` 54 | 55 | Add support for rendering React components inline using `h(component)` 56 | 57 | ## `v1.0.0` 58 | 59 | Initial implementation 60 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014-2016 Matt Morgan 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # react-hyperscript [](https://travis-ci.org/mlmorg/react-hyperscript) 2 | 3 | Hyperscript syntax for React.js markup. 4 | 5 | ## Usage 6 | 7 | ```js 8 | var h = require('react-hyperscript'); 9 | var React = require('react'); 10 | 11 | var AnotherComponent = require('./another-component'); 12 | 13 | module.exports = React.createClass({ 14 | render: function render() { 15 | return ( 16 | h('div.example', [ 17 | h('h1#heading', 'This is hyperscript'), 18 | h('h2', 'creating React.js markup'), 19 | h(AnotherComponent, {foo: 'bar'}, [ 20 | h('li', [ 21 | h('a', {href: 'http://whatever.com'}, 'One list item') 22 | ]), 23 | h('li', 'Another list item') 24 | ]) 25 | ]) 26 | ); 27 | } 28 | }); 29 | ``` 30 | 31 | ## Documentation 32 | 33 | **If you're using React 0.11, use react-hyperscript 1.x.x. For later versions, use react-hyperscript 2.x.x.** 34 | 35 | **Object.assign is used in this library and is *not* poly-filled.** 36 | 37 | #### `h(componentOrTag, properties, children)` 38 | 39 | Returns a React element. 40 | 41 | - **componentOrTag** `Object|String` - Can be a React component **OR** tag 42 | string with optional css class names/id in the format `h1#some-id.foo.bar`. 43 | If a tag string, it will parse out the tag name and change the `id` and 44 | `className` properties of the `properties` object. 45 | - **properties** `Object` *(optional)* - An object containing the properties 46 | you'd like to set on the element. 47 | - **children** `Array|String` *(optional)* - An array of `h()` children or 48 | a string. This will create child elements or a text node, respectively. 49 | - **listOfElements** `Array` - An array of React elements that will be wrapped with `React.Fragment`. 50 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | var React = require('react'); 3 | 4 | var parseTag = require('./parse-tag'); 5 | 6 | module.exports = h; 7 | 8 | function h(componentOrTag, properties, children) { 9 | // if only one argument which is an array, wrap items with React.Fragment 10 | if (arguments.length === 1 && Array.isArray(componentOrTag)) { 11 | return h(React.Fragment, null, componentOrTag); 12 | } else if (!children && isChildren(properties)) { 13 | // If a child array or text node are passed as the second argument, shift them 14 | children = properties; 15 | properties = {}; 16 | } else if (arguments.length === 2) { 17 | // If no children were passed, we don't want to pass "undefined" 18 | // and potentially overwrite the `children` prop 19 | children = []; 20 | } 21 | 22 | properties = properties ? Object.assign({}, properties) : {}; 23 | 24 | // Supported nested dataset attributes 25 | if (properties.dataset) { 26 | Object.keys(properties.dataset).forEach(function unnest(attrName) { 27 | var dashedAttr = attrName.replace(/([a-z])([A-Z])/, function dash(match) { 28 | return match[0] + '-' + match[1].toLowerCase(); 29 | }); 30 | properties['data-' + dashedAttr] = properties.dataset[attrName]; 31 | }); 32 | 33 | properties.dataset = undefined; 34 | } 35 | 36 | // Support nested attributes 37 | if (properties.attributes) { 38 | Object.keys(properties.attributes).forEach(function unnest(attrName) { 39 | properties[attrName] = properties.attributes[attrName]; 40 | }); 41 | 42 | properties.attributes = undefined; 43 | } 44 | 45 | // When a selector, parse the tag name and fill out the properties object 46 | if (typeof componentOrTag === 'string') { 47 | componentOrTag = parseTag(componentOrTag, properties); 48 | } 49 | 50 | // Create the element 51 | var args = [componentOrTag, properties].concat(children); 52 | return React.createElement.apply(React, args); 53 | } 54 | 55 | function isChildren(x) { 56 | return typeof x === 'string' || typeof x === 'number' || Array.isArray(x); 57 | } 58 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-hyperscript", 3 | "version": "3.2.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "acorn": { 8 | "version": "5.3.0", 9 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", 10 | "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==", 11 | "dev": true 12 | }, 13 | "acorn-jsx": { 14 | "version": "3.0.1", 15 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", 16 | "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", 17 | "dev": true, 18 | "requires": { 19 | "acorn": "3.3.0" 20 | }, 21 | "dependencies": { 22 | "acorn": { 23 | "version": "3.3.0", 24 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", 25 | "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", 26 | "dev": true 27 | } 28 | } 29 | }, 30 | "ajv": { 31 | "version": "4.11.8", 32 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", 33 | "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", 34 | "dev": true, 35 | "requires": { 36 | "co": "4.6.0", 37 | "json-stable-stringify": "1.0.1" 38 | } 39 | }, 40 | "ajv-keywords": { 41 | "version": "1.5.1", 42 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", 43 | "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", 44 | "dev": true 45 | }, 46 | "ansi-escapes": { 47 | "version": "1.4.0", 48 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", 49 | "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", 50 | "dev": true 51 | }, 52 | "ansi-regex": { 53 | "version": "2.1.1", 54 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 55 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 56 | "dev": true 57 | }, 58 | "ansi-styles": { 59 | "version": "2.2.1", 60 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 61 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 62 | "dev": true 63 | }, 64 | "argparse": { 65 | "version": "1.0.9", 66 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", 67 | "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", 68 | "dev": true, 69 | "requires": { 70 | "sprintf-js": "1.0.3" 71 | } 72 | }, 73 | "array-union": { 74 | "version": "1.0.2", 75 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", 76 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", 77 | "dev": true, 78 | "requires": { 79 | "array-uniq": "1.0.3" 80 | } 81 | }, 82 | "array-uniq": { 83 | "version": "1.0.3", 84 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 85 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", 86 | "dev": true 87 | }, 88 | "arrify": { 89 | "version": "1.0.1", 90 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 91 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", 92 | "dev": true 93 | }, 94 | "asap": { 95 | "version": "2.0.6", 96 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", 97 | "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", 98 | "dev": true 99 | }, 100 | "balanced-match": { 101 | "version": "1.0.0", 102 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 103 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 104 | "dev": true 105 | }, 106 | "brace-expansion": { 107 | "version": "1.1.8", 108 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 109 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 110 | "dev": true, 111 | "requires": { 112 | "balanced-match": "1.0.0", 113 | "concat-map": "0.0.1" 114 | } 115 | }, 116 | "caller-path": { 117 | "version": "0.1.0", 118 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", 119 | "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", 120 | "dev": true, 121 | "requires": { 122 | "callsites": "0.2.0" 123 | } 124 | }, 125 | "callsites": { 126 | "version": "0.2.0", 127 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", 128 | "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", 129 | "dev": true 130 | }, 131 | "chalk": { 132 | "version": "1.1.3", 133 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 134 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 135 | "dev": true, 136 | "requires": { 137 | "ansi-styles": "2.2.1", 138 | "escape-string-regexp": "1.0.5", 139 | "has-ansi": "2.0.0", 140 | "strip-ansi": "3.0.1", 141 | "supports-color": "2.0.0" 142 | } 143 | }, 144 | "circular-json": { 145 | "version": "0.3.3", 146 | "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", 147 | "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", 148 | "dev": true 149 | }, 150 | "cli-cursor": { 151 | "version": "1.0.2", 152 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", 153 | "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", 154 | "dev": true, 155 | "requires": { 156 | "restore-cursor": "1.0.1" 157 | } 158 | }, 159 | "cli-width": { 160 | "version": "2.2.0", 161 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 162 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", 163 | "dev": true 164 | }, 165 | "co": { 166 | "version": "4.6.0", 167 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 168 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", 169 | "dev": true 170 | }, 171 | "code-point-at": { 172 | "version": "1.1.0", 173 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 174 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", 175 | "dev": true 176 | }, 177 | "concat-map": { 178 | "version": "0.0.1", 179 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 180 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 181 | "dev": true 182 | }, 183 | "concat-stream": { 184 | "version": "1.6.0", 185 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", 186 | "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", 187 | "dev": true, 188 | "requires": { 189 | "inherits": "2.0.3", 190 | "readable-stream": "2.3.3", 191 | "typedarray": "0.0.6" 192 | } 193 | }, 194 | "core-js": { 195 | "version": "1.2.7", 196 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", 197 | "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", 198 | "dev": true 199 | }, 200 | "core-util-is": { 201 | "version": "1.0.2", 202 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 203 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 204 | "dev": true 205 | }, 206 | "create-react-class": { 207 | "version": "15.6.2", 208 | "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.2.tgz", 209 | "integrity": "sha1-zx7RXxKq1/FO9fLf4F5sQvke8Co=", 210 | "dev": true, 211 | "requires": { 212 | "fbjs": "0.8.16", 213 | "loose-envify": "1.3.1", 214 | "object-assign": "4.1.1" 215 | } 216 | }, 217 | "d": { 218 | "version": "1.0.0", 219 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", 220 | "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", 221 | "dev": true, 222 | "requires": { 223 | "es5-ext": "0.10.38" 224 | } 225 | }, 226 | "debug": { 227 | "version": "2.6.9", 228 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 229 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 230 | "dev": true, 231 | "requires": { 232 | "ms": "2.0.0" 233 | } 234 | }, 235 | "deep-equal": { 236 | "version": "1.0.1", 237 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", 238 | "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", 239 | "dev": true 240 | }, 241 | "deep-is": { 242 | "version": "0.1.3", 243 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 244 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 245 | "dev": true 246 | }, 247 | "define-properties": { 248 | "version": "1.1.2", 249 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", 250 | "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", 251 | "dev": true, 252 | "requires": { 253 | "foreach": "2.0.5", 254 | "object-keys": "1.0.11" 255 | } 256 | }, 257 | "defined": { 258 | "version": "1.0.0", 259 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 260 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", 261 | "dev": true 262 | }, 263 | "del": { 264 | "version": "2.2.2", 265 | "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", 266 | "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", 267 | "dev": true, 268 | "requires": { 269 | "globby": "5.0.0", 270 | "is-path-cwd": "1.0.0", 271 | "is-path-in-cwd": "1.0.0", 272 | "object-assign": "4.1.1", 273 | "pify": "2.3.0", 274 | "pinkie-promise": "2.0.1", 275 | "rimraf": "2.6.2" 276 | } 277 | }, 278 | "doctrine": { 279 | "version": "1.5.0", 280 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", 281 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", 282 | "dev": true, 283 | "requires": { 284 | "esutils": "2.0.2", 285 | "isarray": "1.0.0" 286 | } 287 | }, 288 | "duplexer": { 289 | "version": "0.1.1", 290 | "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", 291 | "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", 292 | "dev": true 293 | }, 294 | "encoding": { 295 | "version": "0.1.12", 296 | "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", 297 | "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", 298 | "dev": true, 299 | "requires": { 300 | "iconv-lite": "0.4.19" 301 | } 302 | }, 303 | "es-abstract": { 304 | "version": "1.10.0", 305 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", 306 | "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", 307 | "dev": true, 308 | "requires": { 309 | "es-to-primitive": "1.1.1", 310 | "function-bind": "1.1.1", 311 | "has": "1.0.1", 312 | "is-callable": "1.1.3", 313 | "is-regex": "1.0.4" 314 | } 315 | }, 316 | "es-to-primitive": { 317 | "version": "1.1.1", 318 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", 319 | "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", 320 | "dev": true, 321 | "requires": { 322 | "is-callable": "1.1.3", 323 | "is-date-object": "1.0.1", 324 | "is-symbol": "1.0.1" 325 | } 326 | }, 327 | "es5-ext": { 328 | "version": "0.10.38", 329 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.38.tgz", 330 | "integrity": "sha512-jCMyePo7AXbUESwbl8Qi01VSH2piY9s/a3rSU/5w/MlTIx8HPL1xn2InGN8ejt/xulcJgnTO7vqNtOAxzYd2Kg==", 331 | "dev": true, 332 | "requires": { 333 | "es6-iterator": "2.0.3", 334 | "es6-symbol": "3.1.1" 335 | } 336 | }, 337 | "es6-iterator": { 338 | "version": "2.0.3", 339 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", 340 | "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", 341 | "dev": true, 342 | "requires": { 343 | "d": "1.0.0", 344 | "es5-ext": "0.10.38", 345 | "es6-symbol": "3.1.1" 346 | } 347 | }, 348 | "es6-map": { 349 | "version": "0.1.5", 350 | "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", 351 | "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", 352 | "dev": true, 353 | "requires": { 354 | "d": "1.0.0", 355 | "es5-ext": "0.10.38", 356 | "es6-iterator": "2.0.3", 357 | "es6-set": "0.1.5", 358 | "es6-symbol": "3.1.1", 359 | "event-emitter": "0.3.5" 360 | } 361 | }, 362 | "es6-set": { 363 | "version": "0.1.5", 364 | "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", 365 | "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", 366 | "dev": true, 367 | "requires": { 368 | "d": "1.0.0", 369 | "es5-ext": "0.10.38", 370 | "es6-iterator": "2.0.3", 371 | "es6-symbol": "3.1.1", 372 | "event-emitter": "0.3.5" 373 | } 374 | }, 375 | "es6-symbol": { 376 | "version": "3.1.1", 377 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", 378 | "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", 379 | "dev": true, 380 | "requires": { 381 | "d": "1.0.0", 382 | "es5-ext": "0.10.38" 383 | } 384 | }, 385 | "es6-weak-map": { 386 | "version": "2.0.2", 387 | "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", 388 | "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", 389 | "dev": true, 390 | "requires": { 391 | "d": "1.0.0", 392 | "es5-ext": "0.10.38", 393 | "es6-iterator": "2.0.3", 394 | "es6-symbol": "3.1.1" 395 | } 396 | }, 397 | "escape-string-regexp": { 398 | "version": "1.0.5", 399 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 400 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 401 | "dev": true 402 | }, 403 | "escope": { 404 | "version": "3.6.0", 405 | "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", 406 | "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", 407 | "dev": true, 408 | "requires": { 409 | "es6-map": "0.1.5", 410 | "es6-weak-map": "2.0.2", 411 | "esrecurse": "4.2.0", 412 | "estraverse": "4.2.0" 413 | } 414 | }, 415 | "eslint": { 416 | "version": "2.13.1", 417 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-2.13.1.tgz", 418 | "integrity": "sha1-5MyPoPAJ+4KaquI4VaKTYL4fbBE=", 419 | "dev": true, 420 | "requires": { 421 | "chalk": "1.1.3", 422 | "concat-stream": "1.6.0", 423 | "debug": "2.6.9", 424 | "doctrine": "1.5.0", 425 | "es6-map": "0.1.5", 426 | "escope": "3.6.0", 427 | "espree": "3.5.2", 428 | "estraverse": "4.2.0", 429 | "esutils": "2.0.2", 430 | "file-entry-cache": "1.3.1", 431 | "glob": "7.1.2", 432 | "globals": "9.18.0", 433 | "ignore": "3.3.7", 434 | "imurmurhash": "0.1.4", 435 | "inquirer": "0.12.0", 436 | "is-my-json-valid": "2.17.1", 437 | "is-resolvable": "1.0.1", 438 | "js-yaml": "3.10.0", 439 | "json-stable-stringify": "1.0.1", 440 | "levn": "0.3.0", 441 | "lodash": "4.17.4", 442 | "mkdirp": "0.5.1", 443 | "optionator": "0.8.2", 444 | "path-is-absolute": "1.0.1", 445 | "path-is-inside": "1.0.2", 446 | "pluralize": "1.2.1", 447 | "progress": "1.1.8", 448 | "require-uncached": "1.0.3", 449 | "shelljs": "0.6.1", 450 | "strip-json-comments": "1.0.4", 451 | "table": "3.8.3", 452 | "text-table": "0.2.0", 453 | "user-home": "2.0.0" 454 | } 455 | }, 456 | "eslint-config-mlmorg": { 457 | "version": "2.0.2", 458 | "resolved": "https://registry.npmjs.org/eslint-config-mlmorg/-/eslint-config-mlmorg-2.0.2.tgz", 459 | "integrity": "sha1-RlBauH/wUqL4uAOj5JXEUXd5bNM=", 460 | "dev": true 461 | }, 462 | "espree": { 463 | "version": "3.5.2", 464 | "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", 465 | "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", 466 | "dev": true, 467 | "requires": { 468 | "acorn": "5.3.0", 469 | "acorn-jsx": "3.0.1" 470 | } 471 | }, 472 | "esprima": { 473 | "version": "4.0.0", 474 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", 475 | "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", 476 | "dev": true 477 | }, 478 | "esrecurse": { 479 | "version": "4.2.0", 480 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", 481 | "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", 482 | "dev": true, 483 | "requires": { 484 | "estraverse": "4.2.0", 485 | "object-assign": "4.1.1" 486 | } 487 | }, 488 | "estraverse": { 489 | "version": "4.2.0", 490 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", 491 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", 492 | "dev": true 493 | }, 494 | "esutils": { 495 | "version": "2.0.2", 496 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 497 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 498 | "dev": true 499 | }, 500 | "event-emitter": { 501 | "version": "0.3.5", 502 | "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", 503 | "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", 504 | "dev": true, 505 | "requires": { 506 | "d": "1.0.0", 507 | "es5-ext": "0.10.38" 508 | } 509 | }, 510 | "exit-hook": { 511 | "version": "1.1.1", 512 | "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", 513 | "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", 514 | "dev": true 515 | }, 516 | "fast-levenshtein": { 517 | "version": "2.0.6", 518 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 519 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 520 | "dev": true 521 | }, 522 | "fbjs": { 523 | "version": "0.8.16", 524 | "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", 525 | "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", 526 | "dev": true, 527 | "requires": { 528 | "core-js": "1.2.7", 529 | "isomorphic-fetch": "2.2.1", 530 | "loose-envify": "1.3.1", 531 | "object-assign": "4.1.1", 532 | "promise": "7.3.1", 533 | "setimmediate": "1.0.5", 534 | "ua-parser-js": "0.7.17" 535 | } 536 | }, 537 | "figures": { 538 | "version": "1.7.0", 539 | "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", 540 | "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", 541 | "dev": true, 542 | "requires": { 543 | "escape-string-regexp": "1.0.5", 544 | "object-assign": "4.1.1" 545 | } 546 | }, 547 | "file-entry-cache": { 548 | "version": "1.3.1", 549 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-1.3.1.tgz", 550 | "integrity": "sha1-RMYepgeuS+nBQC9B9EJwy/4zT/g=", 551 | "dev": true, 552 | "requires": { 553 | "flat-cache": "1.3.0", 554 | "object-assign": "4.1.1" 555 | } 556 | }, 557 | "flat-cache": { 558 | "version": "1.3.0", 559 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", 560 | "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", 561 | "dev": true, 562 | "requires": { 563 | "circular-json": "0.3.3", 564 | "del": "2.2.2", 565 | "graceful-fs": "4.1.11", 566 | "write": "0.2.1" 567 | } 568 | }, 569 | "for-each": { 570 | "version": "0.3.2", 571 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz", 572 | "integrity": "sha1-LEBFC5NI6X8oEyJZO6lnBLmr1NQ=", 573 | "dev": true, 574 | "requires": { 575 | "is-function": "1.0.1" 576 | } 577 | }, 578 | "foreach": { 579 | "version": "2.0.5", 580 | "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", 581 | "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", 582 | "dev": true 583 | }, 584 | "fs.realpath": { 585 | "version": "1.0.0", 586 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 587 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 588 | "dev": true 589 | }, 590 | "function-bind": { 591 | "version": "1.1.1", 592 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 593 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 594 | "dev": true 595 | }, 596 | "generate-function": { 597 | "version": "2.0.0", 598 | "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", 599 | "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", 600 | "dev": true 601 | }, 602 | "generate-object-property": { 603 | "version": "1.2.0", 604 | "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", 605 | "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", 606 | "dev": true, 607 | "requires": { 608 | "is-property": "1.0.2" 609 | } 610 | }, 611 | "glob": { 612 | "version": "7.1.2", 613 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 614 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 615 | "dev": true, 616 | "requires": { 617 | "fs.realpath": "1.0.0", 618 | "inflight": "1.0.6", 619 | "inherits": "2.0.3", 620 | "minimatch": "3.0.4", 621 | "once": "1.4.0", 622 | "path-is-absolute": "1.0.1" 623 | } 624 | }, 625 | "globals": { 626 | "version": "9.18.0", 627 | "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 628 | "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", 629 | "dev": true 630 | }, 631 | "globby": { 632 | "version": "5.0.0", 633 | "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", 634 | "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", 635 | "dev": true, 636 | "requires": { 637 | "array-union": "1.0.2", 638 | "arrify": "1.0.1", 639 | "glob": "7.1.2", 640 | "object-assign": "4.1.1", 641 | "pify": "2.3.0", 642 | "pinkie-promise": "2.0.1" 643 | } 644 | }, 645 | "graceful-fs": { 646 | "version": "4.1.11", 647 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 648 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 649 | "dev": true 650 | }, 651 | "has": { 652 | "version": "1.0.1", 653 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", 654 | "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", 655 | "dev": true, 656 | "requires": { 657 | "function-bind": "1.1.1" 658 | } 659 | }, 660 | "has-ansi": { 661 | "version": "2.0.0", 662 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 663 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 664 | "dev": true, 665 | "requires": { 666 | "ansi-regex": "2.1.1" 667 | } 668 | }, 669 | "iconv-lite": { 670 | "version": "0.4.19", 671 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", 672 | "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", 673 | "dev": true 674 | }, 675 | "ignore": { 676 | "version": "3.3.7", 677 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", 678 | "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", 679 | "dev": true 680 | }, 681 | "imurmurhash": { 682 | "version": "0.1.4", 683 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 684 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 685 | "dev": true 686 | }, 687 | "inflight": { 688 | "version": "1.0.6", 689 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 690 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 691 | "dev": true, 692 | "requires": { 693 | "once": "1.4.0", 694 | "wrappy": "1.0.2" 695 | } 696 | }, 697 | "inherits": { 698 | "version": "2.0.3", 699 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 700 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 701 | "dev": true 702 | }, 703 | "inquirer": { 704 | "version": "0.12.0", 705 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", 706 | "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", 707 | "dev": true, 708 | "requires": { 709 | "ansi-escapes": "1.4.0", 710 | "ansi-regex": "2.1.1", 711 | "chalk": "1.1.3", 712 | "cli-cursor": "1.0.2", 713 | "cli-width": "2.2.0", 714 | "figures": "1.7.0", 715 | "lodash": "4.17.4", 716 | "readline2": "1.0.1", 717 | "run-async": "0.1.0", 718 | "rx-lite": "3.1.2", 719 | "string-width": "1.0.2", 720 | "strip-ansi": "3.0.1", 721 | "through": "2.3.8" 722 | } 723 | }, 724 | "is-callable": { 725 | "version": "1.1.3", 726 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", 727 | "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", 728 | "dev": true 729 | }, 730 | "is-date-object": { 731 | "version": "1.0.1", 732 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", 733 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", 734 | "dev": true 735 | }, 736 | "is-finite": { 737 | "version": "1.0.2", 738 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", 739 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", 740 | "dev": true, 741 | "requires": { 742 | "number-is-nan": "1.0.1" 743 | } 744 | }, 745 | "is-fullwidth-code-point": { 746 | "version": "1.0.0", 747 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 748 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 749 | "dev": true, 750 | "requires": { 751 | "number-is-nan": "1.0.1" 752 | } 753 | }, 754 | "is-function": { 755 | "version": "1.0.1", 756 | "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", 757 | "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=", 758 | "dev": true 759 | }, 760 | "is-my-json-valid": { 761 | "version": "2.17.1", 762 | "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz", 763 | "integrity": "sha512-Q2khNw+oBlWuaYvEEHtKSw/pCxD2L5Rc1C+UQme9X6JdRDh7m5D7HkozA0qa3DUkQ6VzCnEm8mVIQPyIRkI5sQ==", 764 | "dev": true, 765 | "requires": { 766 | "generate-function": "2.0.0", 767 | "generate-object-property": "1.2.0", 768 | "jsonpointer": "4.0.1", 769 | "xtend": "4.0.1" 770 | } 771 | }, 772 | "is-path-cwd": { 773 | "version": "1.0.0", 774 | "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", 775 | "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", 776 | "dev": true 777 | }, 778 | "is-path-in-cwd": { 779 | "version": "1.0.0", 780 | "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", 781 | "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", 782 | "dev": true, 783 | "requires": { 784 | "is-path-inside": "1.0.1" 785 | } 786 | }, 787 | "is-path-inside": { 788 | "version": "1.0.1", 789 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", 790 | "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", 791 | "dev": true, 792 | "requires": { 793 | "path-is-inside": "1.0.2" 794 | } 795 | }, 796 | "is-property": { 797 | "version": "1.0.2", 798 | "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", 799 | "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", 800 | "dev": true 801 | }, 802 | "is-regex": { 803 | "version": "1.0.4", 804 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 805 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 806 | "dev": true, 807 | "requires": { 808 | "has": "1.0.1" 809 | } 810 | }, 811 | "is-resolvable": { 812 | "version": "1.0.1", 813 | "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.1.tgz", 814 | "integrity": "sha512-y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g==", 815 | "dev": true 816 | }, 817 | "is-stream": { 818 | "version": "1.1.0", 819 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 820 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 821 | "dev": true 822 | }, 823 | "is-symbol": { 824 | "version": "1.0.1", 825 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", 826 | "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", 827 | "dev": true 828 | }, 829 | "isarray": { 830 | "version": "1.0.0", 831 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 832 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 833 | "dev": true 834 | }, 835 | "isomorphic-fetch": { 836 | "version": "2.2.1", 837 | "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", 838 | "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", 839 | "dev": true, 840 | "requires": { 841 | "node-fetch": "1.7.3", 842 | "whatwg-fetch": "2.0.3" 843 | } 844 | }, 845 | "js-tokens": { 846 | "version": "3.0.2", 847 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 848 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 849 | "dev": true 850 | }, 851 | "js-yaml": { 852 | "version": "3.10.0", 853 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", 854 | "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", 855 | "dev": true, 856 | "requires": { 857 | "argparse": "1.0.9", 858 | "esprima": "4.0.0" 859 | } 860 | }, 861 | "json-stable-stringify": { 862 | "version": "1.0.1", 863 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", 864 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", 865 | "dev": true, 866 | "requires": { 867 | "jsonify": "0.0.0" 868 | } 869 | }, 870 | "jsonify": { 871 | "version": "0.0.0", 872 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 873 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", 874 | "dev": true 875 | }, 876 | "jsonpointer": { 877 | "version": "4.0.1", 878 | "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", 879 | "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", 880 | "dev": true 881 | }, 882 | "levn": { 883 | "version": "0.3.0", 884 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 885 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 886 | "dev": true, 887 | "requires": { 888 | "prelude-ls": "1.1.2", 889 | "type-check": "0.3.2" 890 | } 891 | }, 892 | "lodash": { 893 | "version": "4.17.4", 894 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 895 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", 896 | "dev": true 897 | }, 898 | "loose-envify": { 899 | "version": "1.3.1", 900 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", 901 | "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", 902 | "dev": true, 903 | "requires": { 904 | "js-tokens": "3.0.2" 905 | } 906 | }, 907 | "minimatch": { 908 | "version": "3.0.4", 909 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 910 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 911 | "dev": true, 912 | "requires": { 913 | "brace-expansion": "1.1.8" 914 | } 915 | }, 916 | "minimist": { 917 | "version": "0.0.8", 918 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 919 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 920 | "dev": true 921 | }, 922 | "mkdirp": { 923 | "version": "0.5.1", 924 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 925 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 926 | "dev": true, 927 | "requires": { 928 | "minimist": "0.0.8" 929 | } 930 | }, 931 | "ms": { 932 | "version": "2.0.0", 933 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 934 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 935 | "dev": true 936 | }, 937 | "mute-stream": { 938 | "version": "0.0.5", 939 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", 940 | "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", 941 | "dev": true 942 | }, 943 | "node-fetch": { 944 | "version": "1.7.3", 945 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", 946 | "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", 947 | "dev": true, 948 | "requires": { 949 | "encoding": "0.1.12", 950 | "is-stream": "1.1.0" 951 | } 952 | }, 953 | "number-is-nan": { 954 | "version": "1.0.1", 955 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 956 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 957 | "dev": true 958 | }, 959 | "object-assign": { 960 | "version": "4.1.1", 961 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 962 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 963 | "dev": true 964 | }, 965 | "object-inspect": { 966 | "version": "1.3.0", 967 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.3.0.tgz", 968 | "integrity": "sha512-OHHnLgLNXpM++GnJRyyhbr2bwl3pPVm4YvaraHrRvDt/N3r+s/gDVHciA7EJBTkijKXj61ssgSAikq1fb0IBRg==", 969 | "dev": true 970 | }, 971 | "object-keys": { 972 | "version": "1.0.11", 973 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", 974 | "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", 975 | "dev": true 976 | }, 977 | "once": { 978 | "version": "1.4.0", 979 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 980 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 981 | "dev": true, 982 | "requires": { 983 | "wrappy": "1.0.2" 984 | } 985 | }, 986 | "onetime": { 987 | "version": "1.1.0", 988 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", 989 | "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", 990 | "dev": true 991 | }, 992 | "optionator": { 993 | "version": "0.8.2", 994 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", 995 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", 996 | "dev": true, 997 | "requires": { 998 | "deep-is": "0.1.3", 999 | "fast-levenshtein": "2.0.6", 1000 | "levn": "0.3.0", 1001 | "prelude-ls": "1.1.2", 1002 | "type-check": "0.3.2", 1003 | "wordwrap": "1.0.0" 1004 | } 1005 | }, 1006 | "os-homedir": { 1007 | "version": "1.0.2", 1008 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 1009 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 1010 | "dev": true 1011 | }, 1012 | "parse-ms": { 1013 | "version": "1.0.1", 1014 | "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", 1015 | "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", 1016 | "dev": true 1017 | }, 1018 | "path-is-absolute": { 1019 | "version": "1.0.1", 1020 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1021 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1022 | "dev": true 1023 | }, 1024 | "path-is-inside": { 1025 | "version": "1.0.2", 1026 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 1027 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 1028 | "dev": true 1029 | }, 1030 | "path-parse": { 1031 | "version": "1.0.5", 1032 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", 1033 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", 1034 | "dev": true 1035 | }, 1036 | "pify": { 1037 | "version": "2.3.0", 1038 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1039 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 1040 | "dev": true 1041 | }, 1042 | "pinkie": { 1043 | "version": "2.0.4", 1044 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1045 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 1046 | "dev": true 1047 | }, 1048 | "pinkie-promise": { 1049 | "version": "2.0.1", 1050 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1051 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 1052 | "dev": true, 1053 | "requires": { 1054 | "pinkie": "2.0.4" 1055 | } 1056 | }, 1057 | "plur": { 1058 | "version": "1.0.0", 1059 | "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", 1060 | "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=", 1061 | "dev": true 1062 | }, 1063 | "pluralize": { 1064 | "version": "1.2.1", 1065 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", 1066 | "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", 1067 | "dev": true 1068 | }, 1069 | "prelude-ls": { 1070 | "version": "1.1.2", 1071 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1072 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 1073 | "dev": true 1074 | }, 1075 | "pretty-ms": { 1076 | "version": "2.1.0", 1077 | "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", 1078 | "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", 1079 | "dev": true, 1080 | "requires": { 1081 | "is-finite": "1.0.2", 1082 | "parse-ms": "1.0.1", 1083 | "plur": "1.0.0" 1084 | } 1085 | }, 1086 | "process-nextick-args": { 1087 | "version": "1.0.7", 1088 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 1089 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", 1090 | "dev": true 1091 | }, 1092 | "progress": { 1093 | "version": "1.1.8", 1094 | "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", 1095 | "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", 1096 | "dev": true 1097 | }, 1098 | "promise": { 1099 | "version": "7.3.1", 1100 | "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", 1101 | "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", 1102 | "dev": true, 1103 | "requires": { 1104 | "asap": "2.0.6" 1105 | } 1106 | }, 1107 | "prop-types": { 1108 | "version": "15.6.0", 1109 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", 1110 | "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", 1111 | "dev": true, 1112 | "requires": { 1113 | "fbjs": "0.8.16", 1114 | "loose-envify": "1.3.1", 1115 | "object-assign": "4.1.1" 1116 | } 1117 | }, 1118 | "re-emitter": { 1119 | "version": "1.1.3", 1120 | "resolved": "https://registry.npmjs.org/re-emitter/-/re-emitter-1.1.3.tgz", 1121 | "integrity": "sha1-+p4xn/3u6zWycpbvDz03TawvUqc=", 1122 | "dev": true 1123 | }, 1124 | "react": { 1125 | "version": "16.2.0", 1126 | "resolved": "https://registry.npmjs.org/react/-/react-16.2.0.tgz", 1127 | "integrity": "sha512-ZmIomM7EE1DvPEnSFAHZn9Vs9zJl5A9H7el0EGTE6ZbW9FKe/14IYAlPbC8iH25YarEQxZL+E8VW7Mi7kfQrDQ==", 1128 | "dev": true, 1129 | "requires": { 1130 | "fbjs": "0.8.16", 1131 | "loose-envify": "1.3.1", 1132 | "object-assign": "4.1.1", 1133 | "prop-types": "15.6.0" 1134 | } 1135 | }, 1136 | "react-dom": { 1137 | "version": "16.2.0", 1138 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.2.0.tgz", 1139 | "integrity": "sha512-zpGAdwHVn9K0091d+hr+R0qrjoJ84cIBFL2uU60KvWBPfZ7LPSrfqviTxGHWN0sjPZb2hxWzMexwrvJdKePvjg==", 1140 | "dev": true, 1141 | "requires": { 1142 | "fbjs": "0.8.16", 1143 | "loose-envify": "1.3.1", 1144 | "object-assign": "4.1.1", 1145 | "prop-types": "15.6.0" 1146 | } 1147 | }, 1148 | "readable-stream": { 1149 | "version": "2.3.3", 1150 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 1151 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 1152 | "dev": true, 1153 | "requires": { 1154 | "core-util-is": "1.0.2", 1155 | "inherits": "2.0.3", 1156 | "isarray": "1.0.0", 1157 | "process-nextick-args": "1.0.7", 1158 | "safe-buffer": "5.1.1", 1159 | "string_decoder": "1.0.3", 1160 | "util-deprecate": "1.0.2" 1161 | } 1162 | }, 1163 | "readline2": { 1164 | "version": "1.0.1", 1165 | "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", 1166 | "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", 1167 | "dev": true, 1168 | "requires": { 1169 | "code-point-at": "1.1.0", 1170 | "is-fullwidth-code-point": "1.0.0", 1171 | "mute-stream": "0.0.5" 1172 | } 1173 | }, 1174 | "repeat-string": { 1175 | "version": "1.6.1", 1176 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 1177 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 1178 | "dev": true 1179 | }, 1180 | "require-uncached": { 1181 | "version": "1.0.3", 1182 | "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", 1183 | "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", 1184 | "dev": true, 1185 | "requires": { 1186 | "caller-path": "0.1.0", 1187 | "resolve-from": "1.0.1" 1188 | } 1189 | }, 1190 | "resolve": { 1191 | "version": "1.4.0", 1192 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", 1193 | "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", 1194 | "dev": true, 1195 | "requires": { 1196 | "path-parse": "1.0.5" 1197 | } 1198 | }, 1199 | "resolve-from": { 1200 | "version": "1.0.1", 1201 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", 1202 | "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", 1203 | "dev": true 1204 | }, 1205 | "restore-cursor": { 1206 | "version": "1.0.1", 1207 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", 1208 | "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", 1209 | "dev": true, 1210 | "requires": { 1211 | "exit-hook": "1.1.1", 1212 | "onetime": "1.1.0" 1213 | } 1214 | }, 1215 | "resumer": { 1216 | "version": "0.0.0", 1217 | "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", 1218 | "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", 1219 | "dev": true, 1220 | "requires": { 1221 | "through": "2.3.8" 1222 | } 1223 | }, 1224 | "rimraf": { 1225 | "version": "2.6.2", 1226 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", 1227 | "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", 1228 | "dev": true, 1229 | "requires": { 1230 | "glob": "7.1.2" 1231 | } 1232 | }, 1233 | "run-async": { 1234 | "version": "0.1.0", 1235 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", 1236 | "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", 1237 | "dev": true, 1238 | "requires": { 1239 | "once": "1.4.0" 1240 | } 1241 | }, 1242 | "rx-lite": { 1243 | "version": "3.1.2", 1244 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", 1245 | "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", 1246 | "dev": true 1247 | }, 1248 | "safe-buffer": { 1249 | "version": "5.1.1", 1250 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 1251 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", 1252 | "dev": true 1253 | }, 1254 | "setimmediate": { 1255 | "version": "1.0.5", 1256 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 1257 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", 1258 | "dev": true 1259 | }, 1260 | "shelljs": { 1261 | "version": "0.6.1", 1262 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.1.tgz", 1263 | "integrity": "sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg=", 1264 | "dev": true 1265 | }, 1266 | "slice-ansi": { 1267 | "version": "0.0.4", 1268 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", 1269 | "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", 1270 | "dev": true 1271 | }, 1272 | "split": { 1273 | "version": "1.0.1", 1274 | "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", 1275 | "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", 1276 | "dev": true, 1277 | "requires": { 1278 | "through": "2.3.8" 1279 | } 1280 | }, 1281 | "sprintf-js": { 1282 | "version": "1.0.3", 1283 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1284 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1285 | "dev": true 1286 | }, 1287 | "string-width": { 1288 | "version": "1.0.2", 1289 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 1290 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 1291 | "dev": true, 1292 | "requires": { 1293 | "code-point-at": "1.1.0", 1294 | "is-fullwidth-code-point": "1.0.0", 1295 | "strip-ansi": "3.0.1" 1296 | } 1297 | }, 1298 | "string.prototype.trim": { 1299 | "version": "1.1.2", 1300 | "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", 1301 | "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", 1302 | "dev": true, 1303 | "requires": { 1304 | "define-properties": "1.1.2", 1305 | "es-abstract": "1.10.0", 1306 | "function-bind": "1.1.1" 1307 | } 1308 | }, 1309 | "string_decoder": { 1310 | "version": "1.0.3", 1311 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 1312 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 1313 | "dev": true, 1314 | "requires": { 1315 | "safe-buffer": "5.1.1" 1316 | } 1317 | }, 1318 | "strip-ansi": { 1319 | "version": "3.0.1", 1320 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1321 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1322 | "dev": true, 1323 | "requires": { 1324 | "ansi-regex": "2.1.1" 1325 | } 1326 | }, 1327 | "strip-json-comments": { 1328 | "version": "1.0.4", 1329 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", 1330 | "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", 1331 | "dev": true 1332 | }, 1333 | "supports-color": { 1334 | "version": "2.0.0", 1335 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1336 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1337 | "dev": true 1338 | }, 1339 | "table": { 1340 | "version": "3.8.3", 1341 | "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", 1342 | "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", 1343 | "dev": true, 1344 | "requires": { 1345 | "ajv": "4.11.8", 1346 | "ajv-keywords": "1.5.1", 1347 | "chalk": "1.1.3", 1348 | "lodash": "4.17.4", 1349 | "slice-ansi": "0.0.4", 1350 | "string-width": "2.1.1" 1351 | }, 1352 | "dependencies": { 1353 | "ansi-regex": { 1354 | "version": "3.0.0", 1355 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 1356 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 1357 | "dev": true 1358 | }, 1359 | "is-fullwidth-code-point": { 1360 | "version": "2.0.0", 1361 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1362 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1363 | "dev": true 1364 | }, 1365 | "string-width": { 1366 | "version": "2.1.1", 1367 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 1368 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 1369 | "dev": true, 1370 | "requires": { 1371 | "is-fullwidth-code-point": "2.0.0", 1372 | "strip-ansi": "4.0.0" 1373 | } 1374 | }, 1375 | "strip-ansi": { 1376 | "version": "4.0.0", 1377 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 1378 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 1379 | "dev": true, 1380 | "requires": { 1381 | "ansi-regex": "3.0.0" 1382 | } 1383 | } 1384 | } 1385 | }, 1386 | "tap-out": { 1387 | "version": "1.4.2", 1388 | "resolved": "https://registry.npmjs.org/tap-out/-/tap-out-1.4.2.tgz", 1389 | "integrity": "sha1-yQfsG/lAURHQiCY+kvVgi4jLs3o=", 1390 | "dev": true, 1391 | "requires": { 1392 | "re-emitter": "1.1.3", 1393 | "readable-stream": "2.3.3", 1394 | "split": "1.0.1", 1395 | "trim": "0.0.1" 1396 | } 1397 | }, 1398 | "tap-spec": { 1399 | "version": "4.1.1", 1400 | "resolved": "https://registry.npmjs.org/tap-spec/-/tap-spec-4.1.1.tgz", 1401 | "integrity": "sha1-4unyb1IIIysfViKIyXYk1YqI8Fo=", 1402 | "dev": true, 1403 | "requires": { 1404 | "chalk": "1.1.3", 1405 | "duplexer": "0.1.1", 1406 | "figures": "1.7.0", 1407 | "lodash": "3.10.1", 1408 | "pretty-ms": "2.1.0", 1409 | "repeat-string": "1.6.1", 1410 | "tap-out": "1.4.2", 1411 | "through2": "2.0.3" 1412 | }, 1413 | "dependencies": { 1414 | "lodash": { 1415 | "version": "3.10.1", 1416 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", 1417 | "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", 1418 | "dev": true 1419 | } 1420 | } 1421 | }, 1422 | "tape": { 1423 | "version": "4.8.0", 1424 | "resolved": "https://registry.npmjs.org/tape/-/tape-4.8.0.tgz", 1425 | "integrity": "sha512-TWILfEnvO7I8mFe35d98F6T5fbLaEtbFTG/lxWvid8qDfFTxt19EBijWmB4j3+Hoh5TfHE2faWs73ua+EphuBA==", 1426 | "dev": true, 1427 | "requires": { 1428 | "deep-equal": "1.0.1", 1429 | "defined": "1.0.0", 1430 | "for-each": "0.3.2", 1431 | "function-bind": "1.1.1", 1432 | "glob": "7.1.2", 1433 | "has": "1.0.1", 1434 | "inherits": "2.0.3", 1435 | "minimist": "1.2.0", 1436 | "object-inspect": "1.3.0", 1437 | "resolve": "1.4.0", 1438 | "resumer": "0.0.0", 1439 | "string.prototype.trim": "1.1.2", 1440 | "through": "2.3.8" 1441 | }, 1442 | "dependencies": { 1443 | "minimist": { 1444 | "version": "1.2.0", 1445 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 1446 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 1447 | "dev": true 1448 | } 1449 | } 1450 | }, 1451 | "text-table": { 1452 | "version": "0.2.0", 1453 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1454 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 1455 | "dev": true 1456 | }, 1457 | "through": { 1458 | "version": "2.3.8", 1459 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1460 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 1461 | "dev": true 1462 | }, 1463 | "through2": { 1464 | "version": "2.0.3", 1465 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", 1466 | "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", 1467 | "dev": true, 1468 | "requires": { 1469 | "readable-stream": "2.3.3", 1470 | "xtend": "4.0.1" 1471 | } 1472 | }, 1473 | "trim": { 1474 | "version": "0.0.1", 1475 | "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", 1476 | "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", 1477 | "dev": true 1478 | }, 1479 | "type-check": { 1480 | "version": "0.3.2", 1481 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 1482 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 1483 | "dev": true, 1484 | "requires": { 1485 | "prelude-ls": "1.1.2" 1486 | } 1487 | }, 1488 | "typedarray": { 1489 | "version": "0.0.6", 1490 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 1491 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 1492 | "dev": true 1493 | }, 1494 | "ua-parser-js": { 1495 | "version": "0.7.17", 1496 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", 1497 | "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==", 1498 | "dev": true 1499 | }, 1500 | "user-home": { 1501 | "version": "2.0.0", 1502 | "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", 1503 | "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", 1504 | "dev": true, 1505 | "requires": { 1506 | "os-homedir": "1.0.2" 1507 | } 1508 | }, 1509 | "util-deprecate": { 1510 | "version": "1.0.2", 1511 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1512 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 1513 | "dev": true 1514 | }, 1515 | "whatwg-fetch": { 1516 | "version": "2.0.3", 1517 | "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", 1518 | "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=", 1519 | "dev": true 1520 | }, 1521 | "wordwrap": { 1522 | "version": "1.0.0", 1523 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 1524 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 1525 | "dev": true 1526 | }, 1527 | "wrappy": { 1528 | "version": "1.0.2", 1529 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1530 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1531 | "dev": true 1532 | }, 1533 | "write": { 1534 | "version": "0.2.1", 1535 | "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", 1536 | "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", 1537 | "dev": true, 1538 | "requires": { 1539 | "mkdirp": "0.5.1" 1540 | } 1541 | }, 1542 | "xtend": { 1543 | "version": "4.0.1", 1544 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 1545 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", 1546 | "dev": true 1547 | } 1548 | } 1549 | } 1550 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-hyperscript", 3 | "description": "Hyperscript syntax for React.js markup", 4 | "version": "3.2.0", 5 | "homepage": "https://github.com/mlmorg/react-hyperscript", 6 | "author": { 7 | "name": "Matt Morgan", 8 | "email": "matt@mlmorg.com", 9 | "url": "http://mlmorg.com" 10 | }, 11 | "keywords": [ 12 | "react", 13 | "react.js", 14 | "hyperscript", 15 | "markup", 16 | "dom" 17 | ], 18 | "repository": { 19 | "type": "git", 20 | "url": "git://github.com/mlmorg/react-hyperscript.git" 21 | }, 22 | "bugs": { 23 | "url": "https://github.com/mlmorg/react-hyperscript/issues" 24 | }, 25 | "license": "MIT", 26 | "licenses": [ 27 | { 28 | "type": "MIT", 29 | "url": "https://github.com/mlmorg/react-hyperscript/blob/master/LICENSE" 30 | } 31 | ], 32 | "main": "index.js", 33 | "peerDependencies": { 34 | "react": ">= 0.12.0 < 17.0.0" 35 | }, 36 | "devDependencies": { 37 | "create-react-class": "^15.6.2", 38 | "eslint": "^2.0.0", 39 | "eslint-config-mlmorg": "^2.0.0", 40 | "react": ">= 0.12.0 < 17.0.0", 41 | "react-dom": "^16.0.0", 42 | "tap-spec": "^4.1.1", 43 | "tape": "^4.5.1" 44 | }, 45 | "scripts": { 46 | "lint": "eslint .", 47 | "test": "npm run lint && node test/index.js | tap-spec" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /parse-tag.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable complexity, max-statements */ 2 | 'use strict'; 3 | 4 | var classIdSplit = /([\.#]?[a-zA-Z0-9_:-]+)/; 5 | var notClassId = /^\.|#/; 6 | 7 | module.exports = parseTag; 8 | 9 | function parseTag(tag, props) { 10 | if (!tag) { 11 | return 'div'; 12 | } 13 | 14 | var noId = !('id' in props); 15 | 16 | var tagParts = tag.split(classIdSplit); 17 | var tagName = null; 18 | 19 | if (notClassId.test(tagParts[1])) { 20 | tagName = 'div'; 21 | } 22 | 23 | var classes; 24 | var part; 25 | var type; 26 | var i; 27 | for (i = 0; i < tagParts.length; i++) { 28 | part = tagParts[i]; 29 | 30 | if (!part) { 31 | continue; 32 | } 33 | 34 | type = part.charAt(0); 35 | 36 | if (!tagName) { 37 | tagName = part; 38 | } else if (type === '.') { 39 | classes = classes || []; 40 | classes.push(part.substring(1, part.length)); 41 | } else if (type === '#' && noId) { 42 | props.id = part.substring(1, part.length); 43 | } 44 | } 45 | 46 | if (classes) { 47 | if (props.className) { 48 | classes.push(props.className); 49 | } 50 | 51 | props.className = classes.join(' '); 52 | } 53 | 54 | return tagName ? tagName.toLowerCase() : 'div'; 55 | } 56 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | var console = require('console'); 3 | var ReactDOM = require('react-dom/server'); 4 | var test = require('tape'); 5 | var createReactClass = require('create-react-class'); 6 | 7 | var h = require('../'); 8 | 9 | var Component = createComponent(); 10 | var FunctionComponent = createFunctionComponent(); 11 | 12 | var renderTests = { 13 | 'basic html tag': { 14 | dom: h('h1'), 15 | html: '
' 16 | }, 17 | 'tag with an id and classes in selector': { 18 | dom: h('h1#boom.whatever.foo'), 19 | html: '' 20 | }, 21 | 'tag with an id and classes in selector and props': { 22 | dom: h('h1.foo', {className: 'bar'}), 23 | html: '' 24 | }, 25 | 'tag with other properties': { 26 | dom: h('a', {href: 'http://www.google.com'}), 27 | html: '' 28 | }, 29 | 'tag with string as third argument': { 30 | dom: h('h1', null, 'Hello World!'), 31 | html: '