{"_id":"agenda-paper","_rev":"72-a205f14ed3ba0bb2b9173c33d26aabeb","time":{"0.1.0":"2021-10-31T22:17:39.023Z","created":"2021-11-02T05:05:12.948Z","0.1.1":"2021-11-02T05:05:13.135Z","modified":"2022-04-11T12:55:01.531Z","0.1.2":"2021-11-02T05:08:56.420Z","0.1.3":"2021-11-02T07:52:40.812Z","0.1.4":"2021-11-04T21:22:51.125Z","0.1.5":"2021-11-05T10:47:50.644Z","0.1.6":"2021-11-05T12:04:09.916Z","0.1.7":"2021-11-05T12:31:52.280Z","0.1.8":"2021-11-06T11:43:28.777Z","0.1.9":"2021-11-06T15:07:24.216Z","0.1.10":"2021-11-06T19:24:28.040Z","0.1.11":"2021-11-06T19:37:14.735Z","0.2.0":"2021-11-06T20:50:33.037Z","0.2.1":"2021-11-06T21:13:57.560Z","0.2.2":"2021-11-06T21:25:14.799Z","0.2.3":"2021-11-06T21:32:38.549Z","0.2.4":"2021-11-07T22:41:49.501Z","0.2.5":"2021-11-07T22:49:53.800Z","0.2.6":"2021-11-08T04:43:00.822Z","0.2.7":"2021-11-08T04:49:06.034Z","0.2.8":"2021-11-08T05:44:47.432Z","0.2.9":"2021-11-08T06:24:05.285Z","0.2.10":"2021-11-08T06:59:59.986Z","0.2.12":"2021-11-10T19:34:13.483Z","0.2.14":"2021-11-11T04:50:22.893Z","0.2.15":"2021-11-11T05:34:51.771Z","0.2.16":"2021-11-11T14:56:52.725Z","0.2.17":"2021-11-11T17:29:59.185Z","0.2.18":"2021-11-14T08:05:30.296Z","0.2.20":"2021-11-14T14:57:15.225Z","1.0.0":"2021-11-20T22:01:27.216Z","1.0.2":"2021-11-28T07:57:47.720Z","1.0.6":"2022-01-11T17:19:48.430Z","1.0.7":"2022-01-12T08:24:54.249Z","1.1.0":"2022-01-31T08:05:38.862Z","1.1.1":"2022-01-31T10:09:00.602Z","1.1.2-rc.0":"2022-02-01T10:06:14.277Z","1.1.2-rc.1":"2022-02-01T10:39:58.353Z","1.1.2":"2022-02-07T12:54:07.551Z","1.1.3":"2022-02-15T06:35:32.509Z"},"name":"agenda-paper","dist-tags":{"latest":"1.1.3","rc":"1.1.2-rc.1"},"versions":{"1.0.0":{"name":"agenda-paper","version":"1.0.0","description":"Show your daily agenda on an ePaper display","license":"MIT","repository":{"type":"git","url":"git+https://github.com/eshaham/agenda-paper.git"},"keywords":["ePaper","ePaper.js","agenda","calendar"],"dependencies":{"dayjs":"^1.10.7","detect-rpi":"^1.4.0","dotenv":"^8.2.0","express":"^4.17.1","express-ws":"^5.0.2","googleapis":"^91.0.0","ws":"^7.5.5","epaperjs":"1.6.0"},"optionalDependencies":{"epaperjs":"1.6.0"},"devDependencies":{"@emotion/react":"^11.5.0","@emotion/styled":"^11.3.0","@fontsource/roboto":"^4.5.1","@material-ui/system":"^4.12.1","@mui/material":"^5.0.6","@types/express":"^4.17.13","@types/express-ws":"^3.0.1","@types/node":"^12.20.34","@types/puppeteer":"^5.4.4","@types/react":"^17.0.31","@types/react-dom":"^17.0.10","@types/react-router-dom":"^5.3.2","@types/ws":"^8.2.0","concurrently":"^6.3.0","http-proxy-middleware":"^2.0.1","react":"^17.0.2","react-dom":"^17.0.2","react-router-dom":"^5.3.0","react-scripts":"4.0.3","ts-loader":"^8.3.0","ts-node-dev":"^1.1.8","typescript":"^4.4.4","web-vitals":"^1.1.2","webpack-cli":"^4.9.1","webpack-node-externals":"^3.0.0"},"scripts":{"build":"npm run build:client && npm run build:server","build:client":"BUILD_PATH='./build/client' react-scripts build","build:server":"webpack","eject":"react-scripts eject","lint":"eslint ./","prepublishOnly":"npm run build","start":"concurrently --kill-others npm:start:server npm:start:client","start:server":"cd server && PORT=8080 NODE_ENV=development ts-node-dev --respawn --transpile-only index.ts","start:client":"react-scripts start","serve":"npm run build && node ./build/bundle.js"},"bin":{"agenda-paper":"build/bundle.js"},"eslintConfig":{"extends":["react-app"],"rules":{"@typescript-eslint/consistent-type-assertions":["warn",{"assertionStyle":"angle-bracket"}],"@typescript-eslint/member-delimiter-style":["error",{"multiline":{"delimiter":"comma","requireLast":true},"singleline":{"delimiter":"comma","requireLast":false},"overrides":{"interface":{"multiline":{"delimiter":"semi","requireLast":true}}}}],"@typescript-eslint/semi":["error"],"comma-dangle":["error","always-multiline"],"eol-last":["error","always"],"indent":["error",2],"no-multi-spaces":["error"],"object-curly-spacing":["error","always"],"quotes":[2,"single",{"avoidEscape":true,"allowTemplateLiterals":true}]}},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"gitHead":"9e12c9d16b7946117101965f62821b32672f62d6","bugs":{"url":"https://github.com/eshaham/agenda-paper/issues"},"homepage":"https://github.com/eshaham/agenda-paper#readme","_id":"agenda-paper@1.0.0","_nodeVersion":"14.4.0","_npmVersion":"7.16.0","dist":{"integrity":"sha512-TU4NqxJrJqR1cXkoKiFWT9PzxPxECTjscOZc07P7XrH3BR06LSuXkrbB2g3L+3u3gCVd5w6gnUqvo3E5CdqFyQ==","shasum":"9ece1b969073e1c7b6b8b758eb4f044f90cb987b","tarball":"https://registry.npmjs.org/agenda-paper/-/agenda-paper-1.0.0.tgz","fileCount":80,"unpackedSize":20600262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmXA3CRA9TVsSAnZWagAA6XIP/2NWjLB7PSWf6kU6XUkk\nVLPdeag8CQlEjvy9zv605Nk/3OfWPxoJIKUJTjZzMyjWansQQk1NCjCs+cX/\n+ZCEWNWODB/I8iZ53yMHc9I7Iut1UdjT72TkeUtylx2XFCA2kfL2oOuMNj67\nx8NWTHIuB+1W3VmtTGgyvJ4OLz/KA5X1dzYYx0l33x+Agz4DTQVV74oenCWU\nLADeYYpz5D7NphO4FowCRlHreB1sMHcJ9dtYOQTGEBoUWiAu/LNN+fQx1N7s\nIacK6T+DN1E3Ht2pbUpJ5ilC8W0cCxPa/NUxa6N8EMgLUuGaEP0/04xN5L1L\nMr2JoJyFtz4WTRD5Fs/nNVKRCbcUclM9jVhLBwsGiP25Ka09nSUMoBMQgVFa\neK6JItAhbVlcrMBI8zCNBNdduZBZqdbNDcwHUFzPvVqio8St6vQtP9tHfzVl\n3AKg9I61ugu9Sx8Vnp4s91wiaKqpJvhFlBnMgEcMAiUlT4zrN/sGlUtJq7Mh\n/aBjrZD/rBoidQg3MbPT4K8B5r/ulBb3DepcEwUBffdLqJ8KMv0c9YeHyqwx\nxWGmghudSeqL3FNySHbFwQyKwEyOSmPFpbot365cI1M61EsD2lO2LW8/olfa\nhwDHFwUa3LhreMnHWqD7xSAzrMtuhSELWbtxuENL7iKuWpk31yYeLnFuEjaH\nx4Yt\r\n=+9sl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDcg70+nS8i8EXiWBcG5G+ZfDm8cpCCowgx3m0UpLQtbAiBGNx1eHj1++nLFWghEyIw9I0nGY57YQQDLvy+P5mvxAg=="}]},"_npmUser":{"name":"eshaham","email":"elad.shaham+npm@gmail.com"},"directories":{},"maintainers":[{"name":"eshaham","email":"elad.shaham+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/agenda-paper_1.0.0_1637445686986_0.13532442984442405"},"_hasShrinkwrap":false},"1.0.2":{"name":"agenda-paper","version":"1.0.2","description":"Show your daily agenda on an ePaper display","license":"MIT","repository":{"type":"git","url":"git+https://github.com/eshaham/agenda-paper.git"},"keywords":["ePaper","ePaper.js","agenda","calendar"],"dependencies":{"dayjs":"^1.10.7","detect-rpi":"^1.4.0","dotenv":"^8.2.0","express":"^4.17.1","express-ws":"^5.0.2","googleapis":"^91.0.0","pre-commit":"^1.2.2","ws":"^7.5.5","epaperjs":"1.6.0"},"optionalDependencies":{"epaperjs":"1.6.0"},"devDependencies":{"@emotion/react":"^11.5.0","@emotion/styled":"^11.3.0","@fontsource/roboto":"^4.5.1","@material-ui/system":"^4.12.1","@mui/material":"^5.0.6","@types/express":"^4.17.13","@types/express-ws":"^3.0.1","@types/node":"^12.20.34","@types/puppeteer":"^5.4.4","@types/react":"^17.0.31","@types/react-dom":"^17.0.10","@types/react-router-dom":"^5.3.2","@types/ws":"^8.2.0","concurrently":"^6.3.0","http-proxy-middleware":"^2.0.1","react":"^17.0.2","react-dom":"^17.0.2","react-router-dom":"^5.3.0","react-scripts":"4.0.3","ts-loader":"^8.3.0","ts-node-dev":"^1.1.8","typescript":"^4.4.4","web-vitals":"^1.1.2","webpack-cli":"^4.9.1","webpack-node-externals":"^3.0.0"},"scripts":{"build":"npm run build:client && npm run build:server","build:client":"BUILD_PATH='./build/client' react-scripts build","build:server":"webpack","eject":"react-scripts eject","lint":"eslint ./","prepublishOnly":"npm run build","start":"concurrently --kill-others npm:start:server npm:start:client","start:server":"cd server && PORT=8080 NODE_ENV=development ts-node-dev --respawn --transpile-only index.ts","start:client":"react-scripts start","serve":"npm run build && node ./build/bundle.js"},"bin":{"agenda-paper":"build/bundle.js"},"eslintConfig":{"extends":["react-app"],"rules":{"@typescript-eslint/consistent-type-assertions":["warn",{"assertionStyle":"angle-bracket"}],"@typescript-eslint/member-delimiter-style":["error",{"multiline":{"delimiter":"comma","requireLast":true},"singleline":{"delimiter":"comma","requireLast":false},"overrides":{"interface":{"multiline":{"delimiter":"semi","requireLast":true}}}}],"@typescript-eslint/semi":"error","comma-dangle":["error","always-multiline"],"eol-last":["error","always"],"indent":["error",2],"no-multi-spaces":"error","no-var":"error","object-curly-spacing":["error","always"],"prefer-const":"error","quotes":[2,"single",{"avoidEscape":true,"allowTemplateLiterals":true}]}},"pre-commit":["lint"],"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"gitHead":"a80f0004df407e2a65b6f1533cd732d311c19b55","bugs":{"url":"https://github.com/eshaham/agenda-paper/issues"},"homepage":"https://github.com/eshaham/agenda-paper#readme","_id":"agenda-paper@1.0.2","_nodeVersion":"14.4.0","_npmVersion":"7.16.0","dist":{"integrity":"sha512-iFEtTeBjVIQmk+tlVVVbbiApRTtV7QQaR75gGUVS+NowqnhDwPvrVz+HsqjHXb+79ijGGHa7eXnrCEeMIPLyIw==","shasum":"753ccaeec9aae01238d0cc3c215d9b3f0ceabfdd","tarball":"https://registry.npmjs.org/agenda-paper/-/agenda-paper-1.0.2.tgz","fileCount":84,"unpackedSize":20755161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhozZ7CRA9TVsSAnZWagAA9Z0P/38Od1JGLj8aFzlIde1x\nZO9WTOSeydq8UheH2ZnwGudoel9olRs5dblBo7TmkUiRRDBJfopl//JST5UF\nt+/e/boxawefBLy2/nqElLqdzEW1nkrPIVPEYtzNVoE5EBHiWiHxWejV1d4Q\nmrRY6u2q4SEH+49Q13T0JtXBGhlbP+xfnMyQJ+qmrnnfiScw1XzBc1bQUSu2\n/Gbd08/1U5XmOThFdTZ7oag7yvXL2uAcLESWXvQCVxKExu6PihTOxLxTTGPB\n8xfyRjp9i2x7exQveDAlTvDJXuPW54SJY1nXqEl0o6onIqy+/GuKl3wPKHIH\nDBzy2+oniGe3S/zlSLfu+7UrXxMWHv3U9J4nKHd7+qk0I83ePj3iX0oBmOKk\n+1RshtsjeERSTbB9ZEMnLbajzzix7oNDAiQBdVhhkvtAPFrC/fuKogpuMABl\nfSi7CeTLe9evlPNenAdq2vA2q+/ogSSUxcRJIsrUYBbqqogZkplEssehFr50\nhSePTFKVRzGi+2ep4KVcisvM8aMOmcNINtVu4E573H1MTCQGwmVEDjNu3leI\nwqFV/y6YLkVLzFdpOJDxs5V6UFWQ2dwTDCDp3q88Gu6mTrbjx2gMISaQY2yO\nO41EUyfXnYQ3vee33PxkruIRJnsLh1/4sPqBh/sjBFdQDN+jnqzNU951FoF9\ntlSy\r\n=cQrA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDEDWnJl5mldLIgzsrUpR6CPntSpUQcsbCLxqQDJM5yEQIgEjoXaatAK5o9STS6x5niSdhVXH2v4GcS8whmJbYIk8g="}]},"_npmUser":{"name":"eshaham","email":"elad.shaham+npm@gmail.com"},"directories":{},"maintainers":[{"name":"eshaham","email":"elad.shaham+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/agenda-paper_1.0.2_1638086267506_0.190934668934996"},"_hasShrinkwrap":false},"1.0.7":{"name":"agenda-paper","version":"1.0.7","description":"Show your daily agenda on an ePaper display","license":"MIT","repository":{"type":"git","url":"git+https://github.com/eshaham/agenda-paper.git"},"keywords":["ePaper","ePaper.js","agenda","calendar"],"dependencies":{"dayjs":"^1.10.7","detect-rpi":"^1.4.0","dotenv":"^8.2.0","express":"^4.17.1","express-ws":"^5.0.2","googleapis":"^91.0.0","pre-commit":"^1.2.2","ws":"^7.5.5","epaperjs":"1.7.1"},"optionalDependencies":{"epaperjs":"1.7.1"},"devDependencies":{"@emotion/react":"^11.5.0","@emotion/styled":"^11.3.0","@fontsource/roboto":"^4.5.1","@material-ui/system":"^4.12.1","@mui/material":"^5.0.6","@types/express":"^4.17.13","@types/express-ws":"^3.0.1","@types/node":"^12.20.34","@types/puppeteer":"^5.4.4","@types/react":"^17.0.31","@types/react-dom":"^17.0.10","@types/react-router-dom":"^5.3.2","@types/ws":"^8.2.0","concurrently":"^6.3.0","http-proxy-middleware":"^2.0.1","react":"^17.0.2","react-dom":"^17.0.2","react-router-dom":"^5.3.0","react-scripts":"4.0.3","ts-loader":"^8.3.0","ts-node-dev":"^1.1.8","typescript":"^4.4.4","web-vitals":"^1.1.2","webpack-cli":"^4.9.1","webpack-node-externals":"^3.0.0"},"scripts":{"build":"npm run build:client && npm run build:server","build:client":"BUILD_PATH='./build/client' react-scripts build","build:server":"webpack","eject":"react-scripts eject","lint":"eslint ./","prepublishOnly":"npm run build","start":"concurrently --kill-others npm:start:server npm:start:client","start:server":"cd server && PORT=8080 NODE_ENV=development ts-node-dev --respawn --transpile-only index.ts","start:client":"react-scripts start","serve":"npm run build && node ./build/bundle.js"},"bin":{"agenda-paper":"build/bundle.js"},"eslintConfig":{"extends":["react-app"],"rules":{"@typescript-eslint/consistent-type-assertions":["warn",{"assertionStyle":"angle-bracket"}],"@typescript-eslint/member-delimiter-style":["error",{"multiline":{"delimiter":"comma","requireLast":true},"singleline":{"delimiter":"comma","requireLast":false},"overrides":{"interface":{"multiline":{"delimiter":"semi","requireLast":true}}}}],"@typescript-eslint/semi":"error","comma-dangle":["error","always-multiline"],"eol-last":["error","always"],"indent":["error",2],"no-multi-spaces":"error","no-var":"error","object-curly-spacing":["error","always"],"prefer-const":"error","quotes":[2,"single",{"avoidEscape":true,"allowTemplateLiterals":true}]}},"pre-commit":["lint"],"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"gitHead":"e4b8df88bb5e607c3c90b995f7ea3de1a4d4837a","bugs":{"url":"https://github.com/eshaham/agenda-paper/issues"},"homepage":"https://github.com/eshaham/agenda-paper#readme","_id":"agenda-paper@1.0.7","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-Kw9AhzXmLqdYBFxUcho8QyWlEu3Kh9yG6dLQFj/5XTtv0njbZzAP3k9/ZVCYQAvyfgzFCgLsF2cdyG9YXLW+Kg==","shasum":"c674991b43ce25196ef473e16592a27d0d448a02","tarball":"https://registry.npmjs.org/agenda-paper/-/agenda-paper-1.0.7.tgz","fileCount":85,"unpackedSize":1748004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3pBWCRA9TVsSAnZWagAAruAP/3Qwy/Av/jQTtdmzqNhI\nFHwQPbuvfBPa+NOClSQpXjd3bRel0/WZJ533ZhZhnwceJqK9P6aLakqIuJay\nBGhRNW464ZNFPx1bUgYRppNwW+lUGy2KNYslsOovStje4An5NhC+F/yKlmzu\nbZwb3ENuJM9e6fYxQFNiLx2iaaOwbB2NmlAUCx5B4S7ShrAV2CHao+tGkI9M\nHJ8TQlOchM1Eq0jW3Hp4YVH+M7g0ldjubydMEzPzlW+gFxXMvrmai8T4S2lL\n8NfqSimJm4/+/GTYHs8CjbXzegFkSvutIII9vHuTFoErRGIT99EzqfjPXpfL\nmJz7m7YfT56M95lr+MkFBqk0TWTbvxGW66CpMnxoE2LdX1ZyjbJH9fTvrlN5\na7USRmgwoevHe3R0POygyMNYUGUVn34cf607xIp6xDeFgXwzVTUxEAMuXM5t\nQXyoU3VvsoJYwybuVrJAbm/0Ci7oKP0VL6bHyrP8NC2JFseYrTkYwA6YYSEf\nuii2MXvU4hDgKwGAKqjjGwHEYxA5m4AGwuxcOoKfDk8DlIbsKRr42wVDJtf+\nS6P99oykL20MYXwZt/9V705lYXgTbHPL6Js7FwImpbmNvWd8Z34KD2U48K9u\nuHqorr6rRYLhBUhHeJzjl3vsEbl4UYcTGsiLfxxCmfmQ/TDblEMP18DR2UF8\nWTtz\r\n=1TO2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDdN9a6cAbApIFLwxLlQe9iTAm9BlbXPDqGNhA4BYEPAIgK8clkG0xgWvQx2ngTDltw/sEtWphKpjGGpy8Wl1kbS0="}]},"_npmUser":{"name":"eshaham","email":"elad.shaham+npm@gmail.com"},"directories":{},"maintainers":[{"name":"eshaham","email":"elad.shaham+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/agenda-paper_1.0.7_1641975894077_0.8884186018496145"},"_hasShrinkwrap":false},"1.1.0":{"name":"agenda-paper","version":"1.1.0","description":"Show your daily agenda on an ePaper display","license":"MIT","repository":{"type":"git","url":"git+https://github.com/eshaham/agenda-paper.git"},"keywords":["ePaper","ePaper.js","agenda","calendar"],"dependencies":{"dayjs":"^1.10.7","detect-rpi":"^1.4.0","dotenv":"^8.2.0","express":"^4.17.1","express-ws":"^5.0.2","googleapis":"^91.0.0","pre-commit":"^1.2.2","ws":"^7.5.5","epaperjs":"1.7.1"},"optionalDependencies":{"epaperjs":"1.7.1"},"devDependencies":{"@emotion/react":"^11.5.0","@emotion/styled":"^11.3.0","@fontsource/roboto":"^4.5.1","@material-ui/system":"^4.12.1","@mui/material":"^5.0.6","@types/express":"^4.17.13","@types/express-ws":"^3.0.1","@types/node":"^12.20.34","@types/puppeteer":"^5.4.4","@types/react":"^17.0.31","@types/react-dom":"^17.0.10","@types/react-router-dom":"^5.3.2","@types/ws":"^8.2.0","concurrently":"^6.3.0","http-proxy-middleware":"^2.0.1","react":"^17.0.2","react-dom":"^17.0.2","react-router-dom":"^5.3.0","react-scripts":"4.0.3","ts-loader":"^8.3.0","ts-node-dev":"^1.1.8","typescript":"^4.4.4","web-vitals":"^1.1.2","webpack-cli":"^4.9.1","webpack-node-externals":"^3.0.0"},"scripts":{"build":"npm run build:client && npm run build:server","build:client":"BUILD_PATH='./build/client' react-scripts build","build:server":"webpack","eject":"react-scripts eject","lint":"eslint ./","prepublishOnly":"npm run build","start":"concurrently --kill-others npm:start:server npm:start:client","start:server":"cd server && PORT=8080 NODE_ENV=development ts-node-dev --respawn --transpile-only index.ts","start:client":"react-scripts start","serve":"npm run build && node ./build/bundle.js"},"bin":{"agenda-paper":"build/bundle.js"},"eslintConfig":{"extends":["react-app"],"rules":{"@typescript-eslint/consistent-type-assertions":["warn",{"assertionStyle":"angle-bracket"}],"@typescript-eslint/member-delimiter-style":["error",{"multiline":{"delimiter":"comma","requireLast":true},"singleline":{"delimiter":"comma","requireLast":false},"overrides":{"interface":{"multiline":{"delimiter":"semi","requireLast":true}}}}],"@typescript-eslint/semi":"error","comma-dangle":["error","always-multiline"],"eol-last":["error","always"],"indent":["error",2],"no-multi-spaces":"error","no-var":"error","object-curly-spacing":["error","always"],"prefer-const":"error","quotes":[2,"single",{"avoidEscape":true,"allowTemplateLiterals":true}]}},"pre-commit":["lint"],"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"gitHead":"0f42b30f943a2241e606d6268d86de0bfaa14c37","bugs":{"url":"https://github.com/eshaham/agenda-paper/issues"},"homepage":"https://github.com/eshaham/agenda-paper#readme","_id":"agenda-paper@1.1.0","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-APDXO4dj/i512DI3W9jtyfo6N1BaDZc/Oa6Wf4IKY+WJf2bCCyedXPIwhfK6/aFhKFJ12+oFdIHkdqEFj5Mw8A==","shasum":"7c8fdbe2080f1c6edc12793ca5d9fbf6a4f07612","tarball":"https://registry.npmjs.org/agenda-paper/-/agenda-paper-1.1.0.tgz","fileCount":85,"unpackedSize":1749805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh95hSCRA9TVsSAnZWagAAs7sP/iNjUaJG91OazCxEWat3\nMbHcRv+7DQHpIeDHybK+UNxehQfN436w1G7TH0RKP2mwIJh4YEFYEeUchN/a\nGzWAOAOfP4rWA4TZbPDhXlmZkaBbbIwGk0ZVDZtyEAJa9LMAAPsdgtTzMkKZ\nT1aZ0Pubk0qhkX1DVxsWCm6BO0seR0AyIga77mkPgYPvfFIprHmpTdz8ga2b\nde0nlkVjOcWww6hRDAaTCYilHNxrMm9sUPDs2wXRgg5fw/oTiq9ecSxWId13\nkQGV7MV7faW4yyyJS6wrdb7Su3Q+7UV/YKzQ1oFb2kkOY6BuFyOz1LOs1s1Z\nIBTEd/KTnLigQd2mUEKWLq5+PK7JJMn2lJatGKcKzAlNmIdc/mpJ2VdIs4Jf\nYYgTxGINo419rJSo7tL7ZZqzZW4o49Ohtlm8pi5o656cyJABMsELbIdAfE3/\nxSXOPFG/n3FSyZq3kxxJOMA1TJrqBxuTpg2SdqV0sPuZs9sP/g0hXb60DR/0\nYy2NjAtTsYQ6GreYMMH+pC8x/1wVU1Vrx9XR091g1nznyxN3p/B8HAPc4Qu1\nr8q0zdpoUu2Qj+0rw3RvvtosCTjgCfBxnVFThFZyzwttt9Th3/ypHKqAbR2m\nYU0Ce0lmnXA+Zz2hidr/J3W7IdROP1+ZEfEnPQxgLn5b0iaWTdKIGtU1VaSh\n3dTp\r\n=dONh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcY9E7fV2+8fzc2xsQpHaNNh3ad/dPmucT3VxmE0dAQwIhALHAGpiARoYXsyXwSR5OfafGzrlpJD184YoR0pGCmz1U"}]},"_npmUser":{"name":"eshaham","email":"elad.shaham+npm@gmail.com"},"directories":{},"maintainers":[{"name":"eshaham","email":"elad.shaham+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/agenda-paper_1.1.0_1643616338587_0.6855149083367296"},"_hasShrinkwrap":false},"1.1.1":{"name":"agenda-paper","version":"1.1.1","description":"Show your daily agenda on an ePaper display","license":"MIT","repository":{"type":"git","url":"git+https://github.com/eshaham/agenda-paper.git"},"keywords":["ePaper","ePaper.js","agenda","calendar"],"dependencies":{"dayjs":"^1.10.7","detect-rpi":"^1.4.0","dotenv":"^8.2.0","express":"^4.17.1","express-ws":"^5.0.2","googleapis":"^91.0.0","pre-commit":"^1.2.2","ws":"^7.5.5","epaperjs":"1.7.1"},"optionalDependencies":{"epaperjs":"1.7.1"},"devDependencies":{"@emotion/react":"^11.5.0","@emotion/styled":"^11.3.0","@fontsource/roboto":"^4.5.1","@material-ui/system":"^4.12.1","@mui/material":"^5.0.6","@types/express":"^4.17.13","@types/express-ws":"^3.0.1","@types/node":"^12.20.34","@types/puppeteer":"^5.4.4","@types/react":"^17.0.31","@types/react-dom":"^17.0.10","@types/react-router-dom":"^5.3.2","@types/ws":"^8.2.0","concurrently":"^6.3.0","http-proxy-middleware":"^2.0.1","react":"^17.0.2","react-dom":"^17.0.2","react-router-dom":"^5.3.0","react-scripts":"4.0.3","ts-loader":"^8.3.0","ts-node-dev":"^1.1.8","typescript":"^4.4.4","web-vitals":"^1.1.2","webpack-cli":"^4.9.1","webpack-node-externals":"^3.0.0"},"scripts":{"build":"npm run build:client && npm run build:server","build:client":"BUILD_PATH='./build/client' react-scripts build","build:server":"webpack","eject":"react-scripts eject","lint":"eslint ./","prepublishOnly":"npm run build","start":"concurrently --kill-others npm:start:server npm:start:client","start:server":"cd server && PORT=8080 NODE_ENV=development ts-node-dev --respawn --transpile-only index.ts","start:client":"react-scripts start","serve":"npm run build && node ./build/bundle.js"},"bin":{"agenda-paper":"build/bundle.js"},"eslintConfig":{"extends":["react-app"],"rules":{"@typescript-eslint/consistent-type-assertions":["warn",{"assertionStyle":"angle-bracket"}],"@typescript-eslint/member-delimiter-style":["error",{"multiline":{"delimiter":"comma","requireLast":true},"singleline":{"delimiter":"comma","requireLast":false},"overrides":{"interface":{"multiline":{"delimiter":"semi","requireLast":true}}}}],"@typescript-eslint/semi":"error","comma-dangle":["error","always-multiline"],"eol-last":["error","always"],"indent":["error",2],"no-multi-spaces":"error","no-var":"error","object-curly-spacing":["error","always"],"prefer-const":"error","quotes":[2,"single",{"avoidEscape":true,"allowTemplateLiterals":true}]}},"pre-commit":["lint"],"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"gitHead":"30ba470fe008617a20274c01e168f4da67d93ac4","bugs":{"url":"https://github.com/eshaham/agenda-paper/issues"},"homepage":"https://github.com/eshaham/agenda-paper#readme","_id":"agenda-paper@1.1.1","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-G5b2tVHBt+NDnsS/ru8wjv+KtVMS7fGYjhWYfdomiGb2Gbo6JG14jDdsV6uP3IM41bNgntBJccRo/FTV32pVHQ==","shasum":"1428ac06d0f046f230032b0cb30ac94d5ce1598a","tarball":"https://registry.npmjs.org/agenda-paper/-/agenda-paper-1.1.1.tgz","fileCount":86,"unpackedSize":1756646,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh97U8CRA9TVsSAnZWagAAAlAP+gL1J+cyPMWqvZARVk12\nGisGllzFeIzB5rsrGYpjyBWn0oLKciWRTQac7OM54Eho7E51A8fz3CxeGjDj\nYBMEWDrVcLjp+olrDTvU35szEHIobi8Ef48WPKkF/D0h1RiiIKy30hDqCM3S\nvQ0fPjkKq78PIYZu4Wy1CE9EjG6XeXTQr1kHFaP8OeXVlUKc16vkl28LerEg\nRUUm1g54spxeH3ngDDcjhkrd6cxEjjXhNXGoXVJfzmxC/RqRE/2Onr7wM2wp\nMihF/FCMM1GM0BazPXqqFW69jTi66h0lRpzjHKsHFjZEjUOPDgn61Wao7nB7\no6y7r4o/ZKLOp2EED7DYqVkzH8qbzGCV40Pzy2fdgjxnXr/MViRjcRSlI1/V\n5wgRlU6oVqI7YqFFlrDyWGrjgs3UAHrcS7ufOcr8JkI1HMrAEFO1X7yn7qti\nS8Qfv9DtiaJo2R1chwTmGAGlYgDYzY/b6mOjk36BztxgsX2wvQfy7mpL4p/a\nFdQWy0k0HrXUW9IC0tTD/+fkkVRYhyz4ySVrbpt29hFtKKJdNr2i1yLrbDER\nekMCmrXgx4UqgDWjQCN5sEhJiX/w7BOClp/FL+aNHjDTMz+JEhwu9bsxWqAZ\nh8cxgpqmxMb0kHTNml5RfzTIVyVwD6AF33gzSYtVrtEv2JTi+I4UtsfIjn5+\n6ATt\r\n=ikke\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGqwVuij+M/CW+JOlkYRBRhQjzyee0u2vviJeyzCCerCAiEA9SsmUbpx2zz3iPN/ddW+jDjFtRYNf7v794lUBG+vdK0="}]},"_npmUser":{"name":"eshaham","email":"elad.shaham+npm@gmail.com"},"directories":{},"maintainers":[{"name":"eshaham","email":"elad.shaham+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/agenda-paper_1.1.1_1643623740424_0.4466318985983173"},"_hasShrinkwrap":false},"1.1.2-rc.1":{"name":"agenda-paper","version":"1.1.2-rc.1","description":"Show your daily agenda on an ePaper display","license":"MIT","repository":{"type":"git","url":"git+https://github.com/eshaham/agenda-paper.git"},"keywords":["ePaper","ePaper.js","agenda","calendar"],"dependencies":{"dayjs":"^1.10.7","detect-rpi":"^1.4.0","dotenv":"^8.2.0","express":"^4.17.1","express-ws":"^5.0.2","googleapis":"^91.0.0","pre-commit":"^1.2.2","ws":"^7.5.5","epaperjs":"1.7.1"},"optionalDependencies":{"epaperjs":"1.7.1"},"devDependencies":{"@emotion/react":"^11.5.0","@emotion/styled":"^11.3.0","@fontsource/roboto":"^4.5.1","@material-ui/system":"^4.12.1","@mui/material":"^5.0.6","@types/express":"^4.17.13","@types/express-ws":"^3.0.1","@types/node":"^12.20.34","@types/puppeteer":"^5.4.4","@types/react":"^17.0.31","@types/react-dom":"^17.0.10","@types/react-router-dom":"^5.3.2","@types/ws":"^8.2.0","concurrently":"^6.3.0","http-proxy-middleware":"^2.0.1","react":"^17.0.2","react-dom":"^17.0.2","react-router-dom":"^5.3.0","react-scripts":"4.0.3","ts-loader":"^8.3.0","ts-node-dev":"^1.1.8","typescript":"^4.4.4","web-vitals":"^1.1.2","webpack-cli":"^4.9.1","webpack-node-externals":"^3.0.0"},"scripts":{"build":"npm run build:client && npm run build:server","build:client":"BUILD_PATH='./build/client' react-scripts build","build:server":"webpack","eject":"react-scripts eject","lint":"eslint ./","prepublishOnly":"npm run build","start":"concurrently --kill-others npm:start:server npm:start:client","start:server":"cd server && PORT=8080 NODE_ENV=development ts-node-dev --respawn --transpile-only index.ts","start:client":"react-scripts start","serve":"npm run build && node ./build/bundle.js"},"bin":{"agenda-paper":"build/bundle.js"},"eslintConfig":{"extends":["react-app"],"rules":{"@typescript-eslint/consistent-type-assertions":["warn",{"assertionStyle":"angle-bracket"}],"@typescript-eslint/member-delimiter-style":["error",{"multiline":{"delimiter":"comma","requireLast":true},"singleline":{"delimiter":"comma","requireLast":false},"overrides":{"interface":{"multiline":{"delimiter":"semi","requireLast":true}}}}],"@typescript-eslint/semi":"error","comma-dangle":["error","always-multiline"],"eol-last":["error","always"],"indent":["error",2],"no-multi-spaces":"error","no-var":"error","object-curly-spacing":["error","always"],"prefer-const":"error","quotes":[2,"single",{"avoidEscape":true,"allowTemplateLiterals":true}]}},"pre-commit":["lint"],"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"readme":"# About this project\n\nThis project allows you to set up an ePaper display on your desktop, which shows the next couple of meetings from your calendar.\nIt uses hardware you can simply purchase on Amazon - an ePaper display and a Raspberry Pi Zero - and optionally a 3D printed case.\nSoftware wise, it uses [ePaper.js](https://github.com/samsonmking/epaper.js) as the framework for printing on the ePaper display, [Create React App](https://github.com/facebook/create-react-app) and express.js.\n\n![image](https://user-images.githubusercontent.com/7040645/142741601-7eb96d19-4da3-403b-8cfc-91371c4ecf04.png)\n\n# Getting started\n\n## Get the hardware\n\n* Waveshare 7.5\" ePaper display - [Amazon](https://amzn.to/30Kmm1n)\n* Raspberry Pi Zero WH - [Amazon](https://amzn.to/2Z59Xom)\n* Raspberry Pi Power Supply - [Amazon](https://amzn.to/30GeVJi)\n* 16GB MicroSD card - [Amazon](https://amzn.to/3kXAR9o)\n* 7.5\" enclosure (optional) - [Amazon](https://amzn.to/3HFlvjJ) - in case you can't 3D print a proper enclosure\n\nIf you have access to a 3D printer, I used this [awesome design](https://www.thingiverse.com/thing:4152661) as an enclosure.\n\n## Create a GCP app\n\nIn order to be able to login to your Google calendar, you will need to set up an app on [Google Cloud Console](https://console.cloud.google.com/).\n\nSteps:\n\n1. Set up a [new project](https://console.cloud.google.com/projectcreate) under Google Cloud Console.\n2. Enable the [Google Calendar API](https://console.cloud.google.com/apis/api/calendar-json.googleapis.com/overview) for your newly created project.\n3. Create new credentials for your project:\n   1. Goto the [credentials page](https://console.cloud.google.com/apis/credentials) and click on the \"Create credentials\" button\n   2. Choose the OAuth Client ID option\n   3. Choose Web application for application type\n   4. Add `http://localhost:3000` under \"Authorized JavaScript origins\" and `http://localhost:3000/api/auth/login/callback` under \"Authorized redirect URIs\", click save\n   5. Copy the created Client ID and Client Secret, you will need them later\n4. Update the OAuth Consent screen:\n   1. Go to the [OAuth consent screen](https://console.cloud.google.com/apis/credentials/consent) setup page\n   2. Give your app a name and provide your email (not that important since you will be the only one using this app), click Save and Continue\n   3. Click the \"Add or remove scopes\" button and select the `calendar.events.readonly` scope, click Save and Continue\n   4. Save your app\n\n## Install Raspberry Pi Operating System (with desktop)\n\n- use Raspberry Pi Imager\n- finish installation on the desktop and connect to wifi\n- optionally enable SSH\n\n## Setup Agenda Paper on your Raspberry Pi\n\n### Install NVM\n\n```\nwget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash\n```\n\nInstall node lts\nSee here: https://dev.to/patrickweaver/installing-node-12-and-higher-on-a-raspberry-pi-zero-with-nvm-4dnj\n```\nNVM_NODEJS_ORG_MIRROR=https://unofficial-builds.nodejs.org/download/release nvm install 14\n```\n\ncheck node version\n```\nnode -v\nv14.18.1\n```\n\n### Enable SPI\n\n```\nsudo raspi-config\n# Choose Interfacing Options -> SPI -> Yes  to enable SPI interface\nsudo reboot\n```\n\n### Install dependencies\n\n```\nsudo apt-get update\n\n# Install wiringpi\nsudo apt-get install -y wiringpi\n\n# For Pi 4, you need to update wiringpi (skip otherwise)：\ncd /tmp\nwget https://project-downloads.drogon.net/wiringpi-latest.deb\nsudo dpkg -i wiringpi-latest.deb\n#You will get 2.52 information if you've installed it correctly\ngpio -v\n\n# Remaining dependencies\nsudo apt-get install -y build-essential chromium-browser\n```\n\n### Install Agenda Paper globally\n\n```\nnpm i -g agenda-paper\n```\n\n### Create environment config file\n\nCreate a config directory called `.agenda-paper` under your home folder\n\n```\nmkdir ~/.agenda-home\n```\n\nCreate an `.env` file under the config directory and add the GCP app credentials\n\n```\necho \"GOOGLE_CLIENT_ID=<enter your app's client ID>\" >> ~/.agenda-paper/.env\necho \"GOOGLE_CLIENT_SECRET=<enter your app's client secret>\" >> ~/.agenda-paper/.env\n\n# this is optional, in case you want to use another display supported by ePaper.js\necho \"EPAPER_DEVICE_TYPE=<device_type_id>\" >> ~/.agenda-paper/.env\n```\n\n## Run Agenda-Paper\n\nOn your raspberry pi terminal (or SSH), run agenda-paper\n\n```\nagenda-paper\n```\n\nYou should be seeing a prompt on your ePaper display to set up your account. Follow the instructions to set everything up.\nEventually, you should be seeing your agenda on the display.\n\n## Running Agenda-Paper on system startup\n\nFirst, let's install `pm2` globally.\n```\nnpm i -g pm2\n```\n\nNow, let's run setup pm2 on system startup:\n```\npm2 startup\n```\n\nRun the command shown in the output - should be something along these lines:\n```\nsudo env PATH=$PATH:/home/pi/.nvm/versions/node/<version>/bin /home/pi/.nvm/versions/node/<version>/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi\n```\n\nNow, let's run `agenda-paper` using `pm2`\n```\npm2 start agenda-paper\n```\n\nFinally, let's persist `agenda-paper` on `pm2` app list\n```\npm2 save\n```\n\nIf everything goes well, agenda-paper should be started automatically on system startup\n\nTo check the app logs under `pm2`, use the following command:\n```\npm2 logs\n```\n","readmeFilename":"README.md","gitHead":"779aa21d86e4c07a2fd7cbab0e3fe1ba31efe693","bugs":{"url":"https://github.com/eshaham/agenda-paper/issues"},"homepage":"https://github.com/eshaham/agenda-paper#readme","_id":"agenda-paper@1.1.2-rc.1","_nodeVersion":"14.4.0","_npmVersion":"7.16.0","dist":{"integrity":"sha512-eH0102hr5CP3ha+Ese5oNoLzidMCc7Y87nSk/4Dvbop3cqXTMCttEU6cRzn0MdUvbAW0sPtQvvDm9F26fnXLcg==","shasum":"8ec79831607fd5dc590c7d40e73b232fc576a6d4","tarball":"https://registry.npmjs.org/agenda-paper/-/agenda-paper-1.1.2-rc.1.tgz","fileCount":87,"unpackedSize":20790978,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+Q3+CRA9TVsSAnZWagAAxQAP/jzE1RzmIyLhSL4ahuWI\nzmhtePJudtMxVbdvGSVVAujNCCkDL1ptzXTg5Nw5rMqGr50BBgnooxn0jWqg\nKs6OkRlCbfu3aDVheoZb/u++63tsn1DKdIzm1NkGRFptnk7JCAlsT7wrEp1K\nZ7dxrECzuKznMQAc0AXEc6XAHoRuzk6ZtZLNptsGnvC/lcd2da2SaZghGt8w\ngm2V5TNf93AlpbuZQRNMjVMZ6Qoyp9DeP6b8NmLaabmnaz93yEH+lKCmO/mi\nAZXxqqWN5Z6/RlsgK9Eq9s7xLQB9sh2JmEURSD6BrHD1tMiMCX8LFMzBOgqw\nJ8J9JEKNnD8wDAy2Df8lsl6o1N6zAT5wg/2jsP55+nfRDHevrO0EO1qBYc4i\nkwgBbLVx+CcpBzm67mYTf7I/uoEQMp66Gcuy811/b3YAblawjKzsv3xMKEOW\nM0XL8v4mTgkb9xDfcwmDcK8zwDYl+hEPbpU00KiDLrWc4UeB+V417bH8RDdZ\nrqvjYxihwu+zFXkdNS/mbmtOVa1f8VJ7fHtEjVYJsjbSQkiDWq7Dr3QcNsyX\nxDN0rumCjPv3ZjTwbBCgfqOmdJ856H+C2q/mOQzjn0xjFw5MpRkIiP2OOtHY\nM+yVnoqPSRddVvG35yHWJ7s+OG7M1+WzBw/uwlQa3QWixYsmpfMXbuk4oBBx\nt8lm\r\n=gCqJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxEA/h+pu1QlFcGY4AZ9tLqeGTn3ekwRyJyOWMxjAjcwIgCRwWlJJJTG6gcwHytONSJJSCoCFPecm47HeGdeRBtRg="}]},"_npmUser":{"name":"eshaham","email":"elad.shaham+npm@gmail.com"},"directories":{},"maintainers":[{"name":"eshaham","email":"elad.shaham+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/agenda-paper_1.1.2-rc.1_1643711998180_0.10851310618954879"},"_hasShrinkwrap":false},"1.1.2":{"name":"agenda-paper","version":"1.1.2","description":"Show your daily agenda on an ePaper display","license":"MIT","repository":{"type":"git","url":"git+https://github.com/eshaham/agenda-paper.git"},"keywords":["ePaper","ePaper.js","agenda","calendar"],"dependencies":{"dayjs":"^1.10.7","detect-rpi":"^1.4.0","dotenv":"^8.2.0","express":"^4.17.1","express-ws":"^5.0.2","googleapis":"^91.0.0","pre-commit":"^1.2.2","ws":"^7.5.5","epaperjs":"1.7.1"},"optionalDependencies":{"epaperjs":"1.7.1"},"devDependencies":{"@emotion/react":"^11.5.0","@emotion/styled":"^11.3.0","@fontsource/roboto":"^4.5.1","@material-ui/system":"^4.12.1","@mui/material":"^5.0.6","@types/express":"^4.17.13","@types/express-ws":"^3.0.1","@types/node":"^12.20.34","@types/puppeteer":"^5.4.4","@types/react":"^17.0.31","@types/react-dom":"^17.0.10","@types/react-router-dom":"^5.3.2","@types/ws":"^8.2.0","concurrently":"^6.3.0","http-proxy-middleware":"^2.0.1","react":"^17.0.2","react-dom":"^17.0.2","react-router-dom":"^5.3.0","react-scripts":"4.0.3","ts-loader":"^8.3.0","ts-node-dev":"^1.1.8","typescript":"^4.4.4","web-vitals":"^1.1.2","webpack-cli":"^4.9.1","webpack-node-externals":"^3.0.0"},"scripts":{"build":"npm run build:client && npm run build:server","build:client":"BUILD_PATH='./build/client' react-scripts build","build:server":"webpack","eject":"react-scripts eject","lint":"eslint ./","prepublishOnly":"npm run build","start":"concurrently --kill-others npm:start:server npm:start:client","start:server":"cd server && PORT=8080 NODE_ENV=development ts-node-dev --respawn --transpile-only index.ts","start:client":"react-scripts start","serve":"npm run build && node ./build/bundle.js"},"bin":{"agenda-paper":"build/bundle.js"},"eslintConfig":{"extends":["react-app"],"rules":{"@typescript-eslint/consistent-type-assertions":["warn",{"assertionStyle":"angle-bracket"}],"@typescript-eslint/member-delimiter-style":["error",{"multiline":{"delimiter":"comma","requireLast":true},"singleline":{"delimiter":"comma","requireLast":false},"overrides":{"interface":{"multiline":{"delimiter":"semi","requireLast":true}}}}],"@typescript-eslint/semi":"error","comma-dangle":["error","always-multiline"],"eol-last":["error","always"],"indent":["error",2],"no-multi-spaces":"error","no-var":"error","object-curly-spacing":["error","always"],"prefer-const":"error","quotes":[2,"single",{"avoidEscape":true,"allowTemplateLiterals":true}]}},"pre-commit":["lint"],"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"gitHead":"e81407028d7b9d5929d70ef18d2768e6670c9978","bugs":{"url":"https://github.com/eshaham/agenda-paper/issues"},"homepage":"https://github.com/eshaham/agenda-paper#readme","_id":"agenda-paper@1.1.2","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-LRGBE1B2Zl+xgcs7VN5j3I3RLw/eqgiEAEHqgBpRtEOP12CWZwWzpf4hUU/5az2/65ul1MBOYuW9QTbr9h+ckw==","shasum":"14cd00daf141028004212216efdc0399af7ff84c","tarball":"https://registry.npmjs.org/agenda-paper/-/agenda-paper-1.1.2.tgz","fileCount":86,"unpackedSize":1782606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiARZvCRA9TVsSAnZWagAAG2cP/2WBZ/3SjShrU9g8LE9Y\ni0ZdGFCaU3wLqPxTmU/JbDIZIkzhIjbBRqof6Mb8TCIxqj46ijoFfjuk1zEI\niCYC4IeeKe+g2jUs7kU8VZCJ6cQ6XEEp8aJIkE972BDy+3GpaqO9AMuNpgzL\nx/1R2g0TOhavwjg5sPt/rbjmwDWwZ2sJegzcHDPqr3WKiKAFmArzfWQbI8VN\nhMUZaBT5qs5iApxjB6ZSzlQ1hCfQZkF0pf5ERq0HwhHyQMJfHP+CMfOmeBn1\n2Bx43wcgUr5uca7sMEUeBqetJZRGv1Cny0b0wZ8VvRL9kJxSdEI4ixgJ68W/\nWMN/BWasqgz7A6h6bfm39SMMtbYTzYTXHoSM0JhUJ7CatlMf3ikK8yIrP16t\nN2GQTZQ8tV6c0zw8C14YLGnLeOXkztZjygQpyPBFHDf4qvQR5xXSsNCMJ3Bn\nlotgVChHMnqgp4JYzcXNpWBxi5vqjK4ZQJjuwmjUBqDh0pFzQGGMBvtrqbNk\nkxdPZUsybDBwlLPATADp8oLNS4R6snrXMqPE+70buJVQ9He703+3OrU7MVBp\neePEtVPypr3G7P3wRIPGO6+cuyt/ZBJIU9Fnq0nnmP7EtiEfWTorsRUeIzEW\ndAPgxRPNcCBDa7YCUCL3El9woXR4316s0D+jmlssJxN0zongnldyeXUhxY57\nnm8h\r\n=dV6l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCHONLigC8mLleRZFBPAcvBbRMLMfZ15ciWVxdzs6K3uQIgLpVmdL3WDs1epjlRTTFlk24thLdNsS9JzhqjvVCfOO0="}]},"_npmUser":{"name":"eshaham","email":"elad.shaham+npm@gmail.com"},"directories":{},"maintainers":[{"name":"eshaham","email":"elad.shaham+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/agenda-paper_1.1.2_1644238447331_0.9972789290636004"},"_hasShrinkwrap":false},"1.1.3":{"name":"agenda-paper","version":"1.1.3","description":"Show your daily agenda on an ePaper display","license":"MIT","repository":{"type":"git","url":"git+https://github.com/eshaham/agenda-paper.git"},"keywords":["ePaper","ePaper.js","agenda","calendar"],"dependencies":{"dayjs":"^1.10.7","detect-rpi":"^1.4.0","dotenv":"^8.2.0","express":"^4.17.1","express-ws":"^5.0.2","googleapis":"^91.0.0","pre-commit":"^1.2.2","ws":"^7.5.5","epaperjs":"1.7.1"},"optionalDependencies":{"epaperjs":"1.7.1"},"devDependencies":{"@emotion/react":"^11.5.0","@emotion/styled":"^11.3.0","@fontsource/roboto":"^4.5.1","@material-ui/system":"^4.12.1","@mui/material":"^5.0.6","@types/express":"^4.17.13","@types/express-ws":"^3.0.1","@types/node":"^12.20.34","@types/puppeteer":"^5.4.4","@types/react":"^17.0.31","@types/react-dom":"^17.0.10","@types/react-router-dom":"^5.3.2","@types/ws":"^8.2.0","concurrently":"^6.3.0","http-proxy-middleware":"^2.0.1","react":"^17.0.2","react-dom":"^17.0.2","react-router-dom":"^5.3.0","react-scripts":"4.0.3","ts-loader":"^8.3.0","ts-node-dev":"^1.1.8","typescript":"^4.4.4","web-vitals":"^1.1.2","webpack-cli":"^4.9.1","webpack-node-externals":"^3.0.0"},"scripts":{"build":"npm run build:client && npm run build:server","build:client":"BUILD_PATH='./build/client' react-scripts build","build:server":"webpack","eject":"react-scripts eject","lint":"eslint ./","prepublishOnly":"npm run build","start":"concurrently --kill-others npm:start:server npm:start:client","start:server":"cd server && PORT=8080 NODE_ENV=development ts-node-dev --respawn --transpile-only index.ts","start:client":"react-scripts start","serve":"npm run build && node ./build/bundle.js"},"bin":{"agenda-paper":"build/bundle.js"},"eslintConfig":{"extends":["react-app"],"rules":{"@typescript-eslint/consistent-type-assertions":["warn",{"assertionStyle":"angle-bracket"}],"@typescript-eslint/member-delimiter-style":["error",{"multiline":{"delimiter":"comma","requireLast":true},"singleline":{"delimiter":"comma","requireLast":false},"overrides":{"interface":{"multiline":{"delimiter":"semi","requireLast":true}}}}],"@typescript-eslint/semi":"error","comma-dangle":["error","always-multiline"],"eol-last":["error","always"],"indent":["error",2],"no-multi-spaces":"error","no-var":"error","object-curly-spacing":["error","always"],"prefer-const":"error","quotes":[2,"single",{"avoidEscape":true,"allowTemplateLiterals":true}]}},"pre-commit":["lint"],"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"gitHead":"85f2a116d39d2e2d10ce6a85a8722593f4a506ca","bugs":{"url":"https://github.com/eshaham/agenda-paper/issues"},"homepage":"https://github.com/eshaham/agenda-paper#readme","_id":"agenda-paper@1.1.3","_nodeVersion":"14.4.0","_npmVersion":"7.16.0","dist":{"integrity":"sha512-Dx5wHnuxOlJk/fd5qYrZtFpqzdmiosVLUvWSwwc6NddU+CBW/pFOQkFzXGMq8uuJHCiMCmXM3jwSdq8+MjJggg==","shasum":"06935171309fd5ba17373ba00dcd46f23644d938","tarball":"https://registry.npmjs.org/agenda-paper/-/agenda-paper-1.1.3.tgz","fileCount":87,"unpackedSize":20791333,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiC0m0CRA9TVsSAnZWagAAQCEQAKO7pBeBKxe3dHMoPMrI\nR23VHnwvzC6ToZEG1og0u018aQifOjSEnZiakuk3vNXBRW6hDu5jZ/MbdMoo\nqtgoJBMLHVJix1H0SqudlW91ftGnN6zDZu4hvuSZqoIMS8nxb+KSlYJ0o5we\nbQtOkciSXqR7c3O9XU6a2dk3SiTxY2h35A1WzT0B75myQW35oo7s2VK/nP78\nb5F4TdpfA4GapVT8EFEVRrFJ/+zn6G9M7Smc+E8FfnqjjQ4cTY6IdlHFhWUP\nu+cGlufbsw3rV8v4EIrmzxJm6NZk5is2qbet0kGtVcuSi6JLnJRWluEVjl3+\nWNwPBaOu4B+eUNbOg22jcXq4bUEzd1c8OgyAN9JYbo7fF7FjXg3tSR2ExSyo\n/0U6illicaceWPzvEYKhJktQiviBk2q2Ptp/6uX3XyviPMfGxibt2jOtqCwl\n5Phy5glwEsbdgnvsurZPZztSd9He+uFyFgh0OY/kRMM6OIm3bm8pJ9+FY579\nXsCRFCc0XjgQ6ETlRGQw/QnLunf7XX/r0DKri1rb6/awfmBHlNIjEQSZobEv\nZh59ytgmL83u+IM7G5GaR7M4rvoRBE2SQJQmMYI/dLGOg9VnUQybGVwf7Vmi\nWOGwDP66MyErlBKPmuTTolMB6QfZRNalObWFPRtWtKOXHVLPdgNo8aXpiRf8\nCy6t\r\n=vWgw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGEObsleH19kQy3HnYgZ/+GKLAsZ0dVeA5OGNBPS3y0PAiBksGhCp0WsQJmdAa4S+UWLXI2Chf2P3DORG2TseNAZHQ=="}]},"_npmUser":{"name":"eshaham","email":"elad.shaham+npm@gmail.com"},"directories":{},"maintainers":[{"name":"eshaham","email":"elad.shaham+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/agenda-paper_1.1.3_1644906932284_0.6870499274866932"},"_hasShrinkwrap":false}},"maintainers":[{"name":"eshaham","email":"elad.shaham+npm@gmail.com"}],"description":"Show your daily agenda on an ePaper display","homepage":"https://github.com/eshaham/agenda-paper#readme","keywords":["ePaper","ePaper.js","agenda","calendar"],"repository":{"type":"git","url":"git+https://github.com/eshaham/agenda-paper.git"},"bugs":{"url":"https://github.com/eshaham/agenda-paper/issues"},"license":"MIT","readme":"# About this project\n\nThis project allows you to set up an ePaper display on your desktop, which shows the next couple of meetings from your calendar.\nIt uses hardware you can simply purchase on Amazon - an ePaper display and a Raspberry Pi Zero - and optionally a 3D printed case.\nSoftware wise, it uses [ePaper.js](https://github.com/samsonmking/epaper.js) as the framework for printing on the ePaper display, [Create React App](https://github.com/facebook/create-react-app) and express.js.\n\n![image](https://user-images.githubusercontent.com/7040645/142741601-7eb96d19-4da3-403b-8cfc-91371c4ecf04.png)\n\n# Getting started\n\n## Get the hardware\n\n* Waveshare 7.5\" ePaper display - [Amazon](https://amzn.to/30Kmm1n)\n* Raspberry Pi Zero WH - [Amazon](https://amzn.to/2Z59Xom)\n* Raspberry Pi Power Supply - [Amazon](https://amzn.to/30GeVJi)\n* 16GB MicroSD card - [Amazon](https://amzn.to/3kXAR9o)\n* 7.5\" enclosure (optional) - [Amazon](https://amzn.to/3HFlvjJ) - in case you can't 3D print a proper enclosure\n\nIf you have access to a 3D printer, I used this [awesome design](https://www.thingiverse.com/thing:4152661) as an enclosure.\n\n## Create a GCP app\n\nIn order to be able to login to your Google calendar, you will need to set up an app on [Google Cloud Console](https://console.cloud.google.com/).\n\nSteps:\n\n1. Set up a [new project](https://console.cloud.google.com/projectcreate) under Google Cloud Console.\n2. Enable the [Google Calendar API](https://console.cloud.google.com/apis/api/calendar-json.googleapis.com/overview) for your newly created project.\n3. Create new credentials for your project:\n   1. Goto the [credentials page](https://console.cloud.google.com/apis/credentials) and click on the \"Create credentials\" button\n   2. Choose the OAuth Client ID option\n   3. Choose Web application for application type\n   4. Add `http://localhost:3000` under \"Authorized JavaScript origins\" and `http://localhost:3000/api/auth/login/callback` under \"Authorized redirect URIs\", click save\n   5. Copy the created Client ID and Client Secret, you will need them later\n4. Update the OAuth Consent screen:\n   1. Go to the [OAuth consent screen](https://console.cloud.google.com/apis/credentials/consent) setup page\n   2. Give your app a name and provide your email (not that important since you will be the only one using this app), click Save and Continue\n   3. Click the \"Add or remove scopes\" button and select the `calendar.events.readonly` scope, click Save and Continue\n   4. Save your app\n\n## Install Raspberry Pi Operating System (with desktop)\n\n- use Raspberry Pi Imager\n- finish installation on the desktop and connect to wifi\n- optionally enable SSH\n\n## Setup Agenda Paper on your Raspberry Pi\n\n### Install NVM\n\n```\nwget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash\n```\n\nInstall node lts\nSee here: https://dev.to/patrickweaver/installing-node-12-and-higher-on-a-raspberry-pi-zero-with-nvm-4dnj\n```\nNVM_NODEJS_ORG_MIRROR=https://unofficial-builds.nodejs.org/download/release nvm install 14\n```\n\ncheck node version\n```\nnode -v\nv14.18.1\n```\n\n### Enable SPI\n\n```\nsudo raspi-config\n# Choose Interfacing Options -> SPI -> Yes  to enable SPI interface\nsudo reboot\n```\n\n### Install dependencies\n\n```\nsudo apt-get update\n\n# Install wiringpi\nsudo apt-get install -y wiringpi\n\n# For Pi 4, you need to update wiringpi (skip otherwise)：\ncd /tmp\nwget https://project-downloads.drogon.net/wiringpi-latest.deb\nsudo dpkg -i wiringpi-latest.deb\n#You will get 2.52 information if you've installed it correctly\ngpio -v\n\n# Remaining dependencies\nsudo apt-get install -y build-essential chromium-browser\n```\n\n### Install Agenda Paper globally\n\n```\nnpm i -g agenda-paper\n```\n\n### Create environment config file\n\nCreate a config directory called `.agenda-paper` under your home folder\n\n```\nmkdir ~/.agenda-home\n```\n\nCreate an `.env` file under the config directory and add the GCP app credentials\n\n```\necho \"GOOGLE_CLIENT_ID=<enter your app's client ID>\" >> ~/.agenda-paper/.env\necho \"GOOGLE_CLIENT_SECRET=<enter your app's client secret>\" >> ~/.agenda-paper/.env\n\n# this is optional, in case you want to use another display supported by ePaper.js\necho \"EPAPER_DEVICE_TYPE=<device_type_id>\" >> ~/.agenda-paper/.env\n```\n\n## Run Agenda-Paper\n\nOn your raspberry pi terminal (or SSH), run agenda-paper\n\n```\nagenda-paper\n```\n\nYou should be seeing a prompt on your ePaper display to set up your account. Follow the instructions to set everything up.\nEventually, you should be seeing your agenda on the display.\n\n## Running Agenda-Paper on system startup\n\nFirst, let's install `pm2` globally.\n```\nnpm i -g pm2\n```\n\nNow, let's run setup pm2 on system startup:\n```\npm2 startup\n```\n\nRun the command shown in the output - should be something along these lines:\n```\nsudo env PATH=$PATH:/home/pi/.nvm/versions/node/<version>/bin /home/pi/.nvm/versions/node/<version>/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi\n```\n\nNow, let's run `agenda-paper` using `pm2`\n```\npm2 start agenda-paper\n```\n\nFinally, let's persist `agenda-paper` on `pm2` app list\n```\npm2 save\n```\n\nIf everything goes well, agenda-paper should be started automatically on system startup\n\nTo check the app logs under `pm2`, use the following command:\n```\npm2 logs\n```\n","readmeFilename":"README.md"}