├── .gitignore ├── README.md ├── package.json ├── rollup.config.js ├── src └── index.tsx ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # created by git-ignore 3 | # Logs 4 | logs 5 | *.log 6 | 7 | # Runtime data 8 | pids 9 | *.pid 10 | *.seed 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 19 | .grunt 20 | 21 | # Compiled binary addons (http://nodejs.org/api/addons.html) 22 | build/Release 23 | 24 | # Dependency directory 25 | # Deployed apps should consider commenting this line out: 26 | # see https://npmjs.org/doc/faq.html#Should-I-check-my-node_modules-folder-into-git 27 | node_modules 28 | 29 | 30 | # created by git-ignore 31 | .DS_Store 32 | .AppleDouble 33 | .LSOverride 34 | 35 | # Icon must ends with two \r. 36 | Icon 37 | 38 | 39 | # Thumbnails 40 | ._* 41 | 42 | # Files that might appear on external disk 43 | .Spotlight-V100 44 | .Trashes 45 | 46 | /esm/ 47 | /umd/ 48 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # react-lambda 2 | 3 | Anonymous functional components for React. How about using hooks inside hooks? 4 | 5 | ## Motivation 6 | 7 | I wished there’s a way to use hooks inside a component’s *subtree*. 8 | That means all the state and effects should be localized in that subtree only. 9 | Using it in my current project, it helped me write more cohesive code: 10 | 11 | ```js 12 | import λ from 'react-lambda' 13 | function AppNav() { 14 | return 24 | } 25 | ``` 26 | 27 | ## Another example 28 | 29 | 30 | 31 | ```js 32 | import λ from 'react-lambda' 33 | 34 | function App() { 35 | const [n, setN] = useState(3) 36 | const more = () => setN(n => n + 1) 37 | const less = () => setN(n => n - 1) 38 | return ( 39 |
40 |

react-lambda demo

41 |

42 | 43 | 44 |

45 |
    46 | {Array(n) 47 | .fill() 48 | .map((_, i) => 49 | λ(i, () => { 50 | // Hooks inside component body, how cool is that! 51 | const [v, setV] = useState(0) 52 | const inc = () => setV(v => v + 1) 53 | return
  1. {v}
  2. 54 | }) 55 | )} 56 |
