{"_id":"jumpcut","_rev":"44-1dd24d7433d61f5c71e9a9e21e772f30","name":"jumpcut","dist-tags":{"latest":"0.1.0"},"versions":{"1.0.0":{"name":"jumpcut","version":"1.0.0","description":"","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"ISC","_id":"jumpcut@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"jumpcut","email":"hunter@jumpcut.com"},"dist":{"integrity":"sha512-/o1IpgKWNEiOtdeAzxh9rMq/Br1Aq98Non9rj+vLCbBoI1qcKuPCATNLy4UotlN0TY7M3emmpYL94oWBc/SAPA==","shasum":"b4c7d5a3851c07c8e6038890fd230e92daa1d495","tarball":"https://registry.npmjs.org/jumpcut/-/jumpcut-1.0.0.tgz","fileCount":4,"unpackedSize":484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNR9VCRA9TVsSAnZWagAAv3sP/RKrprWlnrjx0kV0VYcb\nhXSjg+pNlWiI9NDunSLpIY/L4nYfKpgbZ6KKEa2gU8XafMvs29+51aOJCCNZ\nDsZCm1ik5CbMvuH/JHFE4PFOEuRvYK4/XFIFyk6egSIyJcl8EbYspygCLMWc\ntPhEZgRIbDAqcIUxCJrXt7HEOvhio0YhQMuJLcRxb6FsWEq2XR9ESVH1ZVdx\njywHLAoIlTyL8P0vQGtWT9KU/7NTJjeuyUsMeS42pCUeKAPebB9iKp5P6L47\nsvhpzv3Uy9ngtDx3dSXr2OncIRHhhCtwrLSgU+sHp0R+f+4TFqcGSRgDyltf\nAbu/UqfWC+woQ6AgimE8SbujTWwq6VxcuaphNapA+owKNtzJbW+8/8WcIRZH\ngXNx2CIWjgvuOzIlfdLkTB8WgzyLeYingp/8TbD0A2UnpIaYO71HPqFwKWwB\nM75euTdwyz1QuEGOdN5VDZWx+64CmYBxQzs64NiY0UbUuI5x1n1Xi4eRTN7n\nn6kW4UcozsOVSwVnr7OnSFAXGTgrr2Jvhk+MWT8x9xkswYPXdhxGRwne9BkT\noEG24ZEOp4w5gKkuWuFzYklAJicIBTuTEndE2JSETCnThrg2bVDJNwnyOeQS\n+TbF48N+JJIjkFIfMYwVLMqQ8+NCYXuhFqiRDNq0zCQGrBnUBCxM/BggoUGM\nJzxa\r\n=Fvx8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCR6Uj4koi7cK+6xHu7Ttb9/wBWNo0YphkPpZyRAb0BmQIgKTlRX2369syOUD+zJXvKHYY1qWh+ZdryeJ3lpsCM52k="}]},"maintainers":[{"name":"jumpcut","email":"hunter@jumpcut.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jumpcut_1.0.0_1546985300410_0.01736191319972291"},"_hasShrinkwrap":false,"deprecated":"testing"},"1.0.1":{"name":"jumpcut","version":"1.0.1","description":"","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"ISC","_id":"jumpcut@1.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"jumpcut","email":"hunter@jumpcut.com"},"dist":{"integrity":"sha512-e1w2axEeuGmG6Le/9944EZexzxoUaF0mzuJk80Q/QoTube4cWvC6jSETCrn4Cbcn3nxMpU8QyG0PfZJUNxKdTA==","shasum":"318df0d91284b45ff17bd9279d363f9df26c2f1f","tarball":"https://registry.npmjs.org/jumpcut/-/jumpcut-1.0.1.tgz","fileCount":10,"unpackedSize":2032,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNSASCRA9TVsSAnZWagAAESIP/AunSf79vzyMHbMW0DZY\nPn7/MLBUk9YidncwshxiiTaPtgpa39ulmLDvNh8kXzF9G3E7EP6exnsiqOo9\nm+npbP4aais6ktk6FFD1CcqN+IfyAdtRN291RCUI+SDXj5ZoCNEXha/IFewI\nkdXHdHe/rf0erqBwbRKVdd9tbI8O8/MkBeEbWn+nW7qOOkI2zBis6fUcAz5w\nYqBkWtoiX05GOY+8xFi+IQEorJ6I/u8C+081yLbxUbSgvgPM3WUBZE8E/G+C\ngh6AtWULFjAfUb+nJ6ZID+nRPdgeQyQbIGlrRBuf1YyvT9JoVxC/u7Hzmyzs\npTz2/RrbPuZmPXy+mDzxwh9LK6a+c9hQMJLHrUFbi97flw/uPnyGrXZHA+1t\noilkpadQ8ZIy0O+pAlImX9RvEjOk7uVMaJBxIZF/mOSTed1PAhq1FCaQPfW7\nMZ+Fb6VmxgGnHEe+b2aYmCqasA6A139O/XL/37mMRKRlK64HOQ1jnCdxsByn\n49POFfcjlRdTWRlqjssOnSSpLpV/HWZey/LgZ2INB0hoXUl90i4w8GcK/Zyy\nDcPLkwMjJZFsZvMmRIpCLZV5kjDEH3eJRZRaC4hM0olgfzCJWtlrlMmd/TF/\nza+tbVoZQFQdJFPe3bo/JC4JcVzb+lYTUesFd9Nui6dpfH6zwvNJwP7wyot8\ndj60\r\n=gNSh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMuPwY0Zl1yTpEC2ZRwsRMUvne6AMEH89Dd9M5qq6VOgIhAOS89uf+EgN9T0kNWMZ4Bih16LYVgbNKhqGLUm+uS2n2"}]},"maintainers":[{"name":"jumpcut","email":"hunter@jumpcut.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jumpcut_1.0.1_1546985489444_0.2113881109701521"},"_hasShrinkwrap":false,"deprecated":"testing"},"1.0.2":{"name":"jumpcut","version":"1.0.2","description":"","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"ISC","_id":"jumpcut@1.0.2","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"jumpcut","email":"hunter@jumpcut.com"},"dist":{"integrity":"sha512-5HhmMT5dGDhRcwMN/rC8WNqccGnYxuzr8cdKn2KWuZiTQPbqceYNGtAlcSv/AQ/KISBz9cL9mDCnybv8VqnRxA==","shasum":"45e6c78af042fc8cd850287cef104b20b4fb06cf","tarball":"https://registry.npmjs.org/jumpcut/-/jumpcut-1.0.2.tgz","fileCount":9,"unpackedSize":1846,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNSEGCRA9TVsSAnZWagAAhCQP/j2F2EHZ32l/ITYjt9Rp\nhdsBGfYtXhBx0hdROHZC1yoHTvPZAz2mo7JQoV/jAqfGszlRJIEIQ/9Zd9DL\nWUv7sYiAfKSX1jcR3oE9MhuZI8j4Rr0kKhU2lUtDIZcQqyXwKiCAvD8Tqoi8\nohfkiCum2ud3rbAtC7IdocM2f1zc4ctZHlT+ckbL6pZ8vKXdK12sULfVK0/U\n5EviWi4y/t+ArEY8PLAhl+nuAHj0r0fi+ueDzeT2d043bsKiqn02M5QmffYS\nb2gokvNS3mhEVWjVJrz4yVf4yfsl5QzXUfgxod5y2xyMjrbIt3WQAKpdBBjy\nT4mvP2AQaLT7Y2+n4Y1QMfer9UaVaEsawwofSpqxXdDJlzXsF8pSgYaW6HyC\nXzvIK9HErUb11Nh8uQ3y6U425v4zbrDzM/INfowQs+I5azz4oDz++54M2gSv\nMxS9GBpO60JkgD9hk5AfpQNBrCjsE9IFLNmWRpKE16L4u2JED4A7dpWaXpB0\n0PuPIhWhoVHeLpZ+ZGFU4V1ruhZsAKFbNARx6dxYtsbwwcxX4gvNizghZ2No\nF7lam5Ee1X/UBbC0sVJw9dNZ5hfL2F84EJDsmh1vBMErwAoe0JITbFVENXaF\nvFylSwDP5YUof9ENs+ByqlCeBot9YC/+tm26B+yf+zPoOvAa3ABnPYvSkSc7\ndbfE\r\n=Z1Ji\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIALx1wjYxU0r6tAn0ojZ6duDnRLnDN1x5S9sXQlXDaoSAiAVehx066Cd4uT5HZQC8nvAdPzOcOyzFDEnJEUi8JfFXA=="}]},"maintainers":[{"name":"jumpcut","email":"hunter@jumpcut.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jumpcut_1.0.2_1546985733989_0.9143066273655154"},"_hasShrinkwrap":false,"deprecated":"testing"},"1.0.3":{"name":"jumpcut","version":"1.0.3","description":"","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"ISC","_id":"jumpcut@1.0.3","_npmVersion":"6.4.1","_nodeVersion":"10.13.0","_npmUser":{"name":"jumpcut","email":"hunter@jumpcut.com"},"dist":{"integrity":"sha512-7ACYLPuP41uADCc3/VGSB27aSrkWlA/7Wzgb0Yc7uARSSE5HQJTwLCOr7T/I8JLCnl3uCjrm++jcOZuzFnwPCw==","shasum":"130cf74c42716c7f201ad48e7c99f3fd3b5faf00","tarball":"https://registry.npmjs.org/jumpcut/-/jumpcut-1.0.3.tgz","fileCount":14,"unpackedSize":3231,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNSGhCRA9TVsSAnZWagAAoboP/RTBpQ8WLcqWcxpxEQ7o\nqrvhbJdp1D0bEkimRdmo/JyQUtA93437QTWGNUhlgxpHBf1yp8gZFKkY9mo5\n5VGwkjEpGptCRvuhV1+/gRCeE8waNq0Ujk7NL9kPHJCn/cFZZQVx/B7/i43B\nPxVW9rbALpsKAB/oXjY7Dp88YPmVnYV3PspoSSZy9794Q8LlgeUNLxkTxBoA\nMdFJsoF+V7sS25BjPuSxw0LDQoBO7Mvxo4hVh8B4tUQkL/YY82kOhZ/Kk/T1\n+WDwH6NQ+rBJG0Bq20byV+29QJ3i0Ki46xezSsidNzBLv7u45ZKJBSpEV/NE\njAzvsaNKJynpGYr9weUXO8/ej6JGK8BLvKaGDcXzqRnJ+3b50ZffJfMuiC15\ntU4lYBAQ1UAdCYXlEetUzCcKk+NpOolGHoj2QNVCdPbUCqnaPDqcW2hDbOSj\njbGjKaTHFySgJMu6mKG9DmwwSM2qq9VpcyBjvhUMxNrrXcCT+t3ViPF+Ct9r\n6SUflqve30eVXInoO2SI7hlV9LWVYJJcAQdjD2Lra+lsD6sdaRO2uqu7QZoJ\nIb9+A0KI5qE+IohxmIn/WE4oz41ioaA0n/l5aQSRZANyxVKYVUjo8BXdwvJL\nu78UXxizdSPIXnYo1iGE58Ojq+W39+inmr1xNphNagIli3KSFhEZApheuz6O\nf5cD\r\n=td+R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAFWQMy9PO4xn0Ax3JfKQK/xbeWeMJJO0v4XYwzjDkAJAiEAsXQ36MTSdUw/tvjTP3pzm4umpNS4fMLKd/1eGuKQ2gs="}]},"maintainers":[{"name":"jumpcut","email":"hunter@jumpcut.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jumpcut_1.0.3_1546985888440_0.6749605593210781"},"_hasShrinkwrap":false,"deprecated":"testing"},"0.0.27":{"name":"jumpcut","version":"0.0.27","description":"Shared components and scripts repo for the Jumpcut organization.","main":"index.js","scripts":{"storybook-html":"start-storybook -p 9001 -c .storybook/html","storybook-react":"start-storybook -p 9002 -c .storybook/react","deploy":"lerna publish -y","generate":"node cli/cli.js generate","dependency":"node cli/cli.js dependency","move":"node cli/cli.js move","rename":"node cli/cli.js move","delete":"node cli/cli.js delete"},"repository":{"type":"git","url":"git+https://github.com/jumpcut/jumpcut-shared.git"},"author":{"name":"Jumpcut Engineering"},"license":"UNLICENSED","dependencies":{"fs-extra":"^7.0.1","minimist":"^1.2.0","react":"^16.7.0","react-dom":"^16.7.0","readline-sync":"^1.4.9"},"devDependencies":{"@babel/core":"^7.2.2","@babel/plugin-syntax-jsx":"^7.2.0","@storybook/html":"^4.1.7","@storybook/react":"^4.1.7","babel-loader":"^8.0.5","lerna":"^3.10.6"},"gitHead":"e2dbc22e9d7e5d9a3503a8f71f8697e37ffbef3e","bugs":{"url":"https://github.com/jumpcut/jumpcut-shared/issues"},"homepage":"https://github.com/jumpcut/jumpcut-shared#readme","_id":"jumpcut@0.0.27","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.10.7/node@v10.13.0+x64 (win32)","dist":{"integrity":"sha512-xWWYuKYRXXZac68MSsVuOgvxEUmG5CJqTE07PfOV0DjFWBx36U8dCZ8uwCYhKl9QIJVMjTVt9pUbqT6NmWI8ng==","shasum":"8d231450942d70efcc04b89ee6df956cc9a37167","tarball":"https://registry.npmjs.org/jumpcut/-/jumpcut-0.0.27.tgz","fileCount":5,"unpackedSize":10417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUjesCRA9TVsSAnZWagAAzvMP/i4uvpn9CW3lwsU8e9qN\nhnAvRARD856QBywZqXNpkzs/m4UdOkgv8vTzDN4jD20Nw67t8l/TSTA+I7cU\nQkjPT0BHWMB9tlB9Kw6JDn9Ku3fK2vQ+Czoq/GNeF2uTVFAB9A6QV8qeAii+\n8OJSj4L3ahlIcif0UCftFeksUOCgkPt5uCOhYkNs5lNT5bEIIvb6hFrR73hU\nppgRgVkchGf0ivIUGvT5F7IDlcydTPMPz/XNZ9/1yghBbAr1mqrEH7f5MNBX\nZJc0PwBmlR6dbnYyTXgVLE8YszdVL94MLP30WxYB03+G0XZYo3SS08Q6w3qj\nK2Gpy1dLnTzxxRtVnUtzXu+urxguglTaCghtx37cPYGuNs3dyQruPQ6DdgEj\nfrfyLuBDLRbTsAlcai6j3DOQjlHxG/FGmgTfqbLErEPx67Jqb60oxNwR7AXm\nw89rAOi5Z6EUVxOog5fOqYKUKBVlfcsYNbYph9SI4487ZFRNIuOoJmNm3poa\n6PKy4b35MnaIyURS5s0zmYewLJ7gfWg20V5OxSdIbs+k7BIE75ztn9CtNoch\n2Y7lZKSvV0B+0EUQQnyx9LI2JSh2RBjEPV32Dm4mCbfHXoHfLbm5To3vdEzM\nG5PHVhZVeJWxB80HNJ8+x/OWqDb0BXY0UoCCcPPBaxKvixDicLCy/vVdLg3y\npiMc\r\n=7bfV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHoAHvf2MgVJ1NuX/xirirtRrAoDEF2HIoirfMre2fiaAiAltwa3jC436wCdv2JKpU79cwrgDgZ3hRkD0JAy3HWA2g=="}]},"maintainers":[{"name":"jumpcut","email":"hunter@jumpcut.com"}],"_npmUser":{"name":"jumpcut","email":"hunter@jumpcut.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jumpcut_0.0.27_1548892075896_0.09112270454220872"},"_hasShrinkwrap":false},"0.1.0":{"name":"jumpcut","version":"0.1.0","description":"Shared components and scripts repo for the Jumpcut organization.","main":"index.js","scripts":{"storybook-html":"start-storybook -p 9001 -c .storybook/html","storybook-react":"start-storybook -p 9002 -c .storybook/react","deploy":"lerna publish -y","generate":"node cli/cli.js generate","dependency":"node cli/cli.js dependency","move":"node cli/cli.js move","rename":"node cli/cli.js move","delete":"node cli/cli.js delete"},"repository":{"type":"git","url":"git+https://github.com/jumpcut/jumpcut-shared.git"},"author":{"name":"Jumpcut Engineering"},"license":"UNLICENSED","dependencies":{"fs-extra":"^7.0.1","minimist":"^1.2.0","react":"^16.7.0","react-dom":"^16.7.0","readline-sync":"^1.4.9"},"devDependencies":{"@babel/core":"^7.2.2","@babel/plugin-syntax-jsx":"^7.2.0","@storybook/html":"^4.1.7","@storybook/react":"^4.1.7","babel-loader":"^8.0.5","lerna":"^3.10.6"},"gitHead":"9c5959c7437710db538591c7ad2ed316e02f6bd8","bugs":{"url":"https://github.com/jumpcut/jumpcut-shared/issues"},"homepage":"https://github.com/jumpcut/jumpcut-shared#readme","_id":"jumpcut@0.1.0","_nodeVersion":"10.13.0","_npmVersion":"lerna/3.10.7/node@v10.13.0+x64 (win32)","dist":{"integrity":"sha512-nr3tWc38ejcspO7Joh3E7+S2NjqhAjib3lI9q6Q1joRvyunU6KroZ7lMXGSe3W6puVrHvUfTjxjudn4PotDWOA==","shasum":"a052d48e59d5d6e10c7c1786139a6d9395dc67bd","tarball":"https://registry.npmjs.org/jumpcut/-/jumpcut-0.1.0.tgz","fileCount":6,"unpackedSize":10350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUx7ICRA9TVsSAnZWagAAuyoQAIV+MpluCqx0QGXkzXrP\nkvREpc4Qwbi/qMqvugimyOZOnzi03d/ksH/hTHp3T0NDLhuk5ZkPDqRjzmhS\n0LjX1WAjxhXTzuHSsB8zTcJsmaAlw1PnYJo2Mwnbi23a095GVoh9MEouGT7u\nJU/P/IDyQTHA2RzBkKHe9myPZyYMz9ii2ezeLSdv+t5TmFY3f2s4Qsp5RDtZ\nLRwAM+g7t9Uh7kFv1a702b6PoJftoln0wzUfSvnkjtJq05yuVj+GZ0Kc1dGw\nQ767g8GmFdDVNlXiWSVteHtLHvp3jrbaYPlAptp1gZ22zQ1k4VLaVizbA0D7\nyrfjTU9hDiZv6Lyx81Ypn71MV2ad7ElZSvN24wWeFJQ8kIwh9cyEsUmOF9AI\nLHwtIPUylxFtE+lkg024P9eRPZizhQm90Pm+F9tjeMhLJnKF4jFEWG7/hs/i\nUwyIREfwvCDy5eF64STNbXbvQlEP7YXOof+bWeBHKm4SeqtJo5vIEe6QU0im\nWY7DxQcpj7scD0x8fXiT/qsyjNgw+74CP6kUxcZV9mHvG89sjVMF9XxD//EU\nhy+1C4ywZBgl6IgSt0x9BlC6O1yo7DprpDUEh1eWW6Rcjw+x3Phu6fTarlMB\nHmpQT9OG3GwPDMyjMY1I7o8qe1WEqlMce+U1XL294sFOqqTC55lCbPQiudTU\nDvnD\r\n=pdXw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCbLRQtaMMhiynImCcqFQ+a7KHtukkj5KWm8jvf7oWcSQIgMW2d/g7voDS+7YPLB5snGE/8dwWmOgylMWOd2vc3jlY="}]},"maintainers":[{"name":"jumpcut","email":"hunter@jumpcut.com"}],"_npmUser":{"name":"jumpcut","email":"hunter@jumpcut.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jumpcut_0.1.0_1548951239565_0.14905368284409626"},"_hasShrinkwrap":false}},"time":{"created":"2019-01-08T22:08:20.192Z","1.0.0":"2019-01-08T22:08:20.534Z","modified":"2022-05-07T00:55:47.416Z","1.0.1":"2019-01-08T22:11:29.562Z","1.0.2":"2019-01-08T22:15:34.204Z","1.0.3":"2019-01-08T22:18:08.639Z","1.0.4":"2019-01-23T20:46:54.851Z","1.0.5":"2019-01-24T16:13:52.219Z","1.0.6":"2019-01-24T16:14:27.736Z","0.0.6":"2019-01-24T16:21:01.509Z","0.0.7":"2019-01-24T16:21:44.142Z","0.0.8":"2019-01-24T16:22:57.609Z","0.0.9":"2019-01-24T16:24:32.319Z","0.0.10":"2019-01-24T16:30:55.175Z","0.0.11":"2019-01-24T16:32:01.709Z","0.0.12":"2019-01-24T16:51:30.568Z","0.0.13":"2019-01-24T16:58:59.922Z","0.0.14":"2019-01-24T17:43:56.145Z","0.0.15":"2019-01-24T20:58:37.302Z","0.0.17":"2019-01-24T21:07:48.701Z","0.0.19":"2019-01-24T21:25:46.751Z","0.0.21":"2019-01-24T21:26:47.199Z","0.0.22":"2019-01-24T21:27:25.246Z","0.0.27":"2019-01-30T23:47:55.986Z","0.1.0":"2019-01-31T16:13:59.656Z"},"maintainers":[{"name":"jumpcut","email":"hunter@jumpcut.com"}],"license":"UNLICENSED","readme":"All of Jumpcut's components that are able to be shared across projects are hosted here.\n\n# The problem\nWe have spent a lot of money on branding. We've made the investment, and now we need that branding to be implemented consistently across our projects. Things like buttons, panels, lists, and even larger components and utility scripts can all be shared across projects. But how do we do that efficiently? Copying code and trying to maintain updates of components across projects is an absolute nightmare.\n\n# The solution\nA repo and node package that will be published to NPM and imported across our projects. This repo has CI that automatically deploys the entire package to NPM. Whenever other projects that depend on this package are deployed, CI will update the project's NPM packages, automatically keeping our dependencies up-to-date.\n\n# Best practices\nWhen modifying or extending existing components, you must keep in mind that these packages are used across projects and automatically updated. That means your OPEN-CLOSED principle is more important than ever here. If you're not familiar with the OPEN-CLOSED principle, you should be. Maybe checkout this article specifically related to javascript: [Open-Closed Principle](http://aspiringcraftsman.com/2011/12/19/solid-javascript-the-openclosed-principle/).\n\n# Lerna and Monorepos\nOur shared component repo follows a popular structure called a Monorepo. That means we have multiple NPM packages managed in a single repo. We use a dev dependency called `Lerna`. Lerna is a tool for managing multiple packages contained in a single repo (or Monorepo).\nThe overall repo is an NPM package named `jumpcut`. You may `npm i jumpcut` and individually import each of the packages you use (`import Button from 'jumpcut/components/Button';`), or you may `npm i @jumpcut/components-Button` and only install a specific package. Each of the types (`component`, `script`, and `web`) are also scoped packages with the names `@jumpcut/components`, `@jumpcut/scripts`, and `@jumpcut/web` that can be installed individually as well.\n\n# Commands\n* `npm run generate [type] [name]` will execute a node script that accepts two required arguments. This does a couple of things. First, it generates the folder structure, `index.js`, and `package.json` files for the module in the `src` folder. Second, it generates and modifies the relevant import files and package.json for deployment to and import from NPM.\n  * `type` - an enum `['component', 'script', 'web']`, where `component` is a React component, `script` is a vanilla js script, and `web` is a Web Component. `['c', 's', 'w']` abbreviations may also be used as the `type` argument.\n  * `name` - the script or component file name without an extension. This will be the import name.\nNOTE: All shared components must be default exports in their root. You cannot have a component or script that has named exports. This is an unfortunate limitation required to keep imports easy and manageable.\n* `npm run dependecy [targetType] [targetName]` will add a dependency to the target source package by prompting you for the `type` and `name` of the package you want to add as a dependency. Often times we will want to use a shared package in another shared package. That is a traditional npm package dependency, but in a Monorepo environment we need to manage these dependencies a little differently because versions are changing across dependencies all the time. This is largely managed by Lerna, and this script takes some of the manual work and hides that Lerna CLI to reduce the developer's overhead.\n* `npm run deploy` simply hides the lerna command to reduce dev overhead. The `lerna publish -y` command will look at any packages that have been modified by the developer and increment the versions of those packages before publishing them to NPM. If you edit a `script` package and publish it, you'll have to increment the version of the package (eg. `@jumpcut/scripts-uuid-validator`) and the `type` scope of the package (eg. `@jumpcut/scripts`) and finally the root package `jumpcut`.\n* `npm run rename [type] [name]` and `npm run move [type] [name]` do the same thing. You will be prompted for a new `type` (just press Enter to keep the current type) and prompted for a new `name`. This is useful if you want to rename a component or move a React component to a web component.\n* `npm run delete [type] [name]` will trigger a prompt to confirm deletion of a package with a given `type` and `name`.\n\n# Usage - Your CRUD Operations\n### CREATE a new shared component/script\n1. Run `npm run generate [type] [name]` to generate the files.\n2. Edit the files in `~/src/[type]/[name]/` to your liking (actually write the component/script).\n3. When your done and tested on Storybook, commit your changes to the repo.\n4. Run `npm run deploy`.\n\n### READ (use) an existing shared component\nLerna automatically publishes this core `jumpcut` package and all sub modules from this repo as NPM modules.\n`npm i jumpcut` will install the entire jumpcut shared repo as a dependency.\nPackages can then be imported in a variety of traditional ways:\n```javascript\nimport Button from 'jumpcut/components/Button'\n\n// OR \n\nimport components from 'jumpcut/components';\nconst Component = components.Button\n...\nreturn <Component />\n\n// Due to the default export restriction, what you CANNOT do is:\n\nimport { Button } from 'jumpcut/components';\n```\n`npm i @jumpcut/components` will install JUST the shared react components from our jumpcut shared repo. Then you just import from there:\n```javascript\nimport Button from '@jumpcut/components/Button';\n```\n`npm i @jumpcut/components-button` will install a specific shared component. The naming convention is the `@jumpcut` scope, and the package is named `@jumpcut/[type]-[name]` in all lower case. In which case you would import:\n```javascript\nimport Button from '@jumpcut/components-button';\n```\nWhen it comes to `web` components, you would use a monkey-patch import. For example:\n```javascript\nimport 'jumpcut/web/Button';\n// OR\nimport '@jumpcut/web/Button';\n// OR\nimport '@jumpcut/web-button';\n```\n\n### UPDATE an existing shared component\nWhenever you want to make a change to an existing shared component (keep in mind the OPEN/CLOSED Princple!), you can simply make the changes to the source files, commit your changes to the repo, and run `npm run deploy`. If you need to rename a file, or move it from one type (eg. `component`) to another (eg. `web`), then run `npm run rename [type] [name]` or `npm run move [type] [name]`, respectively.\n\n### DELETE an existing shared coument\nRun `npm run delete [type] [name]`.\n\n## Cross-package dependencies\nOften times we will want to use one shared package in another shared package. In such a case you will run the command `npm run dependency [targetType] [targetName]`;\n* `targetType` - The TYPE (enum `['component', 'script', 'web']`) of the package that you want to add a dependency to.\n* `targetName` - The NAME of the package that you want to add a dependency to.\nYou will be prompted for the `type` and `name` of the package you want to add as a dependency. This process adds the input prompted package as a dependency in the `package.json` of the argument package. It then runs `lerna bootstrap` which manages those dependency versioning going forward.\n\n## Naming Conventions\nReact `components` will follow PascalCase for both file names and import names.\n`scripts` will follow kebab-case for file names, and camelCase for import names.\n`web` components will follow kebab-case for file names (matching their html tag name) and imported using monkey-patching.\n```javascript\n// React components\nimport Button from '@jumpcut/components/Button';\n// Scripts\nimport uuidValidator from '@jumpcut/scripts/uuid-validator';\n// Web components\nimport '@jumpcut/web/jc-button';\n```\n\n## React\nWhen using web components in `react` projects run `npm i @webcomponents/webcomponentsjs vendor-copy`\nThen add the following entry to your project's root `package.json`.\n```javascript\n\"scripts\" {\n  ...\n  \"postinstall\": \"vendor-copy\"\n},\n...\n\"vendorCopy\": [\n  {\n    \"from\": \"node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js\",\n    \"to\": \"public/vendor/custom-elements-es5-adapter.js\"\n  },\n  {\n    \"from\": \"node_modules/@webcomponents/webcomponentsjs/webcomponents-bundle.js\",\n    \"to\": \"public/vendor/webcomponents-bundle.js\"\n  }\n]\n```\nand add the following to the `head` of your view file.\n```html\n<script src=\"%PUBLIC_URL%/vendor/webcomponents-bundle.js\"></script>\n<script>if (!window.customElements) { document.write(\"<!--\"); }</script>\n<script src=\"%PUBLIC_URL%/vendor/custom-elements-es5-adapter.js\"></script>\n<!--! DO NOT REMOVE THIS COMMENT, WE NEED ITS CLOSING MARKER -->\n```\nand then you can simply use a monkey-patch `import` statement like so:\n```javascript\nimport '@jumpcut/web/jc-button';\n...\nrender() {\n  return (\n    <jc-button id=\"example\" />\n  );\n}\n...\n```\n","readmeFilename":"README.md","description":"Shared components and scripts repo for the Jumpcut organization.","homepage":"https://github.com/jumpcut/jumpcut-shared#readme","repository":{"type":"git","url":"git+https://github.com/jumpcut/jumpcut-shared.git"},"author":{"name":"Jumpcut Engineering"},"bugs":{"url":"https://github.com/jumpcut/jumpcut-shared/issues"}}