{"_id":"@aolney/self-explanation-extension","_rev":"4-692a3ecaf49d18e18fa79284d32fa2f7","name":"@aolney/self-explanation-extension","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@aolney/self-explanation-extension","version":"0.1.0","description":"An JupyterLab extension with Fable tooling that creates a self-explanation input for each code cell.","keywords":["jupyter","jupyterlab","jupyterlab-extension","self-explanation"],"homepage":"https://github.com/aolney/self-explanation-extension","bugs":{"url":"https://github.com/aolney/self-explanation-extension/issues"},"license":"Apache-2.0","author":{"name":"Andrew M. Olney"},"main":"lib/index.js","style":"style/index.css","repository":{"type":"git","url":"git+https://github.com/aolney/self-explanation-extension.git"},"scripts":{"build":"fable-splitter src -o lib","watch":"fable-splitter src -o lib -w"},"dependencies":{"@babel/runtime-corejs2":"^7.0.0","@jupyterlab/application":"^1.0.0","@jupyterlab/apputils":"^1.2.1","@jupyterlab/notebook":"^1.2.2","@phosphor/coreutils":"^1.3.1","@phosphor/widgets":"^1.9.3","blockly":"^3.20191014.4"},"devDependencies":{"@babel/core":"^7.3.4","@babel/plugin-transform-runtime":"^7.0.0","@babel/preset-env":"^7.0.0","babel-loader":"^8.0.6","copy-webpack-plugin":"^6.0.3","core-js":"^3.0.0","css-loader":"^2.1.1","fable-compiler":"^2.1.12","fable-loader":"^2.1.9","fable-splitter":"^2.2.1","file-loader":"^4.0.0","gh-pages":"^2.0.1","html-webpack-plugin":"^3.2.0","isomorphic-fetch":"^2.2.1","jsdom":"^15.1.0","jsdom-global":"^3.0.2","loglevel":"^1.5.0","mini-css-extract-plugin":"^0.5.0","raf-stub":"^2.0.2","remotedev":"^0.2.9","resolve-url-loader":"^3.1.0","rimraf":"^2.6.1","style-loader":"^0.18.2","typescript":"~3.5.2","webpack":"^4.29.3","webpack-cli":"^3.2.3","webpack-dev-server":"^3.11.0"},"sideEffects":["style/*.css"],"jupyterlab":{"extension":true},"gitHead":"f2d22640fc89b8f23b20b04ad08d135ce52631d8","_id":"@aolney/self-explanation-extension@0.1.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-/LBnsqcGdCNgkdT/CsrMYFtRObeeiT5T5wueicGjr6dxuBoeVAtZFv0VH7O0jiqsmyPht7Dqis738Q61INXctQ==","shasum":"1a96f576698deadcb7b73e79739c64c56bdac272","tarball":"https://registry.npmjs.org/@aolney/self-explanation-extension/-/self-explanation-extension-0.1.0.tgz","fileCount":37,"unpackedSize":595371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjdXmCRA9TVsSAnZWagAAnm8P/RjtDNEAPJKmKXPAbgYd\np+ACQ04auNEGL93c3XtJqeOwYXvG/4qyEwMj94ZT3arHxYql30i93ZJDHpky\n79RVpgWeWpLhi8B24W1Nr3Ocv8/gkn6KjKiQIH21TLMLdvp3SNH+IPM9DTDW\njVsmicoxdjcs9Gn3StMqXrfoIfss1KDDenjWiEtfHCmkkVJL21m+qR1NPrfg\nKzlZy5+sFFCjYJ3TwDt6/L9l8yUharSj6YxnyAGObOH4+Xh0shGDlLaljzgT\ntpip/akGGckqKSJPCciVdg5oefADoj59LN+yj1LLvmxMn5e/7ENsovuOChNG\nbboTxhotgDC+8t9e7ZrsaqOQi5HqD1R3cQQdrjUB1MpAevYN+Xd92PQbPgO2\nUvZd3g5CS1x4EWfaFqtwFyxuGIWD9IFJT0lq+AOGAQ/W/05Ms9/otOFd0ycw\n1KT2F8seoXQ+KkLAOpt3uvJ38OWJGmVscK1GpgU1JCnKOn0DW8k1/dmXnwvl\nazT4AUIsWpVoltzCeeLe5mn5wT7X487SG4Q1Ilti10BIKiL9U+IF6R5elDoj\nlKjQT3DWLKtSSYiGNgs8mAh8/AxSkWoJSd+UpijY1emnvppxH04NQrv13a4u\nt3BLd4zGNiEjHDAxune+LV31BJs1vgnSoq05BUtNHKYDDbmJJvbJW9Bw71rO\nkaur\r\n=nxoe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICJm9JanDUJII2ZEWSnKsxgpaVdI/QSWL33EX88g3V1XAiEArbqdLtpyAMdX7UCntVyO6dRw5UBCFLVx8oe1NMxwrgo="}]},"maintainers":[{"name":"aolney","email":"aolney@memphis.edu"}],"_npmUser":{"name":"aolney","email":"aolney@memphis.edu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/self-explanation-extension_0.1.0_1603130853965_0.3421958481860219"},"_hasShrinkwrap":false},"0.1.1":{"name":"@aolney/self-explanation-extension","version":"0.1.1","description":"An JupyterLab extension with Fable tooling that creates a self-explanation input for each code cell.","keywords":["jupyter","jupyterlab","jupyterlab-extension","self-explanation"],"homepage":"https://github.com/aolney/self-explanation-extension","bugs":{"url":"https://github.com/aolney/self-explanation-extension/issues"},"license":"Apache-2.0","author":{"name":"Andrew M. Olney"},"main":"lib/index.js","style":"style/index.css","repository":{"type":"git","url":"git+https://github.com/aolney/self-explanation-extension.git"},"scripts":{"build":"fable-splitter src -o lib","watch":"fable-splitter src -o lib -w"},"dependencies":{"@babel/runtime-corejs2":"^7.0.0","@jupyterlab/application":"^1.0.0","@jupyterlab/apputils":"^1.2.1","@jupyterlab/notebook":"^1.2.2","@phosphor/coreutils":"^1.3.1","@phosphor/widgets":"^1.9.3"},"devDependencies":{"@babel/core":"^7.3.4","@babel/plugin-transform-runtime":"^7.0.0","@babel/preset-env":"^7.0.0","babel-loader":"^8.0.6","copy-webpack-plugin":"^6.0.3","core-js":"^3.0.0","css-loader":"^2.1.1","fable-compiler":"^2.1.12","fable-loader":"^2.1.9","fable-splitter":"^2.2.1","file-loader":"^4.0.0","gh-pages":"^2.0.1","html-webpack-plugin":"^3.2.0","isomorphic-fetch":"^2.2.1","jsdom":"^15.1.0","jsdom-global":"^3.0.2","loglevel":"^1.5.0","mini-css-extract-plugin":"^0.5.0","raf-stub":"^2.0.2","remotedev":"^0.2.9","resolve-url-loader":"^3.1.0","rimraf":"^2.6.1","style-loader":"^0.18.2","typescript":"~3.5.2","webpack":"^4.29.3","webpack-cli":"^3.2.3","webpack-dev-server":"^3.11.0"},"sideEffects":["style/*.css"],"jupyterlab":{"extension":true},"gitHead":"b9ff4923486f4d52cb806c990d2d2d7058b845a7","_id":"@aolney/self-explanation-extension@0.1.1","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-CI8TD7iQ4pOpIU5gWVT6G1ozsE8J6K08CAMgz15oO2qRolLr/hrPxFccSFjMFGYA8lcus+LgsWHbyCbzxtBOAA==","shasum":"c32a33886e8836cc30dfe4572001bc077e779ef4","tarball":"https://registry.npmjs.org/@aolney/self-explanation-extension/-/self-explanation-extension-0.1.1.tgz","fileCount":37,"unpackedSize":595863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfk1QQCRA9TVsSAnZWagAAgO4P/A5LM89mnVentPicNsD6\nt1dBjTeN2S/n9dioifgIJoWhZuHaLudFdqf7FKKNqTW0lAt4XHZPnnUoyfLf\nDa6MzpLaGLgLapegymLFiHj6WHIfid9+8fTObodGbHutaq2XTOg50cTDhXG7\nQXCWlN6Vz0QJFxPno017uO2mWweJ8VJ+eltOfDsZ4sEcgpyr4U1DhwPTifPW\nG9AwejLvZ4ob36CNcybyPulKxePuo48PY6yWGlcTnyo0Jv+H9BTGb61d0EyX\njN/CxVQTXz2tulUVR0SjK22HWlk/Uo3Lfx+tbDpcDuSBbCIeShSQwkVt+Ptn\nirwOhERXPLThRMzeL2k4qTe2zEnBIFtzE4qSkKf8iJiCih1lzV4idbtoV3F0\nJEE2Io701seUAp2hUvNkNm6MQA/xfEJak7KSzR/YNlnM+YcdTLCTgmiesa5c\nS2IAqNlq+86nBuAf1e/T3QotYrXIWoVR4GCLjNxl5bTM1ZRXbpvPP2rXXqCF\n9oBb0WPH7crV5qLKFIDW4Ub5npx9flq1oJgSxXlyIb+LABPD/NjkU8ij3MZj\niaaQao67N4jwXon3pZRsUD0IsHqQKG6x4GGG1avdGtJl9iFkA5NTd9Jwuwhz\nFzVCbwUB1FzUD26l1f2cHMf4jYzoJQwtTBpaIL3zNJantYVNZa5unKirjWzk\naOGI\r\n=ExTT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZvzATf0GWlCyecJgI7nA/5JyG6LW9jMWeEZhHS9lhYAIgGfd1xJ6hl0SYkkbEvTYyChcTF6BdNNCb4MvFX0w85sY="}]},"maintainers":[{"name":"aolney","email":"aolney@memphis.edu"}],"_npmUser":{"name":"aolney","email":"aolney@memphis.edu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/self-explanation-extension_0.1.1_1603490831726_0.30656588958451536"},"_hasShrinkwrap":false},"0.1.2":{"name":"@aolney/self-explanation-extension","version":"0.1.2","description":"An JupyterLab extension with Fable tooling that creates a self-explanation input for each code cell.","keywords":["jupyter","jupyterlab","jupyterlab-extension","self-explanation"],"homepage":"https://github.com/aolney/self-explanation-extension","bugs":{"url":"https://github.com/aolney/self-explanation-extension/issues"},"license":"Apache-2.0","author":{"name":"Andrew M. Olney"},"main":"lib/index.js","style":"style/index.css","repository":{"type":"git","url":"git+https://github.com/aolney/self-explanation-extension.git"},"scripts":{"build":"fable-splitter src -o lib","watch":"fable-splitter src -o lib -w"},"dependencies":{"@babel/runtime-corejs2":"^7.0.0","@jupyterlab/application":"^1.0.0","@jupyterlab/apputils":"^1.2.1","@jupyterlab/notebook":"^1.2.2","@phosphor/coreutils":"^1.3.1","@phosphor/widgets":"^1.9.3"},"devDependencies":{"@babel/core":"^7.3.4","@babel/plugin-transform-runtime":"^7.0.0","@babel/preset-env":"^7.0.0","babel-loader":"^8.0.6","copy-webpack-plugin":"^6.0.3","core-js":"^3.0.0","css-loader":"^2.1.1","fable-compiler":"^2.1.12","fable-loader":"^2.1.9","fable-splitter":"^2.2.1","file-loader":"^4.0.0","gh-pages":"^2.0.1","html-webpack-plugin":"^3.2.0","isomorphic-fetch":"^2.2.1","jsdom":"^15.1.0","jsdom-global":"^3.0.2","loglevel":"^1.5.0","mini-css-extract-plugin":"^0.5.0","raf-stub":"^2.0.2","remotedev":"^0.2.9","resolve-url-loader":"^3.1.0","rimraf":"^2.6.1","style-loader":"^0.18.2","typescript":"~3.5.2","webpack":"^4.29.3","webpack-cli":"^3.2.3","webpack-dev-server":"^3.11.0"},"sideEffects":["style/*.css"],"jupyterlab":{"extension":true},"gitHead":"07d52f1a7266476f7e5a9936ef042ada23daa275","_id":"@aolney/self-explanation-extension@0.1.2","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-SaK8ldg9OIUhglCYsT5OHnR5kf4/5Paf/pmJAKuWYxmXgSsr1S5Z0MRkNnigpLbMvflLk5LA/OKkJhUfZihHQQ==","shasum":"0fb70b0250a2a736a704854300f6416107523caf","tarball":"https://registry.npmjs.org/@aolney/self-explanation-extension/-/self-explanation-extension-0.1.2.tgz","fileCount":37,"unpackedSize":596413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfl4YZCRA9TVsSAnZWagAAeMsP/RWA5SclzHVDmKhG3IWz\nrfRZxsBylfQ60YWNWv+f2y45pACrX6SvkKJnJYD0NxpMsHU6HxQqcx+/s15q\noeg2F7teeE21+gXMtcP4uLq5rMhJCjhxIOUpV0FQC6NGokh2YK8QVxdg+xil\ncGo9Y2isdXkfDt64NWwUSXnK8+2ZKhAcjXjnzZNlXYrhx7elt6TQs8vl/SSv\nBhmeMcFW/RhI3eCF2p0zfaH8v+NBE8pKWUG84Q6jEHJVN8FvzVol71iBc8vr\nbbqlqCUDq9m9dwFejHMBNVsx/gE6wqM6Xd3uaKktOSwzaCqFh0ouCmOybQlg\nZPf0O1FnzgRaLiCwAgR8hGdk4seNj8Qg1uvecT/APhryi6gvGsk/t1ra8DMc\nvBxm+P/ZLQc3IOc4jU9Rtd1nptTfKz4890qY7GIfm9Oy3lN+C12BDa51wwUl\n3BEtTO324XSwK3pInx0/Pir8GS77LXYpAKVOrt5PeDbW3cJiVuoG60O/aLE8\nPiAEopCacjo3zluygDy8C150D4xDFlwvcNrG8rVitZg1UkFREW09Y7RlCpx2\nfT1vI9rI+3vsXNXeC/cwokwYqsC7AvAQXHOOKFaRnN0EKaSA3vZLhT/jz/q0\nAAj/TaH0ZwEfADgOGz91Fsetuf/PpYtP8+poIxz49j0odyWpd3sUwYywZ3ez\nKllJ\r\n=M5gu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDNIuAD81fxi85UEeo2DoIgFoFLhrEwRZzsmsoFJ0rgSAiEApYwibJuVTwliKmxyhXKLxwugFpKYSE8d4kOK5KVJwPk="}]},"maintainers":[{"name":"aolney","email":"aolney@memphis.edu"}],"_npmUser":{"name":"aolney","email":"aolney@memphis.edu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/self-explanation-extension_0.1.2_1603765784977_0.4667006283664261"},"_hasShrinkwrap":false},"0.1.3":{"name":"@aolney/self-explanation-extension","version":"0.1.3","description":"An JupyterLab extension with Fable tooling that creates a self-explanation input for each code cell.","keywords":["jupyter","jupyterlab","jupyterlab-extension","self-explanation"],"homepage":"https://github.com/aolney/self-explanation-extension","bugs":{"url":"https://github.com/aolney/self-explanation-extension/issues"},"license":"Apache-2.0","author":{"name":"Andrew M. Olney"},"main":"lib/index.js","style":"style/index.css","repository":{"type":"git","url":"git+https://github.com/aolney/self-explanation-extension.git"},"scripts":{"build":"fable-splitter src -o lib","watch":"fable-splitter src -o lib -w"},"dependencies":{"@babel/runtime-corejs2":"^7.0.0","@jupyterlab/application":"^1.0.0","@jupyterlab/apputils":"^1.2.1","@jupyterlab/notebook":"^1.2.2","@phosphor/coreutils":"^1.3.1","@phosphor/widgets":"^1.9.3"},"devDependencies":{"@babel/core":"^7.3.4","@babel/plugin-transform-runtime":"^7.0.0","@babel/preset-env":"^7.0.0","babel-loader":"^8.0.6","copy-webpack-plugin":"^6.0.3","core-js":"^3.0.0","css-loader":"^2.1.1","fable-compiler":"^2.1.12","fable-loader":"^2.1.9","fable-splitter":"^2.2.1","file-loader":"^4.0.0","gh-pages":"^2.0.1","html-webpack-plugin":"^3.2.0","isomorphic-fetch":"^2.2.1","jsdom":"^15.1.0","jsdom-global":"^3.0.2","loglevel":"^1.5.0","mini-css-extract-plugin":"^0.5.0","raf-stub":"^2.0.2","remotedev":"^0.2.9","resolve-url-loader":"^3.1.0","rimraf":"^2.6.1","style-loader":"^0.18.2","typescript":"~3.5.2","webpack":"^4.29.3","webpack-cli":"^3.2.3","webpack-dev-server":"^3.11.0"},"sideEffects":["style/*.css"],"jupyterlab":{"extension":true},"gitHead":"a89fff22a4183d43e883d6cab045a6b49edc5237","_id":"@aolney/self-explanation-extension@0.1.3","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ggOQimlM1ME5BhxZw5w4Jm6VgP3aqJj8yKw6Hr4HuwCeBszzJdv2bAlP+5NYDCi95XwwZISvvJXrCQXxw6lHlw==","shasum":"8089dd9ad0b2808b2a989d93d59c789913b5ce7f","tarball":"https://registry.npmjs.org/@aolney/self-explanation-extension/-/self-explanation-extension-0.1.3.tgz","fileCount":37,"unpackedSize":596231,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnLyZCRA9TVsSAnZWagAA43QP/R1cj2egDhTcVgcj4G3p\nM4yZvvSNkI8qwEHsI52ahq6E/yDCx2Y+X/6HilK8wEqA8Ka6ea1htz/nuoh+\niAzJJcPBFKcI198MAC5fuoElQhJiwrbDWFgkklsSlANdhRxHUCyjUw/Qnl+O\nYsSwAEbd4XAWgyEZxu2DScdgUiGXGYGvNkghPyGD6EBg/xT/TeoixLXAmciu\nv1uFFTaWSmx3OEIyniw7YF/tOWVvEPoCO3Z44HJRsJ4uDs5KCmJfL+2m1KZc\nSdHaOboR7z8dNzECNPEvf5UuguecCp9uup5uONAJp9q19IJNmgQgT2FTNFfj\nQATDYesUi3r2/joRLzfkKi08vd6vhleFXbLT3eUPubC5Kjd++FgbczAXGmQu\nlsTc7o4GmGz20qTrMYKZ/6neKafy5VN3GqzrAImhgzulA1SICMlnJd7TiUVk\nrg4PPXMv86mT5g2yhopNV2KsTJkzR476bT9Vpf64BEXCPXVe/3HQMLPcv4XG\nXu7ax1SLtDYy45uHHtPM8Bcltf7RJNZA8XtQvri7krrea0OJPyKSuSeVWG/a\ny5I0V1GrgtYBHoiI9dMdcfkA6TYk2lDlk4zKzNIoZcqgOCE2ogGBeYKamBVQ\n1H/Kb0dFco6otSTAW2CFs/XA0QGy4RlzsAQO4KDPAc4mrLq6HQHgaJmWEqZ2\nQ7et\r\n=UmFs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHNZBRUNM2qxYZY2psyCmSoIXcKQhMLQsBgzy1eHby0VAiAMC2ndQs7MfuskPArmPBNqZrg9h/iRX4si2nG+lM2S9w=="}]},"maintainers":[{"name":"aolney","email":"aolney@memphis.edu"}],"_npmUser":{"name":"aolney","email":"aolney@memphis.edu"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/self-explanation-extension_0.1.3_1604107417299_0.6308468173436264"},"_hasShrinkwrap":false}},"time":{"created":"2020-10-19T18:07:33.928Z","0.1.0":"2020-10-19T18:07:34.214Z","modified":"2022-04-04T14:29:04.398Z","0.1.1":"2020-10-23T22:07:11.863Z","0.1.2":"2020-10-27T02:29:45.154Z","0.1.3":"2020-10-31T01:23:37.476Z"},"maintainers":[{"name":"aolney","email":"aolney@memphis.edu"}],"description":"An JupyterLab extension with Fable tooling that creates a self-explanation input for each code cell.","homepage":"https://github.com/aolney/self-explanation-extension","keywords":["jupyter","jupyterlab","jupyterlab-extension","self-explanation"],"repository":{"type":"git","url":"git+https://github.com/aolney/self-explanation-extension.git"},"author":{"name":"Andrew M. Olney"},"bugs":{"url":"https://github.com/aolney/self-explanation-extension/issues"},"license":"Apache-2.0","readme":"# self-explanation-extension\n\nA [JupyterLab](https://jupyterlab.readthedocs.io/en/stable/) extension with [Fable](https://fable.io/) tooling that creates a self-explanation input for each code cell.\n\nThe following query string parameters enable functionality:\n\n- `se=1` enables the extension\n- `log=xxx` specifies a url for a logging endpoint (e.g. https://yourdomain.com/log)\n- `id=xxx` adds an identifier for logging\n\nThe log data format is `{username: string, json: string}`.\n\n**NOTE: This plugin requires jupyterlab <= 1.2.6, so if you have a higher version (e.g. 2.X) you will need to execute `conda install jupyterlab=1.2.6` or similar for `pip`**\n\n\n## Installation\n\n```bash\njupyter labextension install @aolney/self-explanation-extension\n```\n\n## Updating to latest version\n\n```bash\njupyter labextension update @aolney/self-explanation-extension\n```\n\n## Development\n\nThis is based on my personal preferences. For more options, [see the extension development guide](https://jupyterlab.readthedocs.io/en/stable/developer/extension_dev.html#developer-extensions).\n\n### Prerequisites\n\n* [JupyterLab](https://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html)\n* [Fable](https://fable.io/)\n* An F# editor like Visual Studio Code with [Ionide](http://ionide.io/) \n* Chrome\n\n### Initial install and after library adds\n\n```bash\nnpm install\nmono .paket/paket.exe install\nnpm run build\n```\n\n### Terminal A in VSCode\n\n```bash\njupyter labextension install . --no-build\nnpm run watch\n```\n\nThis will watch your F# code and trigger builds of `index.js`.\n\nIf you prefer not to trigger builds using a watch, you can `npm run build` every time you want a new build.\n\n### Terminal B in VSCode\n\n```bash\njupyter lab --watch\n```\n\nThis will watch your extension and trigger builds of it.\n\nEven with this watch, you still need to refresh your browser during development.\n\n## Project structure\n\n### npm/yarn\n\nJS dependencies are declared in `package.json`, while `package-lock.json` is a lock file automatically generated.\n\n### paket\n\n[Paket](https://fsprojects.github.io/Paket/) \n\n> Paket is a dependency manager for .NET and mono projects, which is designed to work well with NuGet packages and also enables referencing files directly from Git repositories or any HTTP resource. It enables precise and predictable control over what packages the projects within your application reference.\n\n.NET dependencies are declared in `paket.dependencies`. The `src/paket.references` lists the libraries actually used in the project. Since you can have several F# projects, we could have different custom `.paket` files for each project.\n\nLast but not least, in the `.fsproj` file you can find a new node: `\t<Import Project=\"..\\.paket\\Paket.Restore.targets\" />` which just tells the compiler to look for the referenced libraries information from the `.paket/Paket.Restore.targets` file.\n\n### Fable-splitter\n\n[Fable-splitter]() is a standalone tool which outputs separated files instead of a single bundle. Here all the js files are put into the `lib`. And the main entry point is our `index.js` file.\n\n### Imports\n\nBecause Jupyter uses Typescript, we can use [ts2fable](https://github.com/fable-compiler/ts2fable) to generate strongly typed imports of Jupyter's JS packages. Unfortunately these are a bit huge and the conversion is messy. \nI might release them as a nuget package once they are cleaned up.\n`ts2fable-raw-output` has the initial conversion which is cleaned up enough to compile i nthe `src` directory. \n\n\n\n","readmeFilename":"README.md"}