57 |
58 | ) 59 | } 60 | ``` 61 | 62 | 63 | 64 | ## API 65 | 66 | ```js 67 | import λ from 'react-lambda' 68 | ``` 69 | 70 | ### λ([key,] f) 71 | 72 | Returns an optionally-keyed React element that executes `f`. 73 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "@types/react": "^16.8.0", 4 | "react": "^16.8.0", 5 | "rollup": "^0.66.6", 6 | "rollup-plugin-typescript": "^1.0.0", 7 | "tslib": "^1.9.3", 8 | "typescript": "^3.3.3" 9 | }, 10 | "name": "react-lambda", 11 | "description": "Anonymous functional components for React. How about using hooks inside hooks?", 12 | "version": "1.0.0-rc.0", 13 | "main": "umd/react-lambda.js", 14 | "module": "esm/index.js", 15 | "typings": "esm/index.d.ts", 16 | "dependencies": {}, 17 | "scripts": { 18 | "build": "yarn build:umd && yarn build:esm", 19 | "build:umd": "rollup -c", 20 | "build:esm": "tsc", 21 | "prepare": "yarn build" 22 | }, 23 | "repository": { 24 | "type": "git", 25 | "url": "git+https://github.com/dtinth/react-lambda.git" 26 | }, 27 | "keywords": [ 28 | "react", 29 | "hooks" 30 | ], 31 | "author": "Thai Pangsakulyanont (http://dt.in.th/)", 32 | "license": "MIT", 33 | "bugs": { 34 | "url": "https://github.com/dtinth/react-lambda/issues" 35 | }, 36 | "homepage": "https://github.com/dtinth/react-lambda#readme", 37 | "files": [ 38 | "umd/react-lambda.js", 39 | "esm" 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import typescript from 'rollup-plugin-typescript' 2 | 3 | export default { 4 | input: './src/index.tsx', 5 | output: { 6 | file: 'umd/react-lambda.js', 7 | format: 'umd', 8 | name: 'react-lambda', 9 | exports: 'named', 10 | globals: { 11 | react: 'React' 12 | } 13 | }, 14 | plugins: [typescript()], 15 | external: ['react'] 16 | } 17 | -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export function Λ(props: { f: () => JSX.Element | null }) { 4 | return props.f() 5 | } 6 | 7 | export function λ(f: () => JSX.Element | null, props?: any): JSX.Element 8 | export function λ(key: string | number, f: () => JSX.Element | null, props?: any): JSX.Element 9 | export function λ(...args: any) { 10 | let f: any 11 | let props: any = {} 12 | if (typeof args[0] === 'string' || typeof args[0] === 'number') { 13 | props.key = args.shift() 14 | } 15 | if (typeof args[0] !== 'function') { 16 | throw new Error('You must pass a function!') 17 | } 18 | f = args.shift() 19 | if (args[0] && typeof args[0] === 'object') { 20 | Object.assign(props, args.shift()) 21 | } 22 | return <Λ {...props || {}} f={f} /> 23 | } 24 | 25 | export default λ 26 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "es6", 4 | "moduleResolution": "node", 5 | "jsx": "react", 6 | "target": "es5", 7 | "strict": true, 8 | "sourceMap": true, 9 | "rootDir": "src", 10 | "outDir": "esm", 11 | "declaration": true, 12 | "skipLibCheck": true, 13 | "lib": ["es2015", "dom"], 14 | "esModuleInterop": true 15 | }, 16 | "include": ["src"], 17 | "exclude": ["node_modules"] 18 | } 19 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/estree@0.0.39": 6 | version "0.0.39" 7 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" 8 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== 9 | 10 | "@types/node@*": 11 | version "10.12.21" 12 | resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.21.tgz#7e8a0c34cf29f4e17a36e9bd0ea72d45ba03908e" 13 | integrity sha512-CBgLNk4o3XMnqMc0rhb6lc77IwShMEglz05deDcn2lQxyXEZivfwgYJu7SMha9V5XcrP6qZuevTHV/QrN2vjKQ== 14 | 15 | "@types/prop-types@*": 16 | version "15.5.8" 17 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.5.8.tgz#8ae4e0ea205fe95c3901a5a1df7f66495e3a56ce" 18 | integrity sha512-3AQoUxQcQtLHsK25wtTWIoIpgYjH3vSDroZOUr7PpCHw/jLY1RB9z9E8dBT/OSmwStVgkRNvdh+ZHNiomRieaw== 19 | 20 | "@types/react@^16.8.0": 21 | version "16.8.2" 22 | resolved "https://registry.yarnpkg.com/@types/react/-/react-16.8.2.tgz#3b7a7f7ea89d1c7d68b00849fb5de839011c077b" 23 | integrity sha512-6mcKsqlqkN9xADrwiUz2gm9Wg4iGnlVGciwBRYFQSMWG6MQjhOZ/AVnxn+6v8nslFgfYTV8fNdE6XwKu6va5PA== 24 | dependencies: 25 | "@types/prop-types" "*" 26 | csstype "^2.2.0" 27 | 28 | arr-diff@^2.0.0: 29 | version "2.0.0" 30 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 31 | integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= 32 | dependencies: 33 | arr-flatten "^1.0.1" 34 | 35 | arr-flatten@^1.0.1: 36 | version "1.1.0" 37 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 38 | integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== 39 | 40 | array-unique@^0.2.1: 41 | version "0.2.1" 42 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 43 | integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= 44 | 45 | braces@^1.8.2: 46 | version "1.8.5" 47 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 48 | integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= 49 | dependencies: 50 | expand-range "^1.8.1" 51 | preserve "^0.2.0" 52 | repeat-element "^1.1.2" 53 | 54 | csstype@^2.2.0: 55 | version "2.6.2" 56 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.2.tgz#3043d5e065454579afc7478a18de41909c8a2f01" 57 | integrity sha512-Rl7PvTae0pflc1YtxtKbiSqq20Ts6vpIYOD5WBafl4y123DyHUeLrRdQP66sQW8/6gmX8jrYJLXwNeMqYVJcow== 58 | 59 | estree-walker@^0.5.2: 60 | version "0.5.2" 61 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" 62 | integrity sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig== 63 | 64 | expand-brackets@^0.1.4: 65 | version "0.1.5" 66 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 67 | integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= 68 | dependencies: 69 | is-posix-bracket "^0.1.0" 70 | 71 | expand-range@^1.8.1: 72 | version "1.8.2" 73 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 74 | integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= 75 | dependencies: 76 | fill-range "^2.1.0" 77 | 78 | extglob@^0.3.1: 79 | version "0.3.2" 80 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 81 | integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= 82 | dependencies: 83 | is-extglob "^1.0.0" 84 | 85 | filename-regex@^2.0.0: 86 | version "2.0.1" 87 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" 88 | integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= 89 | 90 | fill-range@^2.1.0: 91 | version "2.2.4" 92 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" 93 | integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== 94 | dependencies: 95 | is-number "^2.1.0" 96 | isobject "^2.0.0" 97 | randomatic "^3.0.0" 98 | repeat-element "^1.1.2" 99 | repeat-string "^1.5.2" 100 | 101 | for-in@^1.0.1: 102 | version "1.0.2" 103 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 104 | integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= 105 | 106 | for-own@^0.1.4: 107 | version "0.1.5" 108 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 109 | integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= 110 | dependencies: 111 | for-in "^1.0.1" 112 | 113 | glob-base@^0.3.0: 114 | version "0.3.0" 115 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 116 | integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= 117 | dependencies: 118 | glob-parent "^2.0.0" 119 | is-glob "^2.0.0" 120 | 121 | glob-parent@^2.0.0: 122 | version "2.0.0" 123 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 124 | integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= 125 | dependencies: 126 | is-glob "^2.0.0" 127 | 128 | is-buffer@^1.1.5: 129 | version "1.1.6" 130 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 131 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 132 | 133 | is-dotfile@^1.0.0: 134 | version "1.0.3" 135 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" 136 | integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= 137 | 138 | is-equal-shallow@^0.1.3: 139 | version "0.1.3" 140 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 141 | integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= 142 | dependencies: 143 | is-primitive "^2.0.0" 144 | 145 | is-extendable@^0.1.1: 146 | version "0.1.1" 147 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 148 | integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= 149 | 150 | is-extglob@^1.0.0: 151 | version "1.0.0" 152 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 153 | integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= 154 | 155 | is-glob@^2.0.0, is-glob@^2.0.1: 156 | version "2.0.1" 157 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 158 | integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= 159 | dependencies: 160 | is-extglob "^1.0.0" 161 | 162 | is-number@^2.1.0: 163 | version "2.1.0" 164 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 165 | integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= 166 | dependencies: 167 | kind-of "^3.0.2" 168 | 169 | is-number@^4.0.0: 170 | version "4.0.0" 171 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" 172 | integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== 173 | 174 | is-posix-bracket@^0.1.0: 175 | version "0.1.1" 176 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 177 | integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= 178 | 179 | is-primitive@^2.0.0: 180 | version "2.0.0" 181 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 182 | integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= 183 | 184 | isarray@1.0.0: 185 | version "1.0.0" 186 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 187 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 188 | 189 | isobject@^2.0.0: 190 | version "2.1.0" 191 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 192 | integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= 193 | dependencies: 194 | isarray "1.0.0" 195 | 196 | "js-tokens@^3.0.0 || ^4.0.0": 197 | version "4.0.0" 198 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 199 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 200 | 201 | kind-of@^3.0.2: 202 | version "3.2.2" 203 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 204 | integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= 205 | dependencies: 206 | is-buffer "^1.1.5" 207 | 208 | kind-of@^6.0.0: 209 | version "6.0.2" 210 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" 211 | integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== 212 | 213 | loose-envify@^1.1.0, loose-envify@^1.3.1: 214 | version "1.4.0" 215 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 216 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 217 | dependencies: 218 | js-tokens "^3.0.0 || ^4.0.0" 219 | 220 | math-random@^1.0.1: 221 | version "1.0.4" 222 | resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" 223 | integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== 224 | 225 | micromatch@^2.3.11: 226 | version "2.3.11" 227 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 228 | integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= 229 | dependencies: 230 | arr-diff "^2.0.0" 231 | array-unique "^0.2.1" 232 | braces "^1.8.2" 233 | expand-brackets "^0.1.4" 234 | extglob "^0.3.1" 235 | filename-regex "^2.0.0" 236 | is-extglob "^1.0.0" 237 | is-glob "^2.0.1" 238 | kind-of "^3.0.2" 239 | normalize-path "^2.0.1" 240 | object.omit "^2.0.0" 241 | parse-glob "^3.0.4" 242 | regex-cache "^0.4.2" 243 | 244 | normalize-path@^2.0.1: 245 | version "2.1.1" 246 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 247 | integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= 248 | dependencies: 249 | remove-trailing-separator "^1.0.1" 250 | 251 | object-assign@^4.1.1: 252 | version "4.1.1" 253 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 254 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 255 | 256 | object.omit@^2.0.0: 257 | version "2.0.1" 258 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 259 | integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= 260 | dependencies: 261 | for-own "^0.1.4" 262 | is-extendable "^0.1.1" 263 | 264 | parse-glob@^3.0.4: 265 | version "3.0.4" 266 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 267 | integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= 268 | dependencies: 269 | glob-base "^0.3.0" 270 | is-dotfile "^1.0.0" 271 | is-extglob "^1.0.0" 272 | is-glob "^2.0.0" 273 | 274 | path-parse@^1.0.6: 275 | version "1.0.6" 276 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 277 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 278 | 279 | preserve@^0.2.0: 280 | version "0.2.0" 281 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 282 | integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= 283 | 284 | prop-types@^15.6.2: 285 | version "15.6.2" 286 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" 287 | integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== 288 | dependencies: 289 | loose-envify "^1.3.1" 290 | object-assign "^4.1.1" 291 | 292 | randomatic@^3.0.0: 293 | version "3.1.1" 294 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" 295 | integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== 296 | dependencies: 297 | is-number "^4.0.0" 298 | kind-of "^6.0.0" 299 | math-random "^1.0.1" 300 | 301 | react@^16.8.0: 302 | version "16.8.1" 303 | resolved "https://registry.yarnpkg.com/react/-/react-16.8.1.tgz#ae11831f6cb2a05d58603a976afc8a558e852c4a" 304 | integrity sha512-wLw5CFGPdo7p/AgteFz7GblI2JPOos0+biSoxf1FPsGxWQZdN/pj6oToJs1crn61DL3Ln7mN86uZ4j74p31ELQ== 305 | dependencies: 306 | loose-envify "^1.1.0" 307 | object-assign "^4.1.1" 308 | prop-types "^15.6.2" 309 | scheduler "^0.13.1" 310 | 311 | regex-cache@^0.4.2: 312 | version "0.4.4" 313 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" 314 | integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== 315 | dependencies: 316 | is-equal-shallow "^0.1.3" 317 | 318 | remove-trailing-separator@^1.0.1: 319 | version "1.1.0" 320 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 321 | integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= 322 | 323 | repeat-element@^1.1.2: 324 | version "1.1.3" 325 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" 326 | integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== 327 | 328 | repeat-string@^1.5.2: 329 | version "1.6.1" 330 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 331 | integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= 332 | 333 | resolve@^1.8.1: 334 | version "1.10.0" 335 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" 336 | integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== 337 | dependencies: 338 | path-parse "^1.0.6" 339 | 340 | rollup-plugin-typescript@^1.0.0: 341 | version "1.0.0" 342 | resolved "https://registry.yarnpkg.com/rollup-plugin-typescript/-/rollup-plugin-typescript-1.0.0.tgz#f7bcefe576011d9d2ebcc725b542ef35fb5005d4" 343 | integrity sha512-d2KDNMJXgaaB//dDGd/YmyMiopt1Pz965Iu3zmEoL08YqNcKRBz26uHqqc47rFGfrJV5kFqifC9IYlh6dpSCLg== 344 | dependencies: 345 | resolve "^1.8.1" 346 | rollup-pluginutils "^2.3.1" 347 | 348 | rollup-pluginutils@^2.3.1: 349 | version "2.3.3" 350 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz#3aad9b1eb3e7fe8262820818840bf091e5ae6794" 351 | integrity sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA== 352 | dependencies: 353 | estree-walker "^0.5.2" 354 | micromatch "^2.3.11" 355 | 356 | rollup@^0.66.6: 357 | version "0.66.6" 358 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.66.6.tgz#ce7d6185beb7acea644ce220c25e71ae03275482" 359 | integrity sha512-J7/SWanrcb83vfIHqa8+aVVGzy457GcjA6GVZEnD0x2u4OnOd0Q1pCrEoNe8yLwM6z6LZP02zBT2uW0yh5TqOw== 360 | dependencies: 361 | "@types/estree" "0.0.39" 362 | "@types/node" "*" 363 | 364 | scheduler@^0.13.1: 365 | version "0.13.1" 366 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.1.tgz#1a217df1bfaabaf4f1b92a9127d5d732d85a9591" 367 | integrity sha512-VJKOkiKIN2/6NOoexuypwSrybx13MY7NSy9RNt8wPvZDMRT1CW6qlpF5jXRToXNHz3uWzbm2elNpZfXfGPqP9A== 368 | dependencies: 369 | loose-envify "^1.1.0" 370 | object-assign "^4.1.1" 371 | 372 | tslib@^1.9.3: 373 | version "1.9.3" 374 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" 375 | integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== 376 | 377 | typescript@^3.3.3: 378 | version "3.3.3" 379 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.3.tgz#f1657fc7daa27e1a8930758ace9ae8da31403221" 380 | integrity sha512-Y21Xqe54TBVp+VDSNbuDYdGw0BpoR/Q6wo/+35M8PAU0vipahnyduJWirxxdxjsAkS7hue53x2zp8gz7F05u0A== 381 | --------------------------------------------------------------------------------