{"_id":"@laboratoria/sdk-js","_rev":"132-d3e9fc82deff2050ac4aa484b3c02d47","name":"@laboratoria/sdk-js","dist-tags":{"next":"8.0.0-beta.4","latest":"8.1.0"},"versions":{"0.0.0":{"name":"@laboratoria/sdk-js","version":"0.0.0","license":"MIT","_id":"@laboratoria/sdk-js@0.0.0","maintainers":[{"name":"lupomontero","email":"lupomontero@gmail.com"},{"name":"raulingg","email":"relaxedchild@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"maiarojas","email":"maia.rt.46@gmail.com"},{"name":"paula113","email":"paulapierina96@gmail.com"},{"name":"anasteph","email":"steph@laboratoria.la"},{"name":"arku","email":"arunmohandm@gmail.com"},{"name":"mery-cardenas","email":"mery.cardenas.perez@gmail.com"},{"name":"danig.dev","email":"daniela.gonzales@laboratoria.la"}],"dist":{"shasum":"03cc962c0e51d6ba557262fb82b6b84f779fc3ce","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-0.0.0.tgz","fileCount":23,"integrity":"sha512-NwBEWluzgyiRxpj+227bQdg7Y9rbVKGs07/bXyJOOxsGjRQeoKGkSfvnhZPJHMPvaD33IXzs+xeZfGHR71jhfQ==","signatures":[{"sig":"MEUCIQCpMPj8kdHUHhuy9RIB25qoEAVk+N8H79IusNsdpGvTMwIgJyGSSWNnuQixeZYFmsO2v8604ijwcbSzeu9JltcK21I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41556,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlWvACRA9TVsSAnZWagAAw8kP/1Mvq816o/WJoZSPCN3i\nSQWE+ZdpHCPnlFTqxRbAzXOEfjaI5AlHpdj789fwZrMvzhfdPHMwqUihSJBd\nGozGaus0cZ4/QOEsn2Hff22NOzYXzg+YbakL0EumgBdJrr7Stm8taj/7e0SR\n1NUJxhOCdog0oieS9VC1MjTHnGYIUdYN9HvkKw6O3vX3FQeCuXnRWjswbzkj\nlSNjv77tERhZxe+YYQOn+FC1lmQ2+BA3CNzovQpFjIcxsqgoFQppqr6KFYO8\nIJUViirWOk9kzaNFQaFluk4+3deQdaFkQToKFwcsZaK9claPScbc4fZHyHD/\nyaC+/TjbsOuqiEuIWhrjprjZ47L9KOsozuOEYLN9109JGKKpSJ5NcettlVHk\nltIlfRZ1SC9SMhyqKcvanB861XWdqaG5XnRrIyoByWDYD0VhmY1eE6S3qMcl\nNJUSmx7Ust0oKVwMywBDwPVztH+j9eF1WPHwMTt1kZPa73zaSJsi9juN+WM2\nP17a1sm7R8LGtipGT6vu2/6g+kfcyojx7pmlyR+0jddQF52TIOyGBNDAKYpV\nkvQW88Ltn85LW2BElnPm36VOScTLv3langjqo08VGiiGo0G56FXBX54MmTOU\nQbAIwbLAOOOEkm/nB4CbxarbtlPBuROt4+soPfS2uYuLPAeAc0h8qBV+89gU\nEQTK\r\n=Hyd6\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom"},"gitHead":"0dfc5e5a33500108d3d0cca8a7c0816b566b1b88","scripts":{"test":"jest --verbose --coverage"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.1.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"14.18.0","dependencies":{"firebase":"^9.4.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","webpack":"^5.64.1","babel-jest":"^27.3.1","@babel/core":"^7.16.0","webpack-cli":"^4.9.1","@babel/plugin-transform-modules-commonjs":"^7.16.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_0.0.0_1637182399880_0.5896614051748668","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"@laboratoria/sdk-js","version":"0.1.0","license":"MIT","_id":"@laboratoria/sdk-js@0.1.0","maintainers":[{"name":"lupomontero","email":"lupomontero@gmail.com"},{"name":"anasteph","email":"steph@laboratoria.la"},{"name":"danig.dev","email":"daniela.gonzales@laboratoria.la"}],"dist":{"shasum":"8fa02bcc5577f422d14d1c7c84184791578ca4b0","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-0.1.0.tgz","fileCount":45,"integrity":"sha512-Oi/Um+S6A8wdiX0r2qitPYGg6xmO6jmh0ouG88XHzUZ7SbY2EeAcBI83GFaY4NS8SiruT1YeR4V2yx+myGgg0w==","signatures":[{"sig":"MEYCIQDaDYWQ39Zpt9890pxxZyaf3uX1qOye43dlGKp3gB7B0QIhAJMD1B5w1526UwTeckcQsdBB2YlNFIuaOfjgji3Y9Yab","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":283496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqEpgCRA9TVsSAnZWagAAk3kQAJUujQjzuw4GNTg4lAxv\nOJMqFw5tXRHttLvQUt8DQzPJ16hRSwMw3CwuU0M+hH873KDSPwK1HqjWksAR\nXf4BJVQjmvod134GYZV/eCdTLwAfdlUpiHTYR1qaT3ldn6FhF42FFDGSHBcj\ngXrPDIsQHgb93RJRDtvCxHJkv5a3+jj9o/DSjsMVV/oTlI1/nvq6jBLIPaS1\nAtJxySJPwasqHW7FxiNr2ZNWhAozfQYsPg8wfemg9i/B895kFzAYiUsRHtwj\nkaNDH8LnqpADeJBtH5HQXJuHlokE8e7oJgwRXInFROwIRcjurNwmG8WWTpWn\nqnmPQqLSCPo4kCwJDIYZomEbC8an/+MWR+MkL55CnFF6e1Wf3/mV4ntjywBL\nkAc7CUJwv2dYcSOc38qNpwSiawfmcI0qi/VDjCDwL2Z3F76f0AjaUJ3mKp2+\nWXu5wKQcZjAlennMr1mryhyvzKpgyUWsn8PLvo5UXE6UdKxNkm0NJz20zYVV\nej83KtRoVhUdhRv+SqMzQfrvCqJmyPMgbmSuMBPP3JqHSsmdm7QYJ9l7xVGe\n4FMztKzy4gIiQsQCaOPSELPJF/YAR1Z2FY1/823Jhuef1pYHa4pmGxGadITa\nIfbYQXWTooO69psuxc6FTHKmLhXJrx18DIlk7emqxNWB+RUz6+slwzt/k7Ud\nYf12\r\n=j1dk\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom"},"gitHead":"48414af2c5a6e207ede3477334a783f7dd075b93","scripts":{"test":"jest --verbose --coverage"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.1.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"14.18.0","dependencies":{"firebase":"^9.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.3","webpack":"^5.64.4","babel-jest":"^27.4.2","@babel/core":"^7.16.0","webpack-cli":"^4.9.1","@babel/plugin-transform-modules-commonjs":"^7.16.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_0.1.0_1638419040287_0.35979544054606616","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"@laboratoria/sdk-js","version":"0.1.1","license":"MIT","_id":"@laboratoria/sdk-js@0.1.1","maintainers":[{"name":"lupomontero","email":"lupomontero@gmail.com"},{"name":"anasteph","email":"steph@laboratoria.la"},{"name":"danig.dev","email":"daniela.gonzales@laboratoria.la"}],"dist":{"shasum":"bb74c16a4fdb8b01341fb59c8ae33b2811fd8b98","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-0.1.1.tgz","fileCount":18,"integrity":"sha512-fTCHnfX4lPCv794OkVjVA9RNYOvD1VnY6AWhXKD995JqsqNuaYTxVFWJKb+cC5ZMWAh73xLjbrfd+LaYIaoLUw==","signatures":[{"sig":"MEQCIBskPCFXKEYcyF14z2mbQqLC3MFz5eS6r96rUABC1NzZAiBPfcmqQ6G8YCsTLehr4Xd7DGfQ9UTtL8QYCE7ZKilTzg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42945,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqEsyCRA9TVsSAnZWagAAgG4P/igkDzI/hN3Y6VVJU16m\nzNOEHrt7JXl2CJxWfs/4PgEbakoTBXy6EtQIcjnB9Uxspf9dyb1tp9AD8qvH\nJHsCpzFtf2AOhhlFLcovPHqMnT3YYOU1mbMrZBXwKGa9JVuzHAFh0FaJ0q4U\nDfKJxQer214pXgQDu4NrLd17OBXrCrocppEiW1hbSsGm1TTFLdLhUYOQC5Au\nMnx0uq+oQB+0k+jz+qAphG+hyx8eRfnf9ZpOUmZhCt76pilVj9t9kCDP7ZOb\nYrLIDnh/w3Dq81mU5T7wx97mCBemtPtRA1deiYz2hCD3EJCYq0sdjRGmPXW1\nkcAMzbxsLUTuNTP0SZBuYoFR89MJrHZKR/nzOUgB1ch6rB/GNgBm/HS+zl6y\nXGUpz+FGRlrDNRGRPj5CA+kR3QdLGNv9UvC3MRhwUUFzfWyFV+dvM70Nj1Wd\n7bVn2hFqeQrI4JXo92vSMptgoXau/43xYvsVyetkAzKoOt0x4MXUaCBDXHiZ\n8e1aKbuRKnjcqr77r5vmYy2wnLYhxnCkT0bXkS9/3ChIAt1g+K8kzafxOl4E\nvSnHjqa0FcHVt3ZpyvdqosMUW772IiUPoXiC6Bo7tOQIr7NwYY2ZydMCPC17\nXURDRdhIeOkkG2Vle6L1rr+0T7DxSigiQvDZXAGcTi9MQ/Brpi069OWoUhIa\no2BD\r\n=IFlj\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom"},"gitHead":"a2aa71bd934d2ca023e5eccf95ab505082758aa7","scripts":{"test":"jest --verbose --coverage"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.1.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"14.18.0","dependencies":{"firebase":"^9.5.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.3","webpack":"^5.64.4","babel-jest":"^27.4.2","@babel/core":"^7.16.0","webpack-cli":"^4.9.1","@babel/plugin-transform-modules-commonjs":"^7.16.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_0.1.1_1638419250500_0.5996705207727651","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@laboratoria/sdk-js","version":"0.2.0","license":"MIT","_id":"@laboratoria/sdk-js@0.2.0","maintainers":[{"name":"lupomontero","email":"lupomontero@gmail.com"},{"name":"anasteph","email":"steph@laboratoria.la"},{"name":"danig.dev","email":"daniela.gonzales@laboratoria.la"}],"dist":{"shasum":"89acefe944f90b82847bac9e688dceca31863afe","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-0.2.0.tgz","fileCount":19,"integrity":"sha512-prjHMGRaDdszYZOowXlTpfj1fpkp9EfBU6TnKi31TOeQzJoluiJpOdMKrAFtXVCbR2oO/KRmE65e5z6CTa61Ig==","signatures":[{"sig":"MEYCIQDclY+P2XlDzfqaqvgjHXN0R52w/aP6ZCv5hpOkdzJedwIhAMZBereptzD7N6NEZGYmf17WXrLO3nFwj51FIWvpcSlA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":46959,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3a69CRA9TVsSAnZWagAAz8UP/AyMBDo60hdFGblXVTCk\nA4IPiRG0IBwkRKRmpkAzqcFkyjVw01uyvBA4WGAurMuW1V3wGDZB42YlFT/h\n+3bE7R0H8VkzD7G28Xx/rAT5WfD5y1Jktc9OUvBoDMn8cWR9xS8Y1HSBjfHi\n5ei1Z1KcnrZKpna6/25hGcaOn4xSxitU/CIBg3XGNw2UBmhq6WosXJlOkaVW\n5vS453s/bYSG/M06fDSMbr1fAnUGtSbaMNreXn1TwrR7vDijiQQay3W3Nai2\ndMyIltgy0UL9LFPqW6ezo6C8NRjzAVvigqJEET11K3OJqrHm8Ip9NfLWgr36\n7jpORF6Arx9qLe5Tg6z39dtCaLflFjEoZji/hHj5rNZIMiodG0LM5g4+ZTm0\nxmHF5L1QIWM/vfhJp0Tbw8sk5UESw3jS2yz6w0vR6z/ELVWNbguhO5ZNTiOv\n9Rm+8H4vI7TglcdG7G2aAQyK6ivLTj3xw48BCcjJK0PLtU32KcDqm4Z7E2s+\nqgeMVaegO0qR01zYGyrZhhvvrZb4+WQOaQuJdKLIqWS1HiNJVqmRIYALd8Un\nX9IkvmyEqltfa7YY48dHDJ8KoA0y/DGsw4/Tsbmn5H8pMvd9BWZBQbjrLJ+O\nLc02EXqPR7lBAO9WC0az5412nJRhjb7T2VI4fWlgUDziwHstfPKTytm/2/Xk\nD4zF\r\n=yJiM\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom"},"gitHead":"123cfcb65f7cfeb5987f5665e0b4e229c1369dab","scripts":{"test":"jest --verbose --coverage"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.3.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"14.18.2","dependencies":{"firebase":"^9.6.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.7","webpack":"^5.65.0","babel-jest":"^27.4.6","@babel/core":"^7.16.7","webpack-cli":"^4.9.1","@babel/plugin-transform-modules-commonjs":"^7.16.8"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_0.2.0_1641918141467_0.9361193998681776","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@laboratoria/sdk-js","version":"1.0.0","license":"MIT","_id":"@laboratoria/sdk-js@1.0.0","maintainers":[{"name":"lupomontero","email":"lupomontero@gmail.com"},{"name":"anasteph","email":"steph@laboratoria.la"},{"name":"danig.dev","email":"daniela.gonzales@laboratoria.la"}],"dist":{"shasum":"e3775258ab0c467f6c4cf31a34422317a5ce14e1","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-1.0.0.tgz","fileCount":19,"integrity":"sha512-itbdAO+NmVP84sI/3oCIjLyktB4+tL0QVpl/znwvWZsJVrBWvg8fziH90vpLEDkuQpnZcsVXH51PkTxCSo2sog==","signatures":[{"sig":"MEYCIQDgAtMf1QNzX/caMyeII3FobECtvo3PNX3gdZ6BzYCm0gIhALbULwUPyH00pEh8E+y8EZ4k9cucr86T/Ao9O9pw0KaX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8dHtCRA9TVsSAnZWagAA/ScP/RZcu5Co+/7ZLz831NK3\nFd9/lNa2MdIGoK5MkGgmUCdI5X2xqlcpylVpuoQ07kWB0t3xHCzggL9YFOxD\nTb3UiHqjqx+piDB9ir8dT6z7qJ6FO8vOeQt3LGd/ht0Nl+sNoHEkz4iv8e3J\nqR9ugq76vvchn9WJRPjOwoz0Eo9VnRFNa+t8M95/q17ZVxW7A0jpsFIy9Pmf\nLd6sP9qf7TgXtA8Gzqq4aT0L8aRROMDeoqfWKDzycG1BKcEl8CNc1VjC9zB3\niuOUkI1N9oAhsmDJibGggoMlGOddwTHOti53BUcPqPNgqDmMixSH1G6fn2HA\nUh4SImVUW6MBnJBdIKAKy/mO9/2PZttuVCzKs/oXDpXIoS+t3ibdWii0rvb4\n4Ofo9pA5Ko2rXgjifOS3Fm1ZWz3m2y2+cvtRQyoS5EZqjd6AR9QL4o9/EpIm\n9FoGh16Z/UTWAQw+mYhq4+rJLnxwDdxPWROxP7/9KElUFIc7QYBw9TMo0K4r\nQJ80HiQVz1fs3zUkG6QFDj50jwxNJOHUdewnTdNER2hUfs0l4FcMJLKW5KHv\nkokaPmAyuAZGFlTmd3519SYCie2S42KrtFkb4kle2Iqb92VCqrIca6R445B/\nTJTXHQzheIr6E3qwRhXFgn3A3rIX6Z+i8+iuA57ZwyVP40wtxNs1cebQQqiP\nyAfO\r\n=Zgse\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":96,"branches":91,"functions":98,"statements":96}}},"gitHead":"c82a117c8d5ad8b3828d448d6224ecc0fe1788c2","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.3.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"14.18.2","dependencies":{"firebase":"^9.6.4","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.7","webpack":"^5.67.0","babel-jest":"^27.4.6","@babel/core":"^7.16.12","webpack-cli":"^4.9.2","@babel/plugin-transform-modules-commonjs":"^7.16.8"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_1.0.0_1643237869143_0.0031017122618026693","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@laboratoria/sdk-js","version":"1.1.0","license":"MIT","_id":"@laboratoria/sdk-js@1.1.0","maintainers":[{"name":"lupomontero","email":"lupomontero@gmail.com"},{"name":"anasteph","email":"steph@laboratoria.la"},{"name":"danig.dev","email":"daniela.gonzales@laboratoria.la"}],"dist":{"shasum":"232b3276c6845d6f13b6291e8636726f7178e619","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-1.1.0.tgz","fileCount":13,"integrity":"sha512-+4/2QjxX9IsKgJinzH+Gzc1xAD4qRPAljvkh7F2PLOBYBZVwzx9sg+rP08qXlxUhkO+38Mp/7bd376gz05Oy1Q==","signatures":[{"sig":"MEQCID75vrCyn0nt0l5TXNTg0mIyrSd0TRuBeMbcTqHcW6aoAiANc7yBoHbTubXh81l84dolKCBMWTV7/Fc5p0F+E2FfdA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+HldCRA9TVsSAnZWagAA+u4P/R+R6N7KeaIhd56ome8x\neo1z/VcIDnJMZTjFFL3q8ifUYmjmXSmAcTd9THptILdyjSuZfQVayQmyumxY\nmJZUF/M1hLYy8KJ19ANEHbUKrL292Xznb2prtLj5lXg4I9KZnge2zTv0JXuT\nUpo/3RqPhLBdUzXcUpxvQ6mssEmulX0U+oiCj3TrYSjZ4C59SpGlBFVwiRP2\nmtuvlsCfdgoeWkMRhiByCQ3/Qz6cLKR0Bps9lQDMP//U9Ng2Rf/byeKbEcIU\nRwm+WuuReTNoOYvOnC5wEAA2PeIc0XDMugdznzZjW0Qk7se4CCZHM+8s5AtJ\nS1Hh3dxoHCseKffVUtkw2/t/aX0+ROBJxrmjhaf9xY3g1J8kJjXp8IsEVIuR\nUfH3xJcpdW5pxDFQgJ422h0aJZtg1CQbyscDF+FT8WDkfaGMN7P2swhNI9Ia\nUHRteWRfswcvhE7VIzEkho9mRfNaLIW397ncKvsn1R139ozpidomqYUKVrqL\nhpIJ0oM99WRz+5yL5zp0Uob9R5kYxm24VsWASguJv8MXl9x3xlLtZdME++jq\n7Pr3dudaEqO/NOwRV02R1ZSmgah8kFk06EeFt+ErAwumn/+4CjMsuOVlGalx\nob6+aW03tl3MeNWBFXxHIV+B4KtkHN685K/NQwdgGbzXGlGNreGIfASGOJ8A\nPMNg\r\n=2dhd\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":92,"functions":98,"statements":97}}},"gitHead":"5ef0aace63d3b4a75ba2429dec658de9f9d988d8","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.3.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"14.18.2","dependencies":{"firebase":"^9.6.5","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.7","webpack":"^5.68.0","babel-jest":"^27.4.6","@babel/core":"^7.16.12","webpack-cli":"^4.9.2","@babel/plugin-transform-modules-commonjs":"^7.16.8"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_1.1.0_1643673948879_0.8539945554974897","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@laboratoria/sdk-js","version":"1.2.0","license":"MIT","_id":"@laboratoria/sdk-js@1.2.0","maintainers":[{"name":"lupomontero","email":"lupomontero@gmail.com"},{"name":"anasteph","email":"steph@laboratoria.la"}],"dist":{"shasum":"a79db5b469229f51893f7165ca761105c9631025","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-1.2.0.tgz","fileCount":13,"integrity":"sha512-N0uyLJMkcMPmJZsfLDH3hjAl8Hzn4QPKtkQji2wufSaPnRrGozhbKawaOVkhVeSRv9de3eiUaP28hM///V0KRg==","signatures":[{"sig":"MEQCIBtyiRlHxzMMRR36bmucK8IBYwhEET0Wh6X2+bsj7ES6AiAUi9OLy0lcs5XTLYPVACOgzM24EBXKoVZcpPIPI8vpYQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36493,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+zTfCRA9TVsSAnZWagAAQu8P/3kTY5BD+TAEahc5HICO\nWoTSJFm3Md1T2NnJH5GcewCby0Cz3BitubA+9Kw+97sqSB9cpLPCTHSHporm\nl3AG5vpNrfhvjsiTqZt8RIuMeMGFKXFxjKsNfo3BiFW5MUvkY5MRo8DIyL57\nVTlhXat80dR61rqfwTB3e6qBHghZlx+if15AMZlJbO/p0I+VNe1JmZqqz6sW\nRG41pBYF8izkKRYJbuCX9s9J6dtZtYqPzNbVsO3QHN627+6BJWLkKo6CIisd\n+BMx9pzz3i4pxwNz2g9APdNnz46kXfn+7V1QLJw5ZsDahsqFH62Kv9EANdIc\n8+SFqn6t5w8UFApVZbMzs3RV8y/VPeUSNPwl5S1ptEmRuN/U4h0Vh383RAYO\n72SZd2x3ANEcuYVUdi/VcDU3sFTsEoq8TNoFV++dbaU/mBDt3Td0VKv1zgYl\nP+0DrUbW7A9TJEjBDkhzqMv6XLwHsUn6g9+AmqWP7jgsR6M1GisJL2HbpmQe\nCZpje1nI9BXy4KdIzoIobOO30wWskw9UwtKsOrBcGyjhHXagIKFwKWRX9Z4n\nuDsd4LqYQ1cVFvBceK69FTJf3MwiBCom+34bd9Lhx9P7Hbv9+dP4GYMUDX29\nV3dpNMVjMSHS90oGF1AxJIfDsp2FryO+KT5Aq9GRdFXCHfiQVdjgPGnchXWS\nOXkp\r\n=bBCn\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":92,"functions":98,"statements":97}}},"gitHead":"a17251a46fc719fa3e580e190daf4f4736d9c32b","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.3.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"14.18.2","dependencies":{"firebase":"^9.6.5","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.7","webpack":"^5.68.0","babel-jest":"^27.4.6","@babel/core":"^7.17.0","webpack-cli":"^4.9.2","@babel/plugin-transform-modules-commonjs":"^7.16.8"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_1.2.0_1643853023476_0.8089891758555836","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"@laboratoria/sdk-js","version":"1.3.0","license":"MIT","_id":"@laboratoria/sdk-js@1.3.0","maintainers":[{"name":"lupomontero","email":"lupomontero@gmail.com"},{"name":"anasteph","email":"steph@laboratoria.la"}],"dist":{"shasum":"fe6c36d90b3f3c8d595e6f578d6cf4203b617280","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-1.3.0.tgz","fileCount":13,"integrity":"sha512-sBDUdxEX/Gd7Jj0drHCxIc1sjJc2VXOHnE0W5e76EQY8iNtyfcziupX+D8wY46jgD78XWCK9HJONtvZNU4EILQ==","signatures":[{"sig":"MEUCIQDrB6lyR5UtMUgXOrmZjaTdYsV0GeIpjFPKErO22zAjLwIgX5xupx76Gs/k/1KYYJYUeoD8ob1sHmhp5ljluez3R24=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36114,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiAwifCRA9TVsSAnZWagAApUEQAITAufddbkJAUq32HU9Q\n5ggkp9MgiwSd5a+2ucB6CPb+WJr13VdFQRlwJU4eY9xTl2KJqzhZHgCsCdXu\naoqXMggoZuhwkvpwUkk06uVkajKcOTW/fIHwt+17HsrL2ckJLNJUddmuHpWa\nSJZEJqsa1FIXJ6aR7u/RwPwz5p+iFRKU6RcuKFuPTHRHDDhYP4XoUGu/ufJa\n0MjjV9Em31c9jiAAPR4I4qbggvUlF7XaaY0BBcn7Y8ogMMy7khHz1Ww48sRD\nPSjCpKkmwUcgl4IVKdgGejvBAwuBuNPYP87aCHmn8ViXM0Sahx2KVWhTPGMU\nsmPe7rWys2FZ+PpgDFsGwwHwP4hb9F6tZVa1mBgqQGS4uOTSUP69At5vfe0X\nn5QRyIJpwKekfbN8eQQirf1+do8PEJOCopku9cWPzBaCpg7u7kM4bZyxjuZC\neUlpre4d9S5oLRSI+U6xYfOlwusMuXzF2YLqVFygqTg8cFyQDIzuWxGqQTJp\nyzaVvdwutw7plP0UOw3ARGfwbvmLe5nc1NbL8rtFM11hi2WrIMtHD2FIoo2p\nl11MEZXMUes9EJVyvdUzurfel7cyLHUg7ehM4GiuVQNAV90+0yQhzgS3o7OZ\nK/LCJ4TQlFLKP3q09h5zp6MDWLTjE3t4KaZiEipcWEEd7HtVR7UEvQjgjznc\nV8HL\r\n=ZDu2\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":92,"functions":98,"statements":97}}},"gitHead":"7a3255dc598a3b5b14907be6d99dfeb17ee135c8","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.3.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"14.18.2","dependencies":{"firebase":"^9.6.6","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","webpack":"^5.68.0","babel-jest":"^27.5.1","@babel/core":"^7.17.2","webpack-cli":"^4.9.2","@babel/plugin-transform-modules-commonjs":"^7.16.8"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_1.3.0_1644365983496_0.5749265495128946","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"@laboratoria/sdk-js","version":"1.4.0","license":"MIT","_id":"@laboratoria/sdk-js@1.4.0","maintainers":[{"name":"lupomontero","email":"lupomontero@gmail.com"},{"name":"anasteph","email":"steph@laboratoria.la"}],"dist":{"shasum":"dbba60e7b82ff4241396bb1960806bc8daa190cd","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-1.4.0.tgz","fileCount":13,"integrity":"sha512-G6GhhDUhjpvQqNdycuiZYOHnqv0o7cgRzazhQFR+5rdDkQwQei1C2c0lZidbIaot4c/opiwpPAJeSN7Ied1iCQ==","signatures":[{"sig":"MEUCIQDPOJbjlQkou/Aqxnc4EsH4EuQidGtJucvfzD5hjWCHZAIgAsvCVAm6sYcq0VReeYN5X1GQF7Yu2JFVLnm+AQRFumM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37954,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiDDzUCRA9TVsSAnZWagAA1JoP/0HrXLLeQ6dEe/JNfG7y\nPSUjutD19ttHnGRUgORrPViXVoLZ81agJA6uwDin1ydjEq08Wlm8mEKG2eLj\nuEgXEP1ItbKvmU9l3qsUk5Y8AS9hUY7JmT2MO+msAghcFJl/EapMhG9jwSBp\nIzFnm5t1YG6y8ehN7Fb+bBmZeS/YnMFc6CDjxw1ncHMl8bgpxRq3UAztvuKd\nuoNRNk5ySODGsPGlchU0ziS3lQ5se/sJ2uGV1QJzeVDA9g214DcmhSDgOioD\niGTH7jcKn+QP/YP1mBowcQ8HNOSlKicJfoarz7iEvYFvTpHnklsxfldL6U8Q\nxOOCEhgAdjR0RX47ho7n0lofHvMJZg2Ta9WCeOrPcd0eHmug3QMrHvYMqkZQ\nsxxphb1g0uWa7rAjSZh11Xus+rNodKG+SPdrkJsWhqP2Y/dzzvEit6O8qhUE\n06YOQb3kpsXGzYoH44j6mnu/kaTLEJ2/dpLoPacmvMLUYnyzaoTEVUB8gmjK\n/64dd8+l7phDaAUjbjoavYI5+1rKcTAaRugJwo509KpJpX9BovEc9t9uQ1vP\nnCtbg9vv7XJgM3rozYx+oILg+9gKM3OFiAV+MEzj6lFKdEqotF+O/ytiY1oS\nc5DfxxR21FtSWByZ5zSUlnIU3T705O+YMjE7LacLXOK22K5spB3xi9/7BJpe\nFJ+8\r\n=rw0W\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":96.7,"branches":94,"functions":98,"statements":96.9}}},"gitHead":"08ccf6cfdef645e5977705a3056d7c117d797495","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.3.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"14.18.2","dependencies":{"firebase":"^9.6.6","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","webpack":"^5.69.0","babel-jest":"^27.5.1","@babel/core":"^7.17.4","webpack-cli":"^4.9.2","@babel/plugin-transform-modules-commonjs":"^7.16.8"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_1.4.0_1644969172407_0.7958020614798997","host":"s3://npm-registry-packages"}},"1.5.0":{"name":"@laboratoria/sdk-js","version":"1.5.0","license":"MIT","_id":"@laboratoria/sdk-js@1.5.0","maintainers":[{"name":"lupomontero","email":"lupomontero@gmail.com"},{"name":"anasteph","email":"steph@laboratoria.la"}],"dist":{"shasum":"668c11eaca0dc46abb1026cc4e35becb02ade20e","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-1.5.0.tgz","fileCount":13,"integrity":"sha512-xfeOEUXbVoCyhlDYiazOX4zsgYc9Cn/YRIt4gGzV9Nkky5W2L7MKG7i9WqIUbSuwKC8I88HyjZSlznAfeY3eig==","signatures":[{"sig":"MEQCIA7zV5ig/rX7ZYytcsV06eo4YH3/7PU2Ig2ENn21GuM5AiAuLTa9ZjcV68C7lBo4PIRhDCsIiKW+SSawN6iHH0I8GA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37989,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiK4x4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoSpA//ZgMJxaMdcxW5LeB1RddSRsTIF0xPs8I3QJ6vxQ0zwYApsNAo\r\nJ9b/OKEDJIFWhmU2Qf/7Gs3UeUCKC+5OYXkhOCtCrXVxdMmWJj3oxZd+n5Tj\r\nb5JokGDNE/LTAVc79439+Vpg+dNfMLyF8nUVDbaRfctYRt9GebvTAD47k9tt\r\nReUXThF6CZr3Sr7I4GeUGH2gvt/zlanh6/8n9DkpHcodZCP8hloj1snHIKMM\r\nh0CanjVEHZEiyh17PaPC64SDq6WYol1cImtsdqIm+vAyDZLon6oWWkbKVZJz\r\nCTJj6+3Gr3IlvbmgPJtczBtYWuSShkhw1oQGgkoLud7mK52/a0lPfQ0RQBup\r\nAg2/whVtEpPsiuYaoMMtf05uN73dvH3F78a6u5UqTfYBbTW0Hw9CfdAPouRU\r\nDPfUMtzD72YA0oMZVoElDpdDcTabu9XRLmwp3PG3luFL2IKhsrBKyeviSM0M\r\n0pvCPTupZEO44v5/N+Kb6Rc5F+WNcMN8AToTBfmnOTq9cKR/6dlVbZa05Nhc\r\nFC2KllCFRSwlSDKu2tLYvxTaLZwulJ5VrG03WC0qz7GyEZEEEaA/5vWomru+\r\n2wnzkjqLpU8zo/4x5tcZWMiWFoANux9EF7BZee1ZtRU0dNy+3ArXHfjo+r6J\r\nJSdXUf3wi/zVHvoWVtoAwPWKnYF+sRQZtO8=\r\n=sU0s\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":96.7,"branches":94,"functions":98,"statements":96.9}}},"gitHead":"476bd991ed08f6aa4ee7837a4934bd2094e53c46","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.3.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"14.18.2","dependencies":{"firebase":"^9.6.8","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","webpack":"^5.70.0","babel-jest":"^27.5.1","@babel/core":"^7.17.5","webpack-cli":"^4.9.2","@babel/plugin-transform-modules-commonjs":"^7.16.8"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_1.5.0_1647021176689_0.1103698656775911","host":"s3://npm-registry-packages"}},"1.5.1":{"name":"@laboratoria/sdk-js","version":"1.5.1","license":"MIT","_id":"@laboratoria/sdk-js@1.5.1","maintainers":[{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"6edaf56a5d0a1a066f468480eaca5130efc53804","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-1.5.1.tgz","fileCount":13,"integrity":"sha512-iWO3DULOxeM8P74QWyyO7i30aq1pEelI+XLE08toVaP4CwrzOUKeIQpqKuSGsHCN94nxB4K0odaUMiHaANi5Ow==","signatures":[{"sig":"MEYCIQDFAQ5WFg7BwyliZSfgQl8SsyjYv7bHsYM8zA9sr3f1cQIhAJdvzUGibOxriu8XJqqEQM0F/ttJzt/J9MgBWPcH42TR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37989,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiOju/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpTmA//ffUyVCgfem8ep9E/rOsoI0wkHzNHM2MJKjYuB0SKUY20fNn3\r\n2bhU5T9O8UVh8A0HzxOs1CEVRAbxpNEhUXAVxCxRLx74ajL2KqV5abp0U5jo\r\n73iB68uzVwnd3K1SuuxbJqgGIYJmp9uKlzSb81F6XtynKffku/vXnsPqUXDx\r\n4824ScOxfa6nICqUgZRLrjP6GV+guGyzHwBGs+qbuzyKh4L+4SZjHD1/bUd5\r\nL4EnGXPsZpStAYEG7sHaJxfzwYGHAq0QN7UMaj5g8nM39iHJANbij9julWZf\r\nH8PUgxfswMx+lgpjrYRB+zrn420idwAaVbDFbMwY74TdqSbtSRGfgf5qDB00\r\nuvInOB1LXqokmOBdD/E/voIC6w+Cn+P+dmPIT/muQZW1rWEPLL4rnJU6Ixug\r\nKCDAGwAliwl0sdQTzqT4XYvYOxy4/2mTlZ1CEV7a9RAg2k7HjhoYC/6K8qIS\r\nmAdlGLwnpFBBTvK/BOD7Xm0I0SBxnMiKI01DFgwPZZ5AMoQkKJjFVXI8bpir\r\nRP59UK6FtSmIpdmOtOGLDm8/XlHReC2EIEugpttlOxkJQ0dm7fQfbN4CDTE5\r\nxE7vIxIRhOuXngDTUDGE7YFGcKJvPer3y2H3Ve4h8c+J1C1fzoj9j7i8rUaK\r\niOdaW6bprGtqdFyDDlsdit2PrKUplhsnCAw=\r\n=2eep\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":96.7,"branches":94,"functions":98,"statements":96.9}}},"gitHead":"e6878a347dc016e786f90c4c4f2ed22ce73b175d","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.1.2","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.13.1","dependencies":{"firebase":"^9.6.9","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","webpack":"^5.70.0","babel-jest":"^27.5.1","@babel/core":"^7.17.8","webpack-cli":"^4.9.2","@babel/plugin-transform-modules-commonjs":"^7.17.7"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_1.5.1_1647983551711_0.5794252476622317","host":"s3://npm-registry-packages"}},"1.5.2":{"name":"@laboratoria/sdk-js","version":"1.5.2","license":"MIT","_id":"@laboratoria/sdk-js@1.5.2","maintainers":[{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"a552dd27f4c4d0a3342d251a43e0ec6c5beb97b2","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-1.5.2.tgz","fileCount":13,"integrity":"sha512-Yav1WW0TKExGxXm+XzAcjFsd5PCSnmsDs7kW155MOuEQEYbNzAq/UJrhWcxLk6REzJJFmvLtZmLKQ8OiSdkUow==","signatures":[{"sig":"MEYCIQDPSnS6jTMGMLjt+Ie60cmzFQM9IkSJqcIjNJTRkUYrwAIhAMQ1ni3baCg2dQ6Vq4g+XgnMn0gPoZpT0jm31CN+U826","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQdPcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqXEhAAj62DGoOka6rb93eug/DCo+tstzn9TPDciV/RhqQXhYDLzgk4\r\nuj6mKlMnKDbPnacFNbyfy4QfJKeo4DuCzv/iSHOLJiPkxqg7aFzpnY0FBZ/R\r\nXNXbKQMjCY9ZcKDKgFaMbZy+JQaYtDQJGymFF2EAz8b4yjNeBacppYZPzYyM\r\naRMYFN+LURTA+CK5i2VunwCjOErqO8rUShem2+BZCA3etaSw7UHOEPCTKyFc\r\n/vRTKc0s9XbmKKV0KuijtVxfVNohBNVNfI+A9/fefKexhAvSV3P+yURWtm8C\r\n0TGgpoqz4y5NBQbisj/H+140wJ9HmZKDJF4Y4NLwyEyDYv0NIO1SsjlabwFI\r\nrqMYIqh1YLTf/CMXAhRCx8qRcJ15T2ZXjlIFiiRz3C0hzrsWSw74usfyozI2\r\nJV+sNAvDmoLZUFa70R6ZOH2jRZig6vmiENS8asY6BGt5gTXOiz9ytrrz7Ai/\r\nEfh96cBxP8xN/me8Mtp8ag5PU6R9dsdiYgahkO1cXBT2bi8vCY56qaNzzEiu\r\nkvOOBJSrK/qdjJiIioaiWxQ23PHzkFUC+JWWt434usoTTEX+yGCnG5olQaSJ\r\n0YaaAlJdeXOedh43/xHxoOPPi/RcFPUL8sd1eyB2/tgQYc0VwmWXwvjrVarY\r\nZ2FIgrgVpXE0FyFKSEkIwyv7B7u3iez2bBc=\r\n=f/7Z\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":96.7,"branches":94,"functions":98,"statements":96.9}}},"gitHead":"115536f58451e6d73e5382af687476a4e94f39ec","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.1.2","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.13.1","dependencies":{"firebase":"^9.6.10","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","webpack":"^5.70.0","babel-jest":"^27.5.1","@babel/core":"^7.17.8","webpack-cli":"^4.9.2","@babel/plugin-transform-modules-commonjs":"^7.17.7"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_1.5.2_1648481244096_0.6154731709775008","host":"s3://npm-registry-packages"}},"2.0.0-alpha.0":{"name":"@laboratoria/sdk-js","version":"2.0.0-alpha.0","license":"MIT","_id":"@laboratoria/sdk-js@2.0.0-alpha.0","maintainers":[{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"26fe7afffb4eef5b5b3dcb2398fa95a33b7c0889","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-2.0.0-alpha.0.tgz","fileCount":13,"integrity":"sha512-4jY3qLc5mgx0St2l4KYu4jtcbreNL6GJ3Bz+z21UmmFkCXp1z9HsA97eF/XEbDdNSDCEhb3kFTxUeqAX+iXO/Q==","signatures":[{"sig":"MEYCIQD3iEsGYKE+5hZ7RsJNEyk/cYfuBes1PdM4NY+GMqwTvgIhANlIYrjCwtu2GjlsBvz1E+mjnRABb7tjoNa2ZdX/BhAE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41876,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQeFWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrbAA/+NiGgKa7uzJ5Dv+uPSDMUkHZOCXAaF7j4yS+rDRa0RiTvBG9u\r\nAK28Uscz/dgU0kDTmmcx0/LlMCTRgiiR1F6IhD5fEgOnQeXfoFWc5llzsha/\r\nMwjfsKWvOfPPVcmbuEKCmoOxLWiQrqoKwg7sxZy5viaCmqieSIJawE/1r5f2\r\nhvCYGElDTa8jmVWkJBoC3hjdIdDGDIcxnibXYyBia1fwl0Mg0eBwJw1slMOa\r\nbej4l2XZ44oqsiQY/ABXhcVbKpvyzPYHZoV/Bbn8F19bazFT1do9iULVIzlV\r\ndtp8q9bH07wszZxow+v/pBPxPrA6lErwv3qFw1ZIXt9aOmITY21yOVS2L5mC\r\nc5yV8Ur+n5RS90twWI/img+pWsElCRD2+sIi0rlTZ+xo5ZQ0AKJY1gdSqG22\r\nMQ5NA/XCiWXGxmK58I7WkJQd9qGBqDRcabFzEcgnW6znT98PvnaFmKWcJigO\r\nqN2/icYVLi3DjcOSqmFZpJNWf+Ha4QHL5SBbtq2G1PS44jTOpPvxB2Nu5J8i\r\nXd29u9gko8Cmf+zitqhvPx+kbqCMnFlLfoTcxr3iYjh631SlGOw81JSoj6MT\r\nVjsYQU/AlsEy6YuDFLcG/z+a3VCQ8isNNL++eSnnZKetl8DcRFt9rvDDDETO\r\nSTlYgYv3ILw+1ZKPVOPflIBjGg3WrJfn3kQ=\r\n=lzQY\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":96.7,"branches":94,"functions":98,"statements":96.9}}},"gitHead":"b1cccdecc777544786f5838615958c2cf6c3ddab","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.1.2","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.13.1","dependencies":{"firebase":"^9.6.10","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","webpack":"^5.70.0","babel-jest":"^27.5.1","@babel/core":"^7.17.8","webpack-cli":"^4.9.2","@babel/plugin-transform-modules-commonjs":"^7.17.7"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_2.0.0-alpha.0_1648484694265_0.566377150082692","host":"s3://npm-registry-packages"}},"2.0.0-alpha.1":{"name":"@laboratoria/sdk-js","version":"2.0.0-alpha.1","license":"MIT","_id":"@laboratoria/sdk-js@2.0.0-alpha.1","maintainers":[{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"4885334c01a5dec225acc1c8ae8032d4120abd22","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-2.0.0-alpha.1.tgz","fileCount":13,"integrity":"sha512-pNx2gr57LgR5v+RYf5E7WsgRx86bTFqakHrCGWhGHUCdnzRxGNIA/7gSnEIrPtQe4kh5Rvzhr75mwS+iEw1/GQ==","signatures":[{"sig":"MEYCIQDzUQFBe1DuwJ7MlDqcvCBLAT/6L42etSlNy39kogc9iwIhALcp77IzUW5GCWjx55PuRPAjPHyRzWxTU7EpbMT8b7Yn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41918,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQmetACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmreIA//YLJQLMrTv7lYHcgsoy+4AAmlW5jToTIE434s0IG6Cqt1sfjX\r\naLXkS3JPNQy3cesBAHwimh3L2Z7wR8M9zZOEF6jlqQeCFlDf3zYKK4vwqbxG\r\n0Bvyb/Mt4E27+0CRcIOsOCXtg4epABkdwMZ1kAloIhamxxZutJvM9ORNIi5+\r\n4swm39BDg3BKWEmkF01TG5/udXOknrVEJmVFZ1Gfg2X1ykDonHfFA0aJUlXN\r\nAickiNvmwVb6cQi50Z1QkSWlpd854jkfNQVfy+q9hufCqW0eygiucMzw6cRA\r\nl6utpiR3xYIG6vrySoRD6paxQakFVV5OHE0QTlgVeCvXLEHwyrre7Q0KzvrZ\r\nHeOeGH44OF8dLwpvRXCZOZ5581byRoBMHVI70Fp/13ZiEtM0nkns4agQwR9l\r\nffRf9KL2jx+Llv8viOIIzLyXS7GG6rY05NGpQsEAEb3S7e+8bUOYWRP75E/P\r\nbHLgjmpM4jLSh0wUSEvvVBq3uLJKbsX6djb5RB0QqOTjFqyQmmtld5+q6yA2\r\nUDnruupgiWVN3xoR1flBBxQFqA1JXHMIo7EQVxiWSgj73z7WQeUlxXYnld5X\r\nkEsxbIbqBPcTnxTjP3xg46ra/m7aRswxDt3iuF7/k6y1CBYsCkSGQTyBD+yV\r\nJ0JH9ikSFgtWZHzbx1iC9BO0KO6hVpko8ws=\r\n=oJdw\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":96.7,"branches":94,"functions":98,"statements":96.9}}},"gitHead":"b4f5cd0a7cf5faa24ebfa2714b52f52de357625a","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.1.2","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.13.1","dependencies":{"firebase":"^9.6.10","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","webpack":"^5.70.0","babel-jest":"^27.5.1","@babel/core":"^7.17.8","webpack-cli":"^4.9.2","@babel/plugin-transform-modules-commonjs":"^7.17.7"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_2.0.0-alpha.1_1648519084949_0.8349051258274409","host":"s3://npm-registry-packages"}},"1.6.0":{"name":"@laboratoria/sdk-js","version":"1.6.0","license":"MIT","_id":"@laboratoria/sdk-js@1.6.0","maintainers":[{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"538afc3e19c1aa7c0eeb2d83e79d51550ed95dc5","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-1.6.0.tgz","fileCount":13,"integrity":"sha512-oCyAzfGKGlODw/vhAUpvDyg3zpUajyQVDtfE+q3s7qx7lvLrZkRHvtG0v/FgzKV3nn4OzQsl8g6gLizGQrVqzA==","signatures":[{"sig":"MEUCIAEAIuerJa55ih1bsbonmnxKWVW8P1zz4B+urVWuzJInAiEAzxVbYwXrK5dX4sGvQoj4mCAh7sQtqYTCKPyqpN1C7u4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41830,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQ5lxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmomaBAAl/MfSBo7snmqwI0m7A7NuRuRDz6XLmnvLQpDv4LbFva0Q/dQ\r\nYSvm91uBWHpREMyuW+IxR8I8v1OEb8IVdlR+A2/O8xyC6SyfqeTAXCqfg29f\r\nu93yMPrvR8Fxgp3oYLJB9NTwykSHlTFWd3dTsHuPrhYs7gSkycADydNnRshE\r\nSvjC2ZTrbKmt5K5XaPyGZEWPk7nf4N7Xnhkaq4btvYnzScZqqeDL7y5mnMIC\r\nEWfUtLg2WZt6C05UtGHZcS15TqUsvrxC9sEpUqQsTAUtHCO6iaME/MdTrhdw\r\nMP6ncNtsALHWMfdX4UpQlZApdRDqlcRda6ZK9suKsSmjKndeH2xKqn9A6dT/\r\n20hnx5l+sYcWeA+PNQI1jcIzbqdL5JhOg3CYRIRu8Sby0eYULRZH0rTCk/jq\r\nLIhuPvzwLUsgwTuvdxAIhBAH+TrynbmU9Z+zTX8+xV7A8/tRD74w9gGdQGJW\r\nk9640ogaw5ff0ydDOOfoude+flTRbCNBpNaRdqdJDAyATruWIxgBPimeoP85\r\n7BV+LJMKN4z5GX1IaNlH5Fnf6oCqo8unhDxFKTHY+rTsU9wPhxP0lFL+NcH+\r\nP7sw/H8w2LxWS0f95J6S8eJKNZfUK9Sh+Qda64/H9CodvzZAFnd0/g2GD7wC\r\nUE4BSQ7WNAsgB8ZguO1fxt2muvJVfTaCppE=\r\n=h9Xu\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":96.7,"branches":94,"functions":98,"statements":96.9}}},"gitHead":"162b280d1c9c60db21e2ed4f01bc48a529072351","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.1.2","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.13.1","dependencies":{"firebase":"^9.6.10","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","webpack":"^5.70.0","babel-jest":"^27.5.1","@babel/core":"^7.17.8","webpack-cli":"^4.9.2","@babel/plugin-transform-modules-commonjs":"^7.17.7"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_1.6.0_1648597361277_0.7025806909427892","host":"s3://npm-registry-packages"}},"2.0.0-alpha.2":{"name":"@laboratoria/sdk-js","version":"2.0.0-alpha.2","license":"MIT","_id":"@laboratoria/sdk-js@2.0.0-alpha.2","maintainers":[{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"95f247f785089a0cee8d823f3de2e770ecad1d85","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-2.0.0-alpha.2.tgz","fileCount":13,"integrity":"sha512-8WQzxiTimyLg+FtebfEYsiuQ4JyX2YRTKcFHpn+h7aqAPwZEHKZLzAIZ8WyDqXwEWA1Uy8fokctRiBZTTtfpuw==","signatures":[{"sig":"MEYCIQDGesA5as3bmGYfPfX7JTXnzgo0I5fmZEnD8mMwTYALLQIhALc3R8qpTOHu+frZdwGMKvo+PPkgOpNg+AF+wLaZRMHx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42168,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRIeMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoZKQ//SknQarCmmYrl7j1J7m5n5vras0Oojzqth+fM2dOgBjVBG8D0\r\nXTJTb31DfL/UaArgCnDNN6D5pIeY+gHr5yN1PsOGvTfjgd1V+uU/YdupVKxM\r\npVwKBABbGinK58EgFwM+XQG2v7vhvN17g9nc7iyodImAL2mdonfVW5ponZbU\r\nZ7j/10o+mtxWvWqbmz4BWtoHvUuiU+Hv/4hr8yzu2zLfwOi8A4xOOfdul04y\r\nSA2J7R39nBb0G3bT1EiY6///8dPDyP6cSaxH5Q/KflVcjPn+EbNFlrlV6AYZ\r\nRjq+Hn2TD9FWSdezBwYUZQ+osOR5huEV8INx488/jcVSr7m508LUZNdk495y\r\nR48yPg17SPJN0s514aZM19QTym9EQPhSCPEIDXvkdJnDNZ5ZZXmefbufSe+P\r\njoappssoSuK7Ml9rsfzI6G9TYWwt+/fZh4xIZCcidHidNOsreG71qZ4RqVjr\r\nGT2yzB0pm9p14mPnR7QcvgGZe/yDBEL2hYKmOKxYftw+pGFa0gOwLQfOSKL8\r\n2Qmj9eC1qdF8vEiXip18ulLkaHr2qfZ13IueildyLcBdI7k6WRPJAZxOsOxd\r\nXZnrfoxSEPgl+l0Gf/Fh4xcx2n9dOAtCw1FV1oNTbbO1LDQly03RezaucXgj\r\nsU6EaSNLCv184AWNjSOjSq+8QyJXc6t0zLk=\r\n=1KC7\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":96.7,"branches":94,"functions":98,"statements":96.9}}},"gitHead":"5e5888bd207b29e0a2946817ea0f97e8adfd93ba","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.1.2","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.13.1","dependencies":{"firebase":"^9.6.10","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","webpack":"^5.70.0","babel-jest":"^27.5.1","@babel/core":"^7.17.8","webpack-cli":"^4.9.2","@babel/plugin-transform-modules-commonjs":"^7.17.7"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_2.0.0-alpha.2_1648658316581_0.7253005406563537","host":"s3://npm-registry-packages"}},"2.0.0-alpha.3":{"name":"@laboratoria/sdk-js","version":"2.0.0-alpha.3","license":"MIT","_id":"@laboratoria/sdk-js@2.0.0-alpha.3","maintainers":[{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"62c9889ca0fe973e2810feabbb5e1a222b44cc1a","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-2.0.0-alpha.3.tgz","fileCount":13,"integrity":"sha512-pwEIxlFp16h160APRKV9EiLlaFkZg0+4R0qcYVfPCUxOviZQC+c8AcQiJQMQatemBskIvr+GaPSw6ckFsEco8A==","signatures":[{"sig":"MEUCIQC0uBjtEfTpP/l5zGfaF6+pbTsJDoI0xU1JMWelYXFYjAIgaM2UKxn6j/YC1KGAhIPhD0olCoxOhyRbScMsvVpRYfA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRNnQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrj/A//Z58zlxAUAfLB4MiuF0F6qkmKR+Ng35bwqVAvyGCfX0v9dfGc\r\nPDBnthYRAlWmMybDbqqYNTzdX5+60QjqLajQ2vM0pQjabbWaNXVycOUaD7WM\r\n+hEKp1lyBefTwqX5PLASqxrxWQyn3aXiDkS16brTjpLm835yxAnzvaeF88oe\r\nAsMtILwz//Tr7sm8hghyCXZys6niA0e5Co8ShJWo0hgqpKHUf5wIZDPA89y4\r\niETE/z5KexbWytnF8Ss+rKPYPJAUxLrSzVLhg5GgA82yfpvRnFyJ/5mrQL0s\r\nhrSiKRED1oxz99cjyZhVft82dHL5nAHpWD4W+tTBdCoNjCsqJdr2CM+GrKTo\r\nOu03pNzBMOCUMyaRQ6H5LGIRXz7VYdNrMLVSAdk82P8vr2Um15VxpKDggf7H\r\no7g0FjBf2EnCwqA5ZZD+uQKObw8SgVLplx+xG4Nq1LOjF6qooXp2CmbotbMW\r\nAfQUYl+ynxu2WYgbea9M5Sh4jXrBv8VjykR4wzEs2qzLWAnUuEJT+yPAWsMj\r\n0+mqMnz5f8lLoKUt2yRRsDv0/zLi0EZomTtkusLMm0GXEGl9MPgXw/M9jdCA\r\nLnOoOjQiPL6jmnia7aH75HNmX4cXX2qFN5w1yqjV9lpuBsg7rqFbuxyhjcam\r\nL+HHnk/mxz+47Airiy9lOqeyx7bGLE9amxg=\r\n=Phit\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":96.7,"branches":94,"functions":98,"statements":96.9}}},"gitHead":"16052f07a7ea211b610415f6e38a5fdeef147b9c","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.1.2","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.13.1","dependencies":{"firebase":"^9.6.10","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","webpack":"^5.70.0","babel-jest":"^27.5.1","@babel/core":"^7.17.8","webpack-cli":"^4.9.2","@babel/plugin-transform-modules-commonjs":"^7.17.7"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_2.0.0-alpha.3_1648679376489_0.7788288816408924","host":"s3://npm-registry-packages"}},"1.7.0":{"name":"@laboratoria/sdk-js","version":"1.7.0","license":"MIT","_id":"@laboratoria/sdk-js@1.7.0","maintainers":[{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"f3d41965000c922fc1148c9044092390fc946944","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-1.7.0.tgz","fileCount":13,"integrity":"sha512-DoONN0j1fIJt9KfrO9eymLiaaeM4kOkWN9j63wrp1dZOnYJSn8xQBqLJeK21RqFs7f6k5kCn0xsFIzzcHEyWZQ==","signatures":[{"sig":"MEUCIHEZHjBe6cMHoxo8dWDNUwAYH1+7imeMjl4htSM6sYruAiEAlGdAcHEW6alAL4aEKlHRoZHQ3lf6Fe4s3hrR4CtPLYQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42018,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiSODyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrS3hAAmwopKwjFNGAKzO8rNeh9uwV5q8oQlVmAa2u0+9H6d1KO9qnB\r\nFCI4R/+cKTdznlVgovy/9N2DCXG+PXKnwlJLfobMN2lT/dBZPgZQ3TirfWAB\r\nmcMhjq3amuD6me9tOkNaYKmrUA3wISimeAsx2VaGiS0z7XqvDH1LjYqMYshq\r\nveAD3tbjkdZrDKBeIn6CGKmm87kAne42IIxAJSPHID2QBnqGtgTMEPgDUIWp\r\nP7g/t2zS+tkEdiQ3IvMCJjO9x4S+8hMmFVO2skxLehVthHDvJzG89377fizM\r\npKMY0K0r52Fhn2rXcLpcjd5WHx2DbEZp0Gju5XFHXdqCCzVdWPtgXUKcuYGb\r\n6EFC721ggt75REjZEZnb9PyY1M0ZH8qosr7ISN3bGzMvG1JWmoG7gV1otBU1\r\n08JTnbwizNq37XGEleTzaEEpLDDx2hkbhIC9mM6ZpaC9s3qNM8GLV/Cxg4Db\r\nfaeebvfz8ve6fMwM6DNWTIPJ4BS4X2soGLfjX9+Z7gu7E/2PqCG0KyzgEfsG\r\nHeLb//SA+W4jLskeD61pmrl08JkltEDh1U/BSTz1lphaeceu3p84ktXxky5Z\r\n/LN6hHj0btpt0D+obl2PeX0j7sz/LyXGimPft+Id/ZjnjeIwqcf3ucYKb+CY\r\njdWNwD6QIKj4LO+4MP6DKTEqkahgJ7UWtXA=\r\n=axuJ\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":96.7,"branches":94,"functions":98,"statements":96.9}}},"gitHead":"03f6a12f6e527e32eec52c52bff17d84649d97e6","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.1.2","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.13.1","dependencies":{"firebase":"^9.6.10","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","webpack":"^5.71.0","babel-jest":"^27.5.1","@babel/core":"^7.17.8","webpack-cli":"^4.9.2","@babel/plugin-transform-modules-commonjs":"^7.17.7"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_1.7.0_1648943346150_0.32134055988430066","host":"s3://npm-registry-packages"}},"1.7.1":{"name":"@laboratoria/sdk-js","version":"1.7.1","license":"MIT","_id":"@laboratoria/sdk-js@1.7.1","maintainers":[{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"09501b9fdbddb2e306346c3c1fe0a487bd05abbd","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-1.7.1.tgz","fileCount":13,"integrity":"sha512-d55vB+J6OjzKXZB6FoA7vO/T+EcGk/QyeLGKhtTvmNwJsizgZsflP6d22h1ICq6KnNk2T2/zb3xZ1m7bGME0wQ==","signatures":[{"sig":"MEQCIFZbvUA1ohF/jhokGG+1aZFM+LLVrwRJLAQYSqzlNrxpAiAzKomL2gE/dha7reCV12ltfiu1xfhWnrWeBxbVI0cDaw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42058,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJimOUSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpMGw//SCmUMJflAF/iNNRj8SmW2XEU/ZV6sVkGy0DviodBbZgtQCDa\r\nNKFHEO+t4CXUKDDnUasEknaQpqJYGNE0q3MVD48hD8dkXaLpU9ItgL7FykIy\r\neXgzwjyqFThe4yyLnkyRceOEr+VDOrb5enYYRoMolqhCmby19b2zjhec98BM\r\nboLkZhblCmOj6SsB3xbKoPgiqQo7I0+opgP3wgTMOSs7jJZViMcLY533BxiX\r\nCtho9tRgFSN+60Nu7O9BCoOqIl/hI38ap1hCKaQmH3q8Xjpda2TZIuNdf/Hk\r\nlHIGPI8zixLbZEaqBBwLrB3em6DP2eEV76XHbvdySP0xBBA1DpozuOOwS2S1\r\nhJGxKSVWfV+nGDVcuTJ9d1Fc0eDEKFMxwZuRmEsR1BAGWzwDzJ5AcuO5WLSX\r\nQpRi/3SMz+FYEfj2psbkyvyyD10n1wzLVor9/oNgi3OIkCgQ3/JGYtVIpY8X\r\n8DBmA+Aqmw4oCuFHEi4b/iYpW8wovA4+/kYYfcCznFUTN1YwLJQPEHGOaD0v\r\nDMPTdzcxdk+OoSkuSMH7kMDt8EWTRSFKqB/jZc3pNptUoQSyNvtY7L+mXJAC\r\nXtyqcUWmSKTovw3ZYlGkyzhSuH5n43fipMTK2NN+nVnwPFsyjH3rp/Hv0DUy\r\nbZxa/9LJU57I7wnDTd13AargCpmKC1eRZd0=\r\n=oRm3\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":96.7,"branches":94,"functions":98,"statements":96.9}}},"gitHead":"298b2337db4a41a1d440aa9895032ca85e2e7f47","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.10.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.14.2","dependencies":{"firebase":"^9.8.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.0","webpack":"^5.73.0","babel-jest":"^28.1.0","@babel/core":"^7.18.2","webpack-cli":"^4.9.2","jest-environment-jsdom":"^28.1.0","@babel/plugin-transform-modules-commonjs":"^7.18.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_1.7.1_1654187282210_0.8999549029007159","host":"s3://npm-registry-packages"}},"2.0.0-alpha.4":{"name":"@laboratoria/sdk-js","version":"2.0.0-alpha.4","license":"MIT","_id":"@laboratoria/sdk-js@2.0.0-alpha.4","maintainers":[{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"8e219912b8cf26533942172622bf71925d389dd4","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-2.0.0-alpha.4.tgz","fileCount":13,"integrity":"sha512-FquKnVPMI0y5vvmdK73lrSnvW8GII7DIDWpN8K5CrVIYgK12IQSYzWb42S9uDPzf/puz25lSCdF0P8cfTMsPlA==","signatures":[{"sig":"MEUCIQDS6r68IZu3NHdxpvDUMzLUfkDK1nWIUS6k7TqMIKEdZAIgV/xUK6CxepEtPrV69JSgKf2vCec5d0Qa77ij2agVOqs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJimOgaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpoBBAAlVDcmdu/uUEPkiXXbOOYn655kDNo05vzOztBwbXy3Lbn+xm9\r\naQkAfgwxvKfFw7OhdlsU/5Kex0JcEEkM0qFmX82fxjmLLAmDPlg9r16UYnFn\r\n1YiCU3HvJE0BNyunjCT68buMINeAwnYd1/AeJTGa2XQ6YJZ7psOsWaX2ecf9\r\nMOnaOniZI/HvyMCQ3ou0ZnBNYZ+JuD/LIwwlCd8ICK6PDejIQ/lwbty6goEh\r\nem2mibz4QrnoHBzQ/7JlQj6TbLE3iWjV3yZF7RzZRAcr/yweuHHgWj2CeHK4\r\nsEma/CVQXaCdGeWSUR9YiVptFuH87rMC65QoMKQ09WaBODJRqyFv4iGZWj7G\r\nj9IH/3YOirTK1k6hVfUe/y+GWst0/QDhVvWEn7mPL+Dl4nrmeSeLQaKBAN4r\r\n8nIyhausvCgTC3r21S3256g80sbY3fsRV2Xjvb90rludi41XJq9zn76wAFII\r\n385wKPFvuSx7ToZaqwSTCrJ0TzqwbQfq465moPGx3hr1P5EwXqrRmLpkUCDC\r\nB411Z+RnOuqVm3bmTpIzI0bPs12HBjQRbcQXZakNPWEaEhY0bsz25l/mxcIx\r\nCVma6MPQHfEj1pCNZVXWSP5um/Z3FKgjJh6fiVMTftaeQ2Ym9K0JxoVUqU4M\r\n6teh8Vvq6FiQvAl9GAvMb6fhTlEkxn5g9Sk=\r\n=1Kle\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":96.7,"branches":94,"functions":98,"statements":96.9}}},"gitHead":"3b552be92ecaac43f68b81e3df9dfe9273c8d6bf","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.10.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.14.2","dependencies":{"firebase":"^9.8.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.0","webpack":"^5.73.0","babel-jest":"^28.1.0","@babel/core":"^7.18.2","webpack-cli":"^4.9.2","jest-environment-jsdom":"^28.1.0","@babel/plugin-transform-modules-commonjs":"^7.18.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_2.0.0-alpha.4_1654188058496_0.8522378986554058","host":"s3://npm-registry-packages"}},"2.0.0-alpha.5":{"name":"@laboratoria/sdk-js","version":"2.0.0-alpha.5","license":"MIT","_id":"@laboratoria/sdk-js@2.0.0-alpha.5","maintainers":[{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"e1fd2f39044afe13c112dcec8163d26a72cd6337","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-2.0.0-alpha.5.tgz","fileCount":13,"integrity":"sha512-E9AEwu0QZu+68U7Nw/NYWqTLoYvI9r7Kd2fT7p287ofpMVXR00AKhk5f9CsCvMhMGGItQX2AU/S+8UeOADUhCQ==","signatures":[{"sig":"MEQCICIt/9iuoYGzQ9OOxQpIShZccfseOWs8l7U48eQ7g2LGAiBIswCrxA2EaQdI6SSLOhMbz6uBMkogn110rF4yFQ9WnA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJimOwBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo++RAAoHyp1duN0/y72UbHJM84gMLdmbVJsAYgUo8a5yE1D9PZXzSQ\r\n7Hxqi9vn/bRlKx0ygTs/6yNiJY2gZl8aKgTEFzJYu2HNiGWOyFBTkN9ysiaV\r\nVpS3MD4gmYEQ0DNssl95L36G6mP0WC/gej10ruZnAbietoxLynFAvMmeUhiM\r\n5xD2maoP6FuJXHSA+Szcd3ok3tTG1212gK7s2C/O/7zgTH63Ex45ZkOGrmsz\r\nEcYLrduzTeYz5ejybzNKMsxxA4007WBwxAhCd0PvzfS81AYWQy9h0MOG2Lwt\r\nq0CdMg1k8aFQLp1lvvj6VpVwM2JZNhb6n4W5wKQlnhqUdkbIUiZbBHPQ54w8\r\n1Nvrt1PJDyRh7x/S3wbGyARfF1ysYBMQPZw3JvP/sOpoNz37Gw7kJCTmlA1z\r\nA0kdqazbe12kLDD+1Lce+P/nOVq47oDA4aWZPOklU3a8/pslO8YgaskWSgM2\r\nE/82PJQfncI+x2MABLFjAB+6c8QZyB9jqpAtmgaumY9U8TWOl8HM2hjnD8gy\r\nkWdKzN6IGZdw771scT02XAlbnNcyogPd1egon4LvmFm+gHDz27u0DDePeGeM\r\nYM2uzENeZO4+z4OfM8ozK1esYPx4M/fNCp050yCM2fzW2CEyr49evQ0jCigR\r\n94v13o5qb12bgxVNNhzROnheAWrGHvpqzT0=\r\n=Kycp\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":96.7,"branches":94,"functions":98,"statements":96.9}}},"gitHead":"878e63c3ada5babd5926a2f0aa2485c65a0c6706","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.10.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.14.2","dependencies":{"firebase":"^9.8.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.0","webpack":"^5.73.0","babel-jest":"^28.1.0","@babel/core":"^7.18.2","webpack-cli":"^4.9.2","jest-environment-jsdom":"^28.1.0","@babel/plugin-transform-modules-commonjs":"^7.18.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_2.0.0-alpha.5_1654189056970_0.07804224782993407","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@laboratoria/sdk-js","version":"2.0.0","license":"MIT","_id":"@laboratoria/sdk-js@2.0.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"7038e11ef17349b70c875468b35f2113fbd9f7d2","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-2.0.0.tgz","fileCount":13,"integrity":"sha512-l71ID14nmTS9QF9oQHPksGhodSDQVr2MfVHqLanE+lyhAOHk07yHiT0kZo+yJZE68IYzooAu0NQnjeH7AB8B2w==","signatures":[{"sig":"MEQCIBCQRzNYlBxjNhKtiz4GqMKTqah4IGVP2yiwqtmdovseAiB/+GkURIOVBD4Htxcb/kRnuJzs8rHfMu4gjOlKXWtXnA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":43622,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqpucACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq1CA//bG+wbpwaWQAk4DCgsVj6NnCGJYlGe6jZrdZKyEJTeYprXCiN\r\nq9rCsPOlitS8Dy719+2+XPl1uCICjYD94N4i55fw3sMbaMs0zRE6gMCLeGi6\r\nAZCtixXAEYR6fgi1LwCW4oeo3JuIlCBGGtLBoxEuitQwTwTWSxzhi9QNAgOm\r\nQxYMOHrrCT9mgCS1Jwl+63Bt2/FLdR5SKPkwFZDYa4hhCN/r+t8GkNml6w8t\r\n2xGfSaOfzJpi3PYaVkHhyBZOxs9th5KzZ/hSFxwn7AkpTccO9lbSwfF3VjCX\r\nCYTIQg3VDZemvTGelum+8DUhEaXDOsCqBc+U8scM9u56rF/Vh9qZqLzswmMA\r\nCrw+cxVBc+8VIc+EPFvaIRiDFRing8hQoi4FIn2wFUQ+zHqn9YaqYzvVcG2g\r\nSTSMwF9Bs7d9Yt/9ooGOnCYt2GvHXQOhBF1Q4swgVTK6Kwfy/K2NAbq1tRyw\r\nfX1xDYtAZI7YD4wAqhWTxaaFoxMRRasx+4y72EMhXLQYlizOnXEN/v0HfKog\r\nMA7oV5l7UgcfLD8R1BQXXwvh8yvBD7vqgZ50a53JMx9Asgxs0IFcAZaDN9xv\r\nPifE9m6rlCNpQPblH8mJ68ujmHMB79VtlO48SmmXcx5MJXr0+38Og7Z4gXHQ\r\nYwI1GxczLWiB95nBPMSQSG2kLK4ZWBx1udI=\r\n=ue2X\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"cfcabff2617bfe8aa51f304e44bb4cb0714d7f8a","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.12.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.15.1","dependencies":{"firebase":"^9.8.3","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.1","webpack":"^5.73.0","babel-jest":"^28.1.1","@babel/core":"^7.18.5","webpack-cli":"^4.10.0","jest-environment-jsdom":"^28.1.1","@babel/plugin-transform-modules-commonjs":"^7.18.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_2.0.0_1655348123897_0.6343238976654213","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"@laboratoria/sdk-js","version":"2.1.0","license":"MIT","_id":"@laboratoria/sdk-js@2.1.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"faa4be07b13fa7a21ab02d138aabf0049c1b93ad","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-2.1.0.tgz","fileCount":13,"integrity":"sha512-fvXAoyBFw6WR1mIoKtSSx78/tNAqn3FoUQfHqf3+VVZ+AHKqBrmyMBoHlHmckDW0dRUhyF3o+DdGBIp+AQNX2g==","signatures":[{"sig":"MEUCIQDWS/uHhfG4nuiREELYKAOn4oYKFmOSKOa1t1ekXTg+MwIgSJsRMIvLuiswFedelTyrPNmEsmSWZ+HvlkFzyEh+Rac=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":45929,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJitMUiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqAHg//a2ckGSb5Vt7+N9knz56oE4CVg65G0fZDqhmlhA/27kVx/d9r\r\nIWThtrjX7gMvNuuZW7KGP3gdUR+FSyhl00JYDGxu450PztUyPiKGfaqFet8W\r\nyoihCLoeeWZJccjzfBova7ljROMRnrddXA1GLhnrxY+Ilnj4yl0YNCXmyxoe\r\naaviryCCjJxRTAQALTMF6ns1teYCQAeQkqhPckqCHcd6CVXjME4RGYvRadSJ\r\n6BOE9k2dRR5Ra+rN4kk2/+u2hjyi2cnKqYqB/TJyKb62MSjTVyiCF3ZAkvJx\r\nawNocvAaB7dAs6ekd2sgWN7k/TFe3Lq+F5tC5Rl8Zo12+5fsnU25F3hrSvNS\r\nglsZclKiHqha99X1J1Co1FjNTOfR2FZz8wV5u8FH22Fr1ww7lc5n8DzSly9U\r\nVsac7fBIpzfkSLtfARuvjEewhGE0Q8yYhZbKGAbW/XelY8nf11josLz+tgyh\r\nphJUK5UiCOgjyKjrRB5zBA/yOtVNAZizvXk2IK44XuJiEyur/LrgGtw43Ppr\r\n93puHsMAQS//BVk0v/Nz9Hw3W/OgMpYiD1switr8tPvrbrFvkoRh6LeqzrqL\r\nzn9S4JaLtfztjHSzS55irjDX6IjiZTwnb1rPv7q8HapwalyK3XnCrJg8c0yp\r\nOv5AjCs5bSP6FB+q/fUiAX2FnsuU4LmRECY=\r\n=hgbj\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"89fc9f71768d4d332fdac53a0bc5e4749802dab6","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.12.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.15.1","dependencies":{"firebase":"^9.8.3","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.1","webpack":"^5.73.0","babel-jest":"^28.1.1","@babel/core":"^7.18.5","webpack-cli":"^4.10.0","jest-environment-jsdom":"^28.1.1","@babel/plugin-transform-modules-commonjs":"^7.18.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_2.1.0_1656014114094_0.8637323613202461","host":"s3://npm-registry-packages"}},"2.1.1":{"name":"@laboratoria/sdk-js","version":"2.1.1","license":"MIT","_id":"@laboratoria/sdk-js@2.1.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"067f3da456eb51d60d7d8aaa2b2171ddce5c686f","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-2.1.1.tgz","fileCount":13,"integrity":"sha512-NgseQmnF9g3T+vCotHcY4VMEGeejXT9ERFzSbuY97N2rEPbH3U3pmQMJnwK+NwznHVgAiUEw1+kmVBU+k24VNg==","signatures":[{"sig":"MEUCIQDveF5TnfG6hEOD281lo1kExug1OTpvR6Fvdk2Q6l11/wIgQ9GiNcywkExSfe5uD+xlSgRWWcdTnudMh47cVQWH80M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":45929,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJivjOLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo8Nw/+OHimjOV5rMTLOLh6qoKmEqIxQYus/V/ntVJdWTRkyRcNiqiF\r\nIkpUzws3m1KRc4PG3T8dbpJT9/XLRxl8qhPZE3XIj8UXpOZfk9DF+zavKKM1\r\n936yeOlAh/ihmA3Xza94WwU43bkl60KlYnj5GfjlAEGx64VzH16S7HG6dBeM\r\nzVGN2Z8OAsejVfkgQthTJE3LGh9EjWykS7xwfoDvsoAKsHm9+iulaX4KOBLt\r\niJItc927nQ1TMoHLjjrhS/wKUtEDZSO+7EzJJ55YtfO3NUyFHZQtTO0G9vsR\r\nOPNOpebTf6JLW86TFoKUZsQnKork5IMvC6N9rqagDs9oBToZhiXzUHfAZUx6\r\nOXlUQAGizcD3VYMxhkRX7KIm8+1owMPwpIPpoP2qLt+0anjKveCANv6MMOS5\r\nzSMaTHIT380tTdF0QhNMt6XuUI0LDFnpM57XlqY4p/fUTVY+F2QQcSHNIrmg\r\nHo1EYp7cVCzwsD5sC34hiJs98s65UNh6GVGZlT3KGZvj9m1IqkAU8HtGSqJY\r\n6xHi/EStxA+4EtF11u17wzjB9qUANQCb07sdBfmBV/B0jpVxTOXMImZ1Ao1z\r\ncMFkKRsNwZO9Qpg9f86y2JVmeMoWnK+ugAXTQXLHF6+hfrNxZhWTgl0EM0Kv\r\npy0TCr0Ki6HsYlNFS9AEwygjfBWD9uzT1JQ=\r\n=NIKp\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"785532103948d3c1017f32463a772ad1d218c183","scripts":{"test":"jest --verbose --coverage","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.12.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.15.1","dependencies":{"firebase":"^9.8.4","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.2","webpack":"^5.73.0","babel-jest":"^28.1.2","@babel/core":"^7.18.6","webpack-cli":"^4.10.0","jest-environment-jsdom":"^28.1.2","@babel/plugin-transform-modules-commonjs":"^7.18.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_2.1.1_1656632203600_0.6088150602715656","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"@laboratoria/sdk-js","version":"2.2.0","license":"MIT","_id":"@laboratoria/sdk-js@2.2.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"e8d509c9e0033fdfa7b0670ce524e4a839922355","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-2.2.0.tgz","fileCount":20,"integrity":"sha512-VzhMCb2yjQWoTYDrBNqWN0FZwC6ak0ixXSs1MxH501mLBAqrRg/jw3yV/g/AHlFwMDLwCyuCDwiUjT53BiSzWQ==","signatures":[{"sig":"MEUCIQCfLCLBOTIdaF1W/kmdJTkjPslKWoxLTa9oyGZ48iIvsAIgNVuU2GDOPpV2Oc7yB0hkKS4F85/TLwAEIU0dEZIt5xk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":286935,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9CH5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrZohAAge7SPE+U5FJLG9yzG5d6+6fK7l95kYKZzMbrAUT6WGa+CIa2\r\n9x7Y/SW7ZjZPxaVXok9i0y8STllBBOkMkXKJdWTOsfLOsB6wqZBiBPu+4zwR\r\n/P23wfDuTRiFFysLnRUDAnuJzckD5t4sq1REBKdNJ91PyCmeb9XUdSgnTRNq\r\nxAGRRFWBwuCFU5r11hjli3MY4N2wJ3N6FXgUSwlgydJM/v3zi4gvt7C674Dz\r\nVN1NXVJlxD4yQZaBRMm8WbbfQmCZUpzd/c/EP2oH2MJQcgH6U+iwhCXRUEkn\r\nhyNx5mY2iu7yCKAH4I/qwI41pgmN2b00eyePJPRSm3joM6HYbKNqxyWcF4Vr\r\nPXjvmQCA+gZQmFCJRgxx2s1AThMJ8a+1Vh0Zjn9nTcElyoNHTn2vQIRhK1Zj\r\nA7q0vwEQVKGonlddI7BqVVIB5rxDWcwkHgJbsUQMLQKJJeyQSI6pR6Lbz15t\r\ngaei7kJDIAVqZz74FucG13xFSWfssGvBORYCr17H6UIDzGfW0PxubOYdE83M\r\nx01ogiU0o9b+mGDVIApgkUe++kiWE5t+3E82wonarBsmUmrv27+/YHKwpmqw\r\nuWWi+b+tOJL8Hb0AiSXAMxNukvSzqc2oy0+0+yzzvfF7U6Krke8z8f+kplOQ\r\n26vjDSSrfJNnNElWB+P+u2FWf84l3fWkBIQ=\r\n=ZkbO\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"2eebe7674b21c53ceb0eada110c54d1d7bdf719c","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.16.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.16.0","dependencies":{"firebase":"^9.9.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.3","webpack":"^5.74.0","babel-jest":"^28.1.3","@babel/core":"^7.18.10","webpack-cli":"^4.10.0","jest-environment-jsdom":"^28.1.3","@babel/plugin-transform-modules-commonjs":"^7.18.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_2.2.0_1660166649276_0.9203667164553218","host":"s3://npm-registry-packages"}},"2.3.0":{"name":"@laboratoria/sdk-js","version":"2.3.0","license":"MIT","_id":"@laboratoria/sdk-js@2.3.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"676a3ca386c26acc0e824f1864b8f2e9c1543c0d","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-2.3.0.tgz","fileCount":20,"integrity":"sha512-30vxzs4q0vQ0JLJcclNnCY5QvueFGonfP4/qkBnunUZw3YO4ToZSYv/WKP9dk1iOq9lWCBgwje1kQNkI1yfkCg==","signatures":[{"sig":"MEYCIQDPjPikTlLujJv5YSK5dCGYXXit5GrOP7ODamRwp5dBawIhAKQAD5tBrPfAR1mznr7JRTtX+Ql2VQMYzcUcAikyiy2j","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":287863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi/5lbACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpzQw/7BdcnoFijZXM47WZT5BwCfYn1x8jVCsaUsRES7C/vvz5vTXeA\r\n8QKmY7smg/B1Oak8/uCXKhIQ1N+p+J5BV4hha0QJcHwXvtpyls7Gyv1vD1sF\r\nQkp/tWTfD6jhQln6ZPyittT49PTSNunc9rBmI5miAgmYgD1Ts6tEnwVvK5Yp\r\nPwEJZp6sA3fbBKlG7T28U5Xh467w5SH5jFoCpoDpq48GywEvNeOZiOYSQmhY\r\n6HbNKkDEsI/1l+iUSn0HydzV+ENxcG0qJoaXxdZ/WQYlVcXgkaPWzhIWYOrP\r\naY7pQrJGSz/yiIL/BiL81De+vzeJkC/TJguyv7gyXbnpZXIeMrwKQP4D6fIR\r\n/w83b9otVoGH41h9nX/sY7mKVwzChcaTNPfL9Ac6hLAfgDDflYoC7VWS8eH+\r\nMBDAoOz9/PyR5LUEI191NdgKAos+5xGXbAIpQnzmT1DYAoVLu/7BGBiVj0+h\r\nER3mV3LOZSx9+yqwyS1IY7TB6G2PskQE1dI6q8Gw3oaJcwLKBP8AYwK73b4i\r\n1r94hGUCEtjYrGK0uJISXM9TyBolG4z4vXYcu7k+KsJ/FUTAReAdXfjtr2wC\r\nAPMx+WOZxNbsLHjsNY+PZSTbFpZ0xfxJLQwPIcz4/tT153ef3D48lcCYea4u\r\nwi0QpAwLujmGwwIvtCpilVuAtbnpPnSsaH4=\r\n=nAIR\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"045bb0a448e5cb9ff6f1601166da97870eaaed75","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\"","preversion":"npm run build"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.17.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.17.0","dependencies":{"firebase":"^9.9.3","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.3","webpack":"^5.74.0","babel-jest":"^28.1.3","@babel/core":"^7.18.10","webpack-cli":"^4.10.0","jest-environment-jsdom":"^28.1.3","@babel/plugin-transform-modules-commonjs":"^7.18.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_2.3.0_1660918107290_0.9271622639737283","host":"s3://npm-registry-packages"}},"2.4.0":{"name":"@laboratoria/sdk-js","version":"2.4.0","license":"MIT","_id":"@laboratoria/sdk-js@2.4.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"91fca8cfd325b99830af3dc12a137a5c6f35b561","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-2.4.0.tgz","fileCount":20,"integrity":"sha512-+HGGzAP7valhwmLZHzK5HmyFzpV0fYMn/y8XLcibNRl2smb304cvnjCsv2j8W2i8NOuahOSfrLhQTECxldl3NA==","signatures":[{"sig":"MEUCIGuEwRKZGN6gjpNUxIjh8XYu12SYhRLtjWWdEfRL85PmAiEAhaX2MllT9xqUazY+GbPH6zqv3OyYIuape/i/4ttJeyU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":286483,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjBQ0OACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmowoQ/9FZmS0Og4PB6ApRaSGL4qSgqU5PTrpacxjnn4MhmlTSVtITqz\r\n5YEOztRBCLQEFdY1W2UnezZ3VW5cn+4kU14TACrShx3FaaLX1bLE7vRK5D0y\r\nq7AbI2Dt27LbUzt+ca1xPApwVssQqrtbtrCtMClb/OiL2K2B5+U1Sh3C0+oK\r\nIfKrNoRaGlTFiud3j2JQp1NQCDPUYY0VSKACc1476Z+XuDtIFVA3YNqfQriW\r\nb/tYFScQCnzsp0ZOHrC22mqQmAqJ9HPe7/ZiH26Js87qWG8y8I7Q2zxIXlyw\r\nBfW9jTn9CJPKMtWr4O3rN0XrMdbSt7aGY/lXrvZA3wYJ3T3JM4qUyMBUAdLZ\r\nyrqZ2kP2+mDvoKycIifxvDT+Yl9SgBtMb7lmX2J7kQ82s+qThLGYBD40xcJw\r\nvzXwV4E+tKXh1QGB5RfnScpY9vcTkJPdnb2D7o7K2oHae/egZbC+rQQaM5yL\r\nwsD2Ya5GcWGn/Pqp+0De9InLS/oqn+Tgc5ZNzR0KpmBnQHqdFC+xon315OUx\r\ns8aIt5a2Lml8+Fhwo2y2+J+BoN/ufcUlF3peiZpzTYnW53l5WPTcz8dIO0Xl\r\nK15eFNWg0dpcHKZepwRvHe1Za9kHNEVEY27BRGp48LbYlc9APc/mUwA66F3p\r\nSEuAqh77fiX7kSsG+QgOmIaSSB6r3mEyVks=\r\n=i5OC\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"298c861af766779d43959ea622d2b5244d3f35b3","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.17.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.17.0","dependencies":{"firebase":"^9.9.3","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^28.1.3","webpack":"^5.74.0","babel-jest":"^28.1.3","@babel/core":"^7.18.13","webpack-cli":"^4.10.0","jest-environment-jsdom":"^28.1.3","@babel/plugin-transform-modules-commonjs":"^7.18.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_2.4.0_1661275406300_0.40005215192145926","host":"s3://npm-registry-packages"}},"2.5.0":{"name":"@laboratoria/sdk-js","version":"2.5.0","license":"MIT","_id":"@laboratoria/sdk-js@2.5.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"9c91b156a7c22369237a4085b907b1c028a54bd8","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-2.5.0.tgz","fileCount":20,"integrity":"sha512-gMJI3Yo4j4mdQF4pPt6zpZFu+lBMze9sR4q2EWOWgo2w0D4iYp/dsSxRQZ/OLvCqk+WYDr4BGHANMaH1VD19+w==","signatures":[{"sig":"MEYCIQDr5u5vSFxw3c8kVJTHMeSEq9DWBKfgkU7yXC67LMfxawIhAKecwH6KE9LYuYPdYkZVnCkbN6Xfu3i4pEvedOGLORQ5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":290346,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjELnJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq1oA/9H1fR5F73yNuC87gd+3xfxrcbY6RLPc+VMM3Hm1QEiYubWdVS\r\nbo+aLB6o6Mg+IuRgiVhuACmERtbqc8N1/0BlQJo5xRBul4d9YxDPFGEJQCmL\r\nWUGy0180XjBWP/YJlmFGvC3fhO4fDEt+B94hZt8BpruVl7oA7YFKAz/hnQU3\r\n/k8PIsR4+wp1GIFylH5Rzc8blS0jkYBUB8vvk+jvrj+k5huZfT0uok2gliBg\r\nd6y3UvfWsPsuIK26FrYwvmagouVTMgJBymk4xrKtlPkp7JrSeHaCxSD5QtqW\r\nCQeqYlE/bt9YPYOR/kn/qbhx7k5UBVVCz9FKfVzmPb5VV8FyKyxSNroioWjF\r\nsibiWJAH1gP4hThJ8X49ySjZ5DVH+nZh+GLCgrU/9x8fvmh0yHjpFaAepR0w\r\noRVqyQdMGgZFSxyAhpBJ41TNHmBTSwcCcX9zrt3Ytu65YMQYQuRN2f9Q3RsW\r\nUTGSUS0ui5luMogl/vV088eq3aY3zUgvqa/LyV2DhuJdJvqHZb1I4fa/AWLp\r\nrRe2A7qMBMZly/ILoehctT9lmAQ/CSlcxmUcT0QbaUUQeON91/kyIt1a2XGM\r\nBXpPvoitutZFkwhp5rwepiJYKvfyDMHUdnl61uyeGPT8y0dmkOVIMIHRwU9h\r\n80JXOqg5jXWLTjfOTe3EzvR+UGGhUxy1lsw=\r\n=4+e9\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"8cecf4870c567fa19418abe396e7b1bfc74b535c","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.17.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.17.0","dependencies":{"firebase":"^9.9.3","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.1","webpack":"^5.74.0","babel-jest":"^29.0.1","@babel/core":"^7.18.13","webpack-cli":"^4.10.0","jest-environment-jsdom":"^29.0.1","@babel/plugin-transform-modules-commonjs":"^7.18.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_2.5.0_1662040521740_0.3917857159795719","host":"s3://npm-registry-packages"}},"2.6.0":{"name":"@laboratoria/sdk-js","version":"2.6.0","license":"MIT","_id":"@laboratoria/sdk-js@2.6.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"1c31bb5f72fe206c23d0dee568b29eea06480e18","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-2.6.0.tgz","fileCount":20,"integrity":"sha512-tP4lJfatNsHUOaywIaRiTpnhot+J8t28nQmDkeSZi1okxDwvxhjYEDlCoCTlShGFWlXebqYnQ1HrVg3G57sfkQ==","signatures":[{"sig":"MEUCIQC8mp2tXimmZl8y+oSz7knK0rnY5CrttkIUnWi6YQIBggIgbu8EpEt7kJMwHnpGDbMftVZfkIlTCLobQcNCM0Stawc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":294012,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjG0OvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrS7A//fX9Eg6N49Un+RJANeL8+p8fEmzHe7K5zbBKMi7JTUe2qbhgA\r\n6KU/1As0ARVCMxShsdkBJdLMGzY5nCaa60z+Cg8PaUXXHDLXEOsIGJaLpa4N\r\nK+156mXsIAQcQInYIgOnEKasE+R1QyWLaBB2K1NJgPvQGEJgmXoRBNuAKIwt\r\n/HZXBG5oOaBmVIRMVtEfRkqxc9yRFDXDaJ92sJHwAoTPmc3paffC3/kk2fuZ\r\n59PbmaLa1prEtIJ69o9/yl6chkup7BOh2hZGbf74I+fvdzCWFosmoqTOB5bu\r\n3Xn1zFeG0IziufnkD9O20IFrfo+jkOlrjbktIkUeu8Gfl975gAriE9QF1RR8\r\nZWiisF2BPOd2DsZYbhbVgdnYDZJ0qfyNfT9osT88RzWbkNNSv7ecYEPUA1sZ\r\nGCaOFLtI4BLyRdTHH5kkD3CLmJ9VM3+WgaLt3qcYa+eO7G/AbobCeVFuOsLK\r\n/vHhDe6Twnh2eunO118YKn1eXfQgMvZxVMXEAv0TTyeWodzfrGHd+3neDJ/i\r\nElvEvFAm8+fHqPlNEGRCN5JZOhtqkve3H0FpVymKNb75NnqbCoBvKJeJT8dD\r\n3QcTEc1vVXzObLlT9Jr+xnA/b77pzLwz+HWpaFK6GIWvZMa0g4TgZ2k1sRBX\r\nT4kusfPtzt+Y4PzRpmVt2MHJ9tTSvDQ8FsE=\r\n=BmjF\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"21d23a1ba7278289d4aacb7926009974139169d8","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.17.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.17.0","dependencies":{"firebase":"^9.9.4","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.2","webpack":"^5.74.0","babel-jest":"^29.0.2","@babel/core":"^7.19.0","webpack-cli":"^4.10.0","jest-environment-jsdom":"^29.0.2","@babel/plugin-transform-modules-commonjs":"^7.18.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_2.6.0_1662731183117_0.7731322717697813","host":"s3://npm-registry-packages"}},"2.6.1":{"name":"@laboratoria/sdk-js","version":"2.6.1","license":"MIT","_id":"@laboratoria/sdk-js@2.6.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"3c2eb408be149f891921372392e01f9cdf748259","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-2.6.1.tgz","fileCount":20,"integrity":"sha512-6QCvSWG+hRkgE5/Ttjxx4Clp4y0aMCAXWHIqOv0SylPpFrA+OtGYxOv7NI0IRler7BgkgtLAPaBIuCKbS2zH5w==","signatures":[{"sig":"MEUCIG8XhtOfE0BCx4fDjwRqhH/+A5cOXtkPqAdzcGuEQGDNAiEAmrTAYItQuEIVmdnSqcsVTz+95nceO7fFqwE+EHHXwjk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":294067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjI4myACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoCww/+KoJWOpZwaIMPtAbKxEYlYb6UOiSWMlqexaP/u1k0NXm12gKx\r\nCCGOxBW+mo/7R4AP0Fc+CuUbN1+mu5MzNZ2oyhXfqB3Ir/aV4dj5Blgq3phl\r\nJWOfQhVage2nO4vy9POpSDnblTBZXXfhN8O6u4zRWinz8yYvT03eEtHDLm78\r\nnavO+LK6OYf/lRFk1SDQvvhf5ZRWEREnb2vmkqVr6sxg4VMHr1Qcz/DW2EtF\r\nahX+SVoeBRUOs/umSlANvR4/++H684tbS1ChpZiJisSgos0yI3gzcyTCGLh3\r\nfxSkybVjYTduAeecqYiqtr4d2ggr+MRups8yxxTOlOVrMiUgVZctozx3dncm\r\nBnY1MaR0EbDjTTxcqzEW9V8YyJc82OQY4t7xfpSucTi6mN4VXVSgHToW3K2A\r\nVSfFurTZ/pqrcjzO7MysdDJyN0aDmZwLlEooTpXUYsqTj2Y7QoXSGY5tubVM\r\nDDqgFa1IZkRSnCl9HCjXmnTLzOYNyP/yBcjvujd1hKyEv05MjvhU8k42BRF8\r\n+C1CzpVN6ShuKXx5M3AgETBlCJbSWdLjcFVUJhkTZOdqCFH902h3I0epkLim\r\nd1rN+8EEMYtUQmCmQcdncNGOrzI8N2xp1aQiV/CqTi39E7CzmgxUN0E00gYb\r\n8dkdXf+UnJqXVPZKLiyT67rn2fgUDRm9WH4=\r\n=5eRV\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"e671c5541a8c1e7caff33cb955696f263c1e6800","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.17.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.17.0","dependencies":{"firebase":"^9.10.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.3","webpack":"^5.74.0","babel-jest":"^29.0.3","@babel/core":"^7.19.1","webpack-cli":"^4.10.0","jest-environment-jsdom":"^29.0.3","@babel/plugin-transform-modules-commonjs":"^7.18.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_2.6.1_1663273394778_0.2404562599200024","host":"s3://npm-registry-packages"}},"2.6.2":{"name":"@laboratoria/sdk-js","version":"2.6.2","license":"MIT","_id":"@laboratoria/sdk-js@2.6.2","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"baf1971d5605cc52a78a5b67c154a643169eba4d","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-2.6.2.tgz","fileCount":20,"integrity":"sha512-SiOZGEgFktbJdIwEdb6ZJkGuyVOlBDUcEttGpPR+CyIW/pi7TzhHVFZZ4wlb93vdVMkFwrMsWigbPA70yVNcqg==","signatures":[{"sig":"MEYCIQC8vCfQbl/HKwVD32qfp1p2T90jX0dDUsU3JHEKfWoyxwIhAPiCY5t894waZ4zwwFmWpnZP/Dd10B9KTY8pKzuVOUpD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":300283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjRuNqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmry/Q/+KtJFEziFJAtd1fRgSSjboUFy/sziDLWvZnTBuAraBCavjfOw\r\n2TVYraBu6X4Vd5RjnWyvJeU11kzTSAe2nL/0BJkNfZ1uB2PgMt5ro4xmeuCV\r\nvF0JQb3KjRxDz+ey4FyScK5EnZePGSQ8zHYe4SUU80+LK91DUu5WyCaq/Wjp\r\nd+o/DFrPUaTEh23LQ5L9adFs9SHkpoNaxWOwYTItKyb63lrGpr2KeluyAayI\r\no9wOqEvYnm77cKo1zfIQLQJVxGgy3t39njSGN8QP/wRTw9o/GR1GFu0hvRbu\r\nIOwGUlGauGdVfrJ4m8MJ1CHvB0Ll5MbXSJ7hQoZ3eK0V07osw1g96yihILrI\r\n9pEDWk+L5lJVDPbtID6sufx85RVfvirDsahCVJv44DAvz1vO5TNBvUyZO7bJ\r\nurxUAD8XiM6/E00v0eF0yn4gVjL6JYnXG7htR9UlENRstpG0r2ix64uvXAOo\r\n5PWSsRusqt69I3dpM4FQFgJhuh7YaKf2mR17FhDMUc50+KRP2BNVK0Zkh00Z\r\nq6YekbuwYVSQq07fz2hZt80/HCbrDEp4kV9+SedgU1RPHkxdBczQ5guzBWn7\r\nsy30elLcMzIj6UbpCoofN/ipKNQ5E839eVXHMKv4xBVMI5opB701+wMZcPVv\r\nRqQwHtQdf4Db089a1yfxmgTJV6aQuFKvS5s=\r\n=MuN4\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"be33ce244a69ef2bc0e6e31d64f61553f241236c","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.17.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.17.0","dependencies":{"firebase":"^9.12.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.1.2","webpack":"^5.74.0","babel-jest":"^29.1.2","@babel/core":"^7.19.3","webpack-cli":"^4.10.0","jest-environment-jsdom":"^29.1.2","@babel/plugin-transform-modules-commonjs":"^7.18.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_2.6.2_1665590122202_0.29208369119765987","host":"s3://npm-registry-packages"}},"3.0.0-alpha.0":{"name":"@laboratoria/sdk-js","version":"3.0.0-alpha.0","license":"MIT","_id":"@laboratoria/sdk-js@3.0.0-alpha.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"d49975a252c4851a9da40876c16af7f41ceb34ae","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-3.0.0-alpha.0.tgz","fileCount":20,"integrity":"sha512-vQGSTEkU79kDD1tarCTVfFF1W+qUi8fOs1uZxZe1FHRrFTe8xZhomoeMTn8lMC+mlcoTnhzHUIezTlUniaaSTA==","signatures":[{"sig":"MEUCIDtSJ1hgiU193j2UShhHAXshBFIt+RhsSdfhpJ6u8C3wAiEAnX6Bu2RWAbhPu7PvMIwkbaplglIxnG8ybSjGsU89BHU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":308172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjbWtCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq7dQ//ZUeZou/3NoMsrcNttH11Fdoef8FSzQg3bgWJ5blIUu5hm8J4\r\nEv+DTTBrnEDSmBa7tN+3mO/5zz3BubN2qu7ASpGvqaBOyA6kTOMRA+McJIGI\r\ntETKVx4h9EaY9//hU35QedtBjXZMVKS5b96WEHebnJukakn9QlTNnrjx/IPl\r\nEL5Bq0qDWW2Dn3Okf3HGhcbjmIPaQXSxnCRC4GeKqSrjZGhily0yrxiMQ5RO\r\nPVa1jnUS2PmVYkeoPMgVsBUusyPjm0JYxv/X1hYx/LQeznLWBpv7S+Y8nf/B\r\nRHgtQLVSusrImcr7d0YbBQQOg/bT3+iBToQxMyj6f/uu1IwvmOf9kBW9eeIa\r\nvhRE+ruUNfa/lISv1dvkTxs0ZA/O/ELV4JFHEj+DXu8oe0LKBpYbmCUUZQfJ\r\nHbNWfw0ABfu+Z8jyhQ1LifZ9MGJH0i2u8FQm2WABLyg7IpUCcRARG6JYMBf9\r\nxe5eNOBnVMQu4uU4Q9csnZh+w+69I5WmOO9mbIH6h0DyuDvzMCHk0ACtOxeH\r\noGYj1l2ZWWT1c0bT8iTACV8tmylChRLQ9GX+N/pU8My9F6TVacQuCd8SHNBv\r\n1ySUhW4bw3PM22Tej0zui+4krkUi7nAQe84P8ufqppAEwmVOE+HC96mNw5HT\r\nZXxKsq96O5YVnLM000QXLtwy5paDZuwRiY8=\r\n=WTqc\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"f50fad61e3907639b1868a0fa397ecb853dbc536","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.2","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.18.0","dependencies":{"firebase":"^9.14.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.3.1","webpack":"^5.75.0","babel-jest":"^29.3.1","@babel/core":"^7.20.2","webpack-cli":"^4.10.0","jest-environment-jsdom":"^29.3.1","@babel/plugin-transform-modules-commonjs":"^7.19.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_3.0.0-alpha.0_1668115266671_0.4974254971601326","host":"s3://npm-registry-packages"}},"3.0.0-alpha.1":{"name":"@laboratoria/sdk-js","version":"3.0.0-alpha.1","license":"MIT","_id":"@laboratoria/sdk-js@3.0.0-alpha.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"129c5dbc5f8fdcfd763fe6a2e1805cb02597e398","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-3.0.0-alpha.1.tgz","fileCount":20,"integrity":"sha512-hCwJd+BdXKQtDBKvaPU+YCHJ1zGxFpgl0q73uhoJSRVGpqELnDOqxr/sMm+hviKa1G13M6FuXKI43TLvOTxRRQ==","signatures":[{"sig":"MEUCIQDNpTvPsQ8l0QyHyxcU1EIaVzSualTr2D8qZ8ay9be0FQIgAajpiVeKQMqpdTqzPyxlueEqFVcQ3yjK1pnDYtqAqK8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":310669,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjf9tkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqy3w/+P+oI7UxDKCanPlJ3qvptOTQnMc4sU0eSoGY9PdEOaBP//1Mn\r\n6KKqVMQxWk+ne9imYNbqVSjnxdmlh8+HhLZS5q4FPJh3Vlahz/phS6pAdB+7\r\noxEVJUoBFm+cZIV/X6dFtSRDo1c7DV0aerPBB6wNhHDWN8LP+J3WZsVDkAt/\r\nluH1uAcOlO0+7F8smyiybLNjwAkvZwbNfx/c2EoV+gS3nSXxD5c2mAvIuSnV\r\nB5QAQ0IJmn0cbtQDxbYJKNnnofWCN8qzDn1ULT9CvkxrbhjRP8IH6aCVor6q\r\nb+xsA2RHZ5u3FU2GYT7wEz6ISQhk4JT9643QrTsbs1o1c9UhzWYM7S9Y734s\r\nRscGdFLi32JP/3vgjArpcZBRJdYq5hCjGR9o2uv4E3ZLSTA/Hj0QEOn9mtdj\r\nAv7jh/lEt/CaQRehKggxRt1kTnWox3vhlB3FMb1BJMZJafVc6MVtK38lFhBt\r\na/YaDfjMwaJEXPGnsgPfJ3bNDFQMgs+EOZjPLa05z1qgmN+Q/8PNfs/PhQsX\r\nUQ5ng5IEwi+GvplRNoIW8P0yu9UxJjCPQnowdfzJk5GpK2Bcy78UmlDQynXy\r\nvIs53LN9QmwGvcuXCplaIS4a/p7H0kSLAq1zGPOe1OvxlGdO23RtdpvYK1yi\r\n8JFD/P3OFV1A45kzpJclqaIub442bI1QSpg=\r\n=Rdfj\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"d887c67e2639dd76ec83408560477c88650719b6","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.2","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.18.0","dependencies":{"firebase":"^9.14.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.3.1","webpack":"^5.75.0","babel-jest":"^29.3.1","@babel/core":"^7.20.2","webpack-cli":"^4.10.0","jest-environment-jsdom":"^29.3.1","@babel/plugin-transform-modules-commonjs":"^7.19.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_3.0.0-alpha.1_1669323620668_0.8417481484859224","host":"s3://npm-registry-packages"}},"3.0.0-beta.0":{"name":"@laboratoria/sdk-js","version":"3.0.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-js@3.0.0-beta.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"303144376f3b9e437b5df28962d59d4dc49eb337","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-3.0.0-beta.0.tgz","fileCount":20,"integrity":"sha512-1DLmqBvXZCX+u4FgerXtJrQ7PoMvC2bt+2/mUxMDM2NNDB2KczMwQk5R3jEhfr/9xZuAwOe6vvF7khvMHBwsjA==","signatures":[{"sig":"MEYCIQDI8eaEvlzrjBirVwVWulqrSllb/p9Ht8Y5KQyBVqZDNQIhAPRxRwRDBZDbzlhsXhMIlwptWxq6adoX4Kmvavk/vaZY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":310852,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjm0rZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmogVQ//dr5q4PyzrikFtRkEezCeKk7QHoZLYbi7NVaHV7jJ/gNBN3wF\r\nNnbqJk7d3ZhZoRYu+cks+taLtiF5/JwCBOI4VNgc5MmpM9fURXoC/+IPUYjp\r\n2eKNCJ/6c2F+J3IvdNS39/H8kp1AHfZG1JB2YSB2ZCaicIegdWEIp1K+4q+a\r\nS15BJQaj0WMJwnRUv2lyRk+VIQ1nssEcGdCa67zEF/F7OY37AhUMFQTEqmxm\r\nH99WxvlUalKDDjJB8HILCo6qGPFTX3tWNadYQdGPW9JJYnVlRn+EiH16JW2U\r\nCOv3PolPobe6zdYG29PwZE/ijPlft6kmLS49LDiL5R04oUlJPI11TMdtgnqz\r\ndG4L6yKKXQiek2LgJ+9+NA8jvojrj+AXyVtt3jA83lazqGKuagLndOfsn7gG\r\nwexoczB7gES8NvDpDa/0olHa218e5GclLgk2hBm3JLqzAbNO472iaL/cUmWo\r\nfe6gzB0ovtO2Q304ytT/UH4AV5FrM/lQaaz5olawgIIESXrM34H9VJAvFabi\r\n+Q4y41M9S8ZxbXVX6aQolySwMudjWasIBeGaGpbf5GxQawlidalCaf4FIuS7\r\nKjUuq9XutO55QwCJ9zuuPSi9qEPd2tN3L/BfffY+i9CIg2Gpvvx1GDXC+dw0\r\nyyO5Bf+02Z+JYHHG8NNE2CeGeuMlwQzu4fs=\r\n=ZiSm\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"b2328ecead6a6a414bb4f87d1ef8c515afdfbc34","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.19.0","dependencies":{"firebase":"^9.15.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.3.1","webpack":"^5.75.0","babel-jest":"^29.3.1","@babel/core":"^7.20.5","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.3.1","@babel/plugin-transform-modules-commonjs":"^7.19.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_3.0.0-beta.0_1671121625687_0.28719941907194624","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"@laboratoria/sdk-js","version":"3.0.0","license":"MIT","_id":"@laboratoria/sdk-js@3.0.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"afc49c87f00987fba676eead2fa128401f1332d7","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-3.0.0.tgz","fileCount":20,"integrity":"sha512-zpQkFWmq+UiwvYH+SH/m1GqU4dca+IrB9V3g1jpnorrcJcpdD2b7+/lbNeqK+RcgC3AZXW6v8hiq/rpRL4z71Q==","signatures":[{"sig":"MEUCICRx6BZLraevd/4Rb575Lp7ZRr7N8L9xY6jCGtkdj3xUAiEAsonMVqreE2zJrEf9cfASuZPQ/3yZg/gJqLJImSQXbAw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":310846,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjnQtHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpv2w//da8u4mTCC9VywdeZ1OJQu7uKDnXwXNXeZKMt1w59ITwCg2AZ\r\nxOphYTq39x41daEQLPYDLS5G0+Y+6EV6zk/pvujtWCOr04YAtXWUFzg+OyHn\r\nLqAF/zlkHFk4DJ/o1R9sC3wFRX8Fcv14HvWKoKTwHzTK0bEIWMln2vk7iiKL\r\n7Hh5WpTOrpSF93nkPFkQGpbdTGpnot82Sh6k5RFWdlhJgzFM7ibfw+C3uGRU\r\n31odc67qTJVCzamFs85SmLWcTx6UVgyYydU1K3ZdqvjBF0/PZZBkTTWYiG1D\r\nCin84Kka2OhVsClwZw8pvKOMgN5eGMBNaqyDdrxhp0X7BQbG61RFh2A9nI+U\r\nH1p9M5bSQM2AF1x63e6W8HWKVSdNxgi0OTYMrR+eCZgLCS6JJkpuOuw38MQY\r\ndakyRNiToT64cnGo0rFHISAeyRfxRaehlJEghxLtzN3B+K63k/BLJcnlM05V\r\nvnbuLmJb32g45fvbEGIYpWea6Qn39zAB+AzulysT9clPtubAY7U20MCEbOP6\r\ndKY81NtTO0ts4TEWwAoBoHsmIk8e5mf4s0YCHwt2nGY376udwY6oNk/J7a1D\r\nfEctbpFWJXkk0EfdkGLe9BYZjs7GJMx2Qjbab+S9MfJvon0Mep7G8Lb02RCp\r\nu3RCP/888p8cohDDKDPHmSu2/j/gjh9sTdk=\r\n=jNbN\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"356238f8b28253c8267289d996863a30f3eac856","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"16.19.0","dependencies":{"firebase":"^9.15.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.3.1","webpack":"^5.75.0","babel-jest":"^29.3.1","@babel/core":"^7.20.5","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.3.1","@babel/plugin-transform-modules-commonjs":"^7.19.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_3.0.0_1671236423210_0.6566967372445998","host":"s3://npm-registry-packages"}},"3.1.0":{"name":"@laboratoria/sdk-js","version":"3.1.0","license":"MIT","_id":"@laboratoria/sdk-js@3.1.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"a7ff04a508232043cf3719c4a0ed5a71212c06d7","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-3.1.0.tgz","fileCount":20,"integrity":"sha512-MBXtG/K/A66GJHyQnP8UUtfYWoZ19HP1Z/l59H5yOdAtncK4uUhNJjhkF2Xegk16gtoRU+vb3GTrJBLbjJT0Hw==","signatures":[{"sig":"MEYCIQC8+Oui5omKHD+SxfDBH6MMfp/Gvcg9BktaDHdnd4O0fgIhAP/QCX83xZvryfdfxxZUmDqdRQms5Dkf32/UfSkuMuNq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":314917,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjvEKTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqtrg/9FNDLZMUMNxxDaaptyh1WgN4yDRq3dmJa5oP/EUA0Yvy803ad\r\nBmCJ9leFPJW32T2AxBCEzt00CZLsr/zO/IjHUMITmh+YPrLbb3LK6MT3bpto\r\n4Ndy/nFDKAbvJ6RSWaOt71D8OqNJ8kc03TbweDxOrbY5VZLNtvb8gitjNIR1\r\nrVP4eapI0PR+oZ7c4tNbotSoAyanZ682ZXWv4lBmLRaQM9TkJLDwgEnJxqB8\r\nEBVPHvT1NXyhX3UomXUhgTdnABrp4AU9rxOJnSdrbZTjJXZC2fSI0PaOB9aq\r\nZRyKSSzpqfDnKSATjvoNzH3II+53p/T7q+YLLxbHOAjBLb/POgiUD6DXwXpG\r\noUZQvvesnKQvAlOeExeIvjnhXb5LAAZuwKDSj8L4VX80mSyOg6Hy5XG4/wGf\r\nytwTJE4/ffXWkzchmZsr3PdAU3Iab0s1OTLyPhcCm71dbTBO1ShHgLWL64ib\r\ndjX1UM8Qp/hEzmCK4cPNZrrbk576rZvctkPxphGys+a1740yd4eC0+4gNsMS\r\nxM1K202qZId5pPi6ODB0Jq92bZBlIjr95fFgtp5xZRZRyJDpa0eenPAF4si6\r\nlepSVrr7zx5P1ghcteQttqn/v9Tj93o/Qptr8OKybn0ed6BRHWWtSTMs4g/S\r\ntn+7UQcx9D2Et2Hn5UEboub/OgkygrWKZ84=\r\n=+b8h\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"22b8e82d9bd1d22b0016d8d69d930411a04bfc79","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.2","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.12.1","dependencies":{"firebase":"^9.15.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.3.1","webpack":"^5.75.0","babel-jest":"^29.3.1","@babel/core":"^7.20.12","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.3.1","@babel/plugin-transform-modules-commonjs":"^7.20.11"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_3.1.0_1673282194868_0.13656202273031504","host":"s3://npm-registry-packages"}},"3.2.0":{"name":"@laboratoria/sdk-js","version":"3.2.0","license":"MIT","_id":"@laboratoria/sdk-js@3.2.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"4edc2b0bfac499a3dd44d4ea06a9ea76f70ae31c","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-3.2.0.tgz","fileCount":20,"integrity":"sha512-uNIMUIvErGq/Clk9czJX6a8fR9edyZ+1E/LhTXgkvNP/rCjGcom+XTdHyJm9go+c9fRFdtaDWT52cgoYPaDv5Q==","signatures":[{"sig":"MEYCIQCdI2s0sHHlPiW2r9qLItSpFmBXEC7CL6CIYVKOK8OnTgIhAP91LiR502ZYz5aQISFihOMi0DibHuYCK0KKwUiYXfYp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":314972,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0EhuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpmRg/9HI52dKoUK6yuu9OgCigXN/SnxpStl1qSerh+/3B2fYFuL5Ag\r\ngYwQ7ZD+z4VwLbVrgk+TWca0IOXKwd0fNZKYZ4EK6hmknT2+zfckYeS0zmW/\r\nzZB5IelXyPI1JHBW5l8dsYyZI40a7+kanzyrYsICyW6/PIxqEfHu6zha1JRZ\r\nx7uclk+IkonI7PKsmYavLdRKivy39XO5sypr3A1w3nGslCMCxPU0dBWWDH5y\r\nc2ysmIvM6GUOcHGcAprzW5G9bUevFeoXcxbFMyJExI4OUJwgdVjnO0Db2LI5\r\nxzKdGxmFbbjKC89Ihx93pqDKN0CHU+l9/dUZ8rZitZWZBTErwtHnJcFDQV8G\r\nS75b/oyX9M8b3tn0//po/6yDeVygdvDXfhTmImE3+a7AJZ2F3NyoReSqyGda\r\nb1bpD+vPAbJAEZPVZlgkuB6M/VACuUm4b9amr0Elz8oZ4xXqr/9CV64DGtYt\r\nakNi6aNAFuhChs8S/Sf/8le6Tj5Z5Suw1SaVJ0cFplshDrSKzdZvYOMnjSED\r\nQXKAYaKphcfxFiCpjcuybyh3BrSPrXGzQVoRlwQhRJf8jxrqzZwEtgboU2Qy\r\n0PzJZ9cCt0kZ1vZVLudEnbelpCQ2u/wldtHvQu8e2gcwnTifXVqdfGlJmzr/\r\n58iCNIClPlA7vUK3b405PRnV17QX9zkNLms=\r\n=ZdRe\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"d2999792d5944761f7ff922eb0c09fab0aa79cf5","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.13.0","dependencies":{"firebase":"^9.16.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.4.0","webpack":"^5.75.0","babel-jest":"^29.4.0","@babel/core":"^7.20.12","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.4.0","@babel/plugin-transform-modules-commonjs":"^7.20.11"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_3.2.0_1674594413961_0.4983136906748946","host":"s3://npm-registry-packages"}},"3.2.1":{"name":"@laboratoria/sdk-js","version":"3.2.1","license":"MIT","_id":"@laboratoria/sdk-js@3.2.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"0fc8352669f52047044cd9bcd228c353fad6bbe1","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-3.2.1.tgz","fileCount":20,"integrity":"sha512-VTpN3IVjDR0z5iDfCbuvYr4RUwN7o5xLD1Pl2+g5sxdSCzoKP+GmKYwdmoyErslMElJbULTm4bcjuqWBihQ7yQ==","signatures":[{"sig":"MEYCIQDFWrxzHtB/82E7p6AJvgpwoKXQyh2dR1uRZqztAKyVQQIhAOMMs+Mp+l5mHxRUnaDMmnzFiCPxmwl5V9K1+VDiK5vM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":315022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0EoXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqn4hAAiEJ+vygwg6CW06vFFtTZFrXzF2RbWlGSWJBsrpJ6bW0Jikoi\r\nsH95i6Kqbtp56T3vbzcwePSPLXz8PpuYSKVCems6wSSxKZp0BUu6XAt7bzHK\r\nFOwgxBsURAQDl7L54Gfep42bBeqgGpDzYwCqXrG3Cy8BHX2qf/c7ivtJmLas\r\nCQwdocvHETKRiiXJeZ7iLDQaCfn6b9U/ZLR3VgdNP89/fZ3KhuwMYjN6n8IB\r\nN7Q7GkC3BrsYiLCS89A3WO58VR+K/gLPJqa5E6Z9NhrfSRCqw+ZHPgYcrGJf\r\nkCzA+Ra8ELtvgca5g0kGMzVl5g2cpwkkBoW/UiH9D9+ff3mFPpdd73JeyQlI\r\n5dQKXtrjUkeo4tb2Kp4kINUau6NXHi6j5/LcB2x5pOiAhoTtVpvvhwgbBv7X\r\ndrCNkb8stfoE881W40fX3VepPEDyeRwU1gXBNfAGGLTefaYRfdk1Al4SO6F2\r\nkbHBqKHH08nyTUjMRExql7QL3+2rNg6ZIcuYXg8R9gEd4GmK2q52OFxXogXS\r\ni9g3oHpHFyFHoNV+S4nlnIBVEfua9u7YN4wSBUHqRJ9+wldBrlTXiX1S5V4A\r\nvVf6RtgZYKQj4+aMsauePpMuG0NLmWxHgTVCSB4cB9pCR+WsjADBxT/7fe5m\r\nsVleAXZpXvxntvCXHQTsQNB0yjEhFr6b/mM=\r\n=0Ufn\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"a81cb021103b583f36f55e22e9840d2a6aeef49a","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.13.0","dependencies":{"firebase":"^9.16.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.4.0","webpack":"^5.75.0","babel-jest":"^29.4.0","@babel/core":"^7.20.12","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.4.0","@babel/plugin-transform-modules-commonjs":"^7.20.11"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_3.2.1_1674594839463_0.5659142191182625","host":"s3://npm-registry-packages"}},"3.3.0":{"name":"@laboratoria/sdk-js","version":"3.3.0","license":"MIT","_id":"@laboratoria/sdk-js@3.3.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"9f8098287efd9d9a725cececa6285f0b3c3640a9","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-3.3.0.tgz","fileCount":20,"integrity":"sha512-vKPLol+yxL6ditLgIJ/ailblXhgreuBYTdtxwGmTwBYRcJXSKC1Koe0CmQpq4VPX9kCfpzV4hIl068obUUGemw==","signatures":[{"sig":"MEQCIGqa8js8ezwnqY8Nv8IuPpBFOnpHARIjo70s9x1pTlzbAiBU8Mb0JFqObhLEr2+DbdluCL6ikz8XN+Hqwm7549M7GQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":317612,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj2Q+ZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp4sRAAorltIU//jLvrig9k59CQh5Ydd8+Tf6G+AM1o/cq2nQID6vJ5\r\nJAzdpvcLF61SzKvhd2UXlC6WNYYzODJosgbBqVRua3j4AlLQhs5GjKtVfiOu\r\n+/ufVwoxQQkMYMwWUMUpyg4s6lFwfguhS3gTCW6lvdA8w/0uQab/WC30uuby\r\nGq4u0S9fQIcD8d/Y5BEuQVFcO2GH21S54XYafnpZMLQY0eGRY4C/lnWjHWq4\r\njJCAIrZ2Tlk+Ov68ZGhtHtAkfP34mTjZTec2UauR47wcYuIr1zXjIftxqEqb\r\nyVr5EeTOmMytrSVdG1S6TvZxmZfhY74mHWbNmg6PDP64bPmyEvletjrwJ0yE\r\nYUyBL1LAv+rtQKmowhzQbEN7CVAs8BRA7+1BwvEAfhbMBYKV5E050H204mtD\r\naa9/lz/ptSpUPrDcGDBYrnBclxo8g45MwKk439VyqQ8mm0oQ8/GprmdfhiAb\r\n1OrOl07J46KFPzYgUMfw9/nSl2/0wR/EsNJZ55RspaHHPLbc8krI24yr6LV+\r\n52EgbhUsmEDc1xkDrLoLln8r7Fahpsj8c5MjqHX9W1Gcuq2+6F3I6FaJvMaw\r\nHLr3ln625qs2RFCib06V9xPSMRt0JC5eOyHjtTbfq3lD4wAcf5yIlhvIGE7R\r\nZ93RH6gI9aU9cy90+KTRKrQ8Idtzd88IstA=\r\n=K8wl\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"e32223718ca8080b552aba1e9b4e675308213fe9","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.13.0","dependencies":{"firebase":"^9.16.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.4.1","webpack":"^5.75.0","babel-jest":"^29.4.1","@babel/core":"^7.20.12","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.4.1","@babel/plugin-transform-modules-commonjs":"^7.20.11"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_3.3.0_1675169689477_0.7546339195404268","host":"s3://npm-registry-packages"}},"3.4.0":{"name":"@laboratoria/sdk-js","version":"3.4.0","license":"MIT","_id":"@laboratoria/sdk-js@3.4.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"ace53c805688bac9966153dd8124c1967e1b51a2","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-3.4.0.tgz","fileCount":20,"integrity":"sha512-TRcMBujc5MF6XAkx5kvhZZ+dXpvyk6+/MgI84/ym4jbaY46Jba1eT6k/1RvnOTOuWdml+W4Yta402oAxPOSiFw==","signatures":[{"sig":"MEQCIHja3gQCpqmgB0vVKq41F92/Ft1/XIWA2SKlEaXdgY35AiBFoZU1CHqBfCWzhiSbwS+3FJJpqAh4wlBPVmA1h16atQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":318944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj45JnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/Eg/+MRTnq4riBj5M0PxlTK6jcxrqWY6EQ3rbSjZXl5iFnVkjhdy/\r\nA7fcVQeAUCIzyhF2ARHgGyk3U9ZcwoRp6RkMTR2N91m3BEPgE8duD/MT3Bns\r\n8zPUQGpROuLFgAhD9oOkVmGxm97L9dm0Sun8T0VtMvQ4NiCAIsf+K2pM7DcH\r\n0q4ZjJ+IOX2Chg9FVG5AaTRbN3TWj12Pmt0DQ3b7yNhtckhEP6CluQA9vYjJ\r\nLM1En8EnaiKHvgzlx1IEzY/jrtWZJq15StyUzmA0Y3lfHTg6zNW3XQI2086C\r\nnczhScVtkzOg6VNxlJVibOwSEK/evJ7uK0FWgdVPS9QN0ut2LTjgH1WSkuCs\r\ntibdTzX5D91tarFItL9SArx+x34mpEpXBiAt4tY9qUWfkeWoHrM8jLA4mGuM\r\n57TalqJOD/Exz0ya8W8WLqwgicznW+v9eApw5lcBWzmx3EuOW2psVQ6BYi/O\r\nyl1GxeMdOORPlo5Gb4R+vuo0BVI+Fxh8PqgLMY0BStRptqxHOlxcpHdrmBgq\r\nqe+DDUmJ4bdT7plRuf4eUMJ/LrXGDCEjBEPIszewvjkVI3c9oAhhqM/mucTT\r\nmjxaYzO1Ev3CFh55irAndBHT+La5xpXn6yqAsPck3S5Qt66liGeQFFgzfYGG\r\nLdbGvYbb8X3K/NU4bJ0WUQY6s1awP5CfGFA=\r\n=M+bu\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"fd0e2384f0c5c24d02bf2d55ad4396dffda40e64","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.13.0","dependencies":{"firebase":"^9.17.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.4.2","webpack":"^5.75.0","babel-jest":"^29.4.2","@babel/core":"^7.20.12","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.4.2","@babel/plugin-transform-modules-commonjs":"^7.20.11"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_3.4.0_1675858535600_0.29606497447164215","host":"s3://npm-registry-packages"}},"3.4.1":{"name":"@laboratoria/sdk-js","version":"3.4.1","license":"MIT","_id":"@laboratoria/sdk-js@3.4.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"445865d1d2b0a111ec853fedddfe50c51bd2bbab","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-3.4.1.tgz","fileCount":20,"integrity":"sha512-JK3vb/wLIH8RsMzaYb7zMc9MUVZWwgIsuOSB98rS5f/C1SYyy3GOzq8Y7mZkbtia9eh12r2hJ2ByFxYRNZmMlQ==","signatures":[{"sig":"MEUCIQDlm7ekMG05Q+TfVl9xl9KdeIkr8QmS+DHG71E0mNPMhgIgKAZPhtrRxUbhCmsn8kztvLK2dB/ZTgXhaExRqG/RDJc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":319968,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj45KXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/cA//eFwtkoNYsz8EerB+S2R413NhAFcB8GlcvBwvP12BhMaX/fOr\r\nSAVOz8moJ88eSFp4KoUTu72bWbKYMggnV/DIOKuFqbjhrlAHdlqI9hUcDeda\r\nwL2d6HWBaX0Hg+Pr74xPZiGLHe3p1ANfw/nnABHwQVJRZ6GB58Eyr6FyuZCy\r\nk+jHEa/wLN+xJ+EJeBhzDJBvBoky00BAQFWToJxI0cXDPCnVSdCD/2Mk1aLs\r\nca4KfuUDJLhT96s2I4evw5JFQnc7dwpHuN4EIM2jmbbU82I/SqvuwNeGWuUi\r\n71LflzrS5I5tVPGrlAVtZGl83aztFnFA1QCzRfWGQ+II3Lr7AXi1l546sTxA\r\nHdiQl1FzPAApU45annLpIn2LUox5mn6M7EngX6dBYyGmNhGG4jnQRG2XgfsE\r\nvjl1+yi6OLXOrRf4QU3IVupjO3SP2osS8T3VJp7bFAU1BJifo4u8doqy47sL\r\nXQeLG/Xzz8dfCbjTIYs7+NB2fuv++eUYUwspVSDqP/3Hoq8oDZ3eOBZ2Cb39\r\nRZDyzNbxUzGzlbWlRFKJEqO6jgG1Y7eJ9KjhYAESKBYShC41dcU4PMpX/8G+\r\nSpo3OOiDGAGFQIgfP5TGiCLqDvPxPQF6XWGtlz4et0MNL2aVIKnrQMsvJuls\r\nPvljrDJlf1Cs+zI+W2RrlKhLmPtlLfoZrGg=\r\n=yxFD\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"7862902ed306d3d5af26bcb11eb81e2937c4ee45","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.13.0","dependencies":{"firebase":"^9.17.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.4.2","webpack":"^5.75.0","babel-jest":"^29.4.2","@babel/core":"^7.20.12","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.4.2","@babel/plugin-transform-modules-commonjs":"^7.20.11"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_3.4.1_1675858583568_0.7928445133647779","host":"s3://npm-registry-packages"}},"4.0.0-alpha.0":{"name":"@laboratoria/sdk-js","version":"4.0.0-alpha.0","license":"MIT","_id":"@laboratoria/sdk-js@4.0.0-alpha.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"5cfee0ab1d2c40c9cf27693ce2445c317044dbc4","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-4.0.0-alpha.0.tgz","fileCount":20,"integrity":"sha512-tOFPta0S3HHXeTGEMkLx41zJUrdtj4OzWRsxJrAhH1dRatxoi104OtBrOeE+ox/NWffFW9rPxGS9kVBwUU7fiw==","signatures":[{"sig":"MEQCIG6BnTMBfXJgGeLU/i2wRTKvQB/gr2iGMwr4zqFvVI2LAiAj7lwG+sQbxaBppumv/4Pbl0RJYMzl0kExhIcAukyFeA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":322250,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj66nVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrf+A/9GQkNoNs7qXwrGWysYOgml0Jyc1yMUW0v/zLVEpaMFMDWkNLN\r\n8pO9Nt20SxSXJ/+9j0QLLguEYg/QCcVuU8BeCxTVwCG/R7T5CmrNQS3LlCxE\r\n0yJJGKfLjTIKhjTD9aUD4cwhgCldSEAlnoT2zWUoL+snuPTZgs9rmGZ4DPFQ\r\nXhbrefG6uPq7rDJFAfN9fhyV1Dgvm9ybQlR/nTIyYPMrgpoNL4DIJzAWZIfm\r\nC0MMKgpSIHPnEQGEUPVxqk3ZO277WraHbInC7xgITfSZdo1bhNzdnviGG313\r\nj404zdsAL4eOlQ5bvKg6ZnSH2czX8YUUPPIaIJA7VHjrmGKF5GIuRG1AYALL\r\nQsnRhzZtKrkfHFQxWAw0oXM1yvB3v3743rG4UNa3GDlZHL7viNf71BYt+9JK\r\nE+McRujLJHVZqOleym/Y24A2KcODFgGHbUTK9GNC1rcEO+2/N/XQSUPkEOt9\r\nwzMyJA8RXWQpWPoiusZ2fdCQ+VcRsiwadCG6sANrbMkVUPgevz6Z6O8BYL6V\r\nz5OPEE1kB7IIVR3UKq85dD6nK3yvnW4WNXN6wG/08bTQkUFHXadQ4QPMQ3H0\r\nxSnuYbaDF7E1uSXeA8G2WP1eYICaD3Me/IQeuQtpTgYzLKEQcnFsSsswUDOp\r\nJvrtafDmXPjexdFDGMYnnyhKqCBy0uzm0k0=\r\n=XPog\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"9899934960d4e20aa2d5dad492404caa7c8cbeab","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.13.0","dependencies":{"firebase":"^9.17.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.4.2","webpack":"^5.75.0","babel-jest":"^29.4.2","@babel/core":"^7.20.12","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.4.2","@babel/plugin-transform-modules-commonjs":"^7.20.11"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_4.0.0-alpha.0_1676388821014_0.9186380694012937","host":"s3://npm-registry-packages"}},"4.0.0-alpha.1":{"name":"@laboratoria/sdk-js","version":"4.0.0-alpha.1","license":"MIT","_id":"@laboratoria/sdk-js@4.0.0-alpha.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"66856c98280ed4f4280e78b6e4c3a24063599247","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-4.0.0-alpha.1.tgz","fileCount":20,"integrity":"sha512-SCVfgOTA9wiIuFbVkFNEbAF8MkWcOzv+6VDUGzlgcPRuCJhaL8olcwQjD/on54BfR9p6w2dCZKw31ZoxOtU4AQ==","signatures":[{"sig":"MEUCIQClSybFNZI3b+2jRHWA1nsk2TAG2q2sGKjemTrsZFc8dAIgEVN+Pt/6QMmOaVJEgtdGOitlvatAQ/pHFpGWhYUkjbk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":323335,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj66oCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpWvBAAk8dx3mjMgiDxK2YWxHDYTLgNbceJOH/d5zjgUFthwi8m3SmC\r\nNPdzels8G+3bZd0sJvg4tjDHxfffFgGY+7V1SpFONCDQcvT5gt/rnZ6j4XCp\r\nrt4azuSlfsCOHDyx49J8QiIZO1irA9B7IAguPXwKK1MMW1jbXQNdOxadhOkD\r\nEu1e0ot4LHnOIrDlldQjO/2KIf03bSmVnJrMiU9xlGut4G2ITtc8Ze++b79F\r\nA3U4mS6t98up6+dXypwYRQkJKnWLxuzzICFo68aQeKLg0/juzDEaqLuTIFTl\r\npAGOiubtOAjpWWoTzkQ/3pyQtc9obRpK7MItqEXoBUsv30KoOH89jWoYIhup\r\nM+UWnQ48yQi4pv5uHppdQ2lSOBfLSN1H5yI/31Qy8L1+3Y8Ydp6jCpchuBmS\r\nYOIBKIh/dMw1KrkGr9mgDmT/6fnpbJ4hvnQvbtB3Pq6xSAFpDu5qVibuAqDD\r\nfHMOdQ8kxbeqRccuxlrpi7sZvrYfQ2WPFBPCvxh93BOozRoWtYLrH8/qEt0f\r\n/ctCdud6Vv9f08kqUi7N+ru5/WFSkj5E0aMuMWGdCo0pMfohCNuJu2JRNy/a\r\nHaKJVV0x0nVgW48ATS5At0sp5Gumm8TNgXH28GtNki8grTDSsUay+N45EQor\r\n52XYMh9LUH5WSj30ledTI5bEACvSVMD5QuQ=\r\n=Br3y\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"57dc136fae2afeef6ed57348d4077fb10a471c13","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.13.0","dependencies":{"firebase":"^9.17.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.4.2","webpack":"^5.75.0","babel-jest":"^29.4.2","@babel/core":"^7.20.12","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.4.2","@babel/plugin-transform-modules-commonjs":"^7.20.11"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_4.0.0-alpha.1_1676388866648_0.8913381941396794","host":"s3://npm-registry-packages"}},"4.0.0-alpha.2":{"name":"@laboratoria/sdk-js","version":"4.0.0-alpha.2","license":"MIT","_id":"@laboratoria/sdk-js@4.0.0-alpha.2","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"7a0864f3af9784ffe001e1746442ecfe5b3b2b40","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-4.0.0-alpha.2.tgz","fileCount":20,"integrity":"sha512-/wpzfau1lZ3G4eEf6eNCdQeyeQSUrEfegUU/CzWhqRaBhLWHWWASZc4L1YloZOhY+JTTr13KsfguS4sXwIDg1Q==","signatures":[{"sig":"MEUCIBrDNRduDv+qDUoKImatewS51YG/x6H2Nzp6LLVNvtOgAiEA8LsDuid0ZL8muvcpNR5uXBy+x0dUqe5HNQtKBo6O0Tw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":323335,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7B8IACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmojbhAAjc7rs5tJJO0w89HW5msDROdMPdmuSkVVighuKiiGnAe8WgRg\r\nrfrmfKga88MzwnAs3Bv7fVem+byw9fZhKQnMU/YpEtBfieqZyBzb6uQ9coDH\r\ns9NyWL063ayrUZAnw3A7xx+1qYqGIfVOL2jc6OYlP53km9KxKvBpqJPAZUjB\r\nmzZZkXmO9zmNXpGYlk4m8apBtKPZrIj0aIBGEs1Sapzno7EsO5l98wWcu3le\r\nh7gZAoatE4we6KSjMXWCn4SsSgQAoEAg4fQOf+G9Tbu9PZCzh97VPauikXx+\r\npnuGgM57lY66InHMuCotGfoAXROJ9n/QasFB0FrzMJADjmP+zyHF+268AofC\r\nXtrYtHZ1rWEAzrbUu0u7PBNzFeQ/h6WUcuVtWwkhia3AYQRi5MXniz1s/ijo\r\nNhxCngW0CfQZYCK5goV9MU8KuZhHDyYqN7c1h8ajOS8Sael4wgL1Ut5MgbOM\r\nll+ciGH+TGHzB2tJ0uspbpZFyD2blgxbifiMf1DOtnb5uhsK4ksC8pQ44adR\r\nrqTWkOAW8s0DvinM3LielYTYVQJ1vyo+pFv5qcB5R8t6/j9Iz9W3VpgqUWIK\r\nG/KQn9Zh+yzl4J1Kj/EW2736fzg7FyYc41wk5s7o8fFRHbmlyEJepdxJr+sD\r\nfQhzXYXtsTsjU1HuPAVHCEucSY/F9CxKdZ4=\r\n=SIsw\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"ceabb08baeb9ca077a7c081b833d96502f64b122","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.13.0","dependencies":{"firebase":"^9.17.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.4.2","webpack":"^5.75.0","babel-jest":"^29.4.2","@babel/core":"^7.20.12","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.4.2","@babel/plugin-transform-modules-commonjs":"^7.20.11"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_4.0.0-alpha.2_1676418823889_0.04188873699224693","host":"s3://npm-registry-packages"}},"4.0.0-alpha.3":{"name":"@laboratoria/sdk-js","version":"4.0.0-alpha.3","license":"MIT","_id":"@laboratoria/sdk-js@4.0.0-alpha.3","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"2510fabf28c2ad361e8638de7e05d697e553db59","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-4.0.0-alpha.3.tgz","fileCount":20,"integrity":"sha512-VTzArnPTg8j9K4EIbLXy7FwVyOzJHoGdWdogFeecSfhvlqMVgwbpJ8GUUj7NPLit/9zssiI4ArNTSsBfyfaREg==","signatures":[{"sig":"MEUCIDyifiYBcDQP9GF3kP7TKiW8NoJY5d9vkzaV4sl26/PLAiEAlLzozKDT48GFpxBfipIqvVZiIEWKtcDA3DSgbQcDb8E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":323335,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7TycACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqodw//ZucZx/rq0UYcpGaWJaHXTO8kGDGCJfR/tslEBJxWn0/fkUXX\r\n+LciLysJsMf7exs3b3/KfKVVIquK8bbq1AxKJQ2WJzeSBxDsYFoIBlU2wT0O\r\nf1eOV9+jkA2HYZU3jFkH6yorCWce2E81nF/p0L2vrDMuZ55oO93me0FOE2pi\r\nmWObZxPyDX6KVDrv1V6lj05vGNf+3CfOZyL8nhMJnj6AfzWqA7ml/yyxEYtd\r\nixy95uErGnU6EfLk62Kt9gb2eH+PdJ48lrn4MoEaTVtooiIRfUItA+IweIoM\r\n3CtNfFPa7VXNtBOJFkyi4/WC6uO/qz72Er7DQOGuKX0Ri8auIFGg/NfX3xQ7\r\njdfZ0CWjcvzkZQ7vykwRXXiO7RpXCCkLLUCzLukQ7fL9PM488xeDgiIM55Qe\r\njMUijQMK9P4DOmh469cTMWhSysrTPIDEj5hDp8FRpwY85ySOhMDUy/KrZDdq\r\nw42FmuZezi0An6RCJswh3fviQAssIXLR71ZYSKATik4a49e3vyFAcUAyLMaQ\r\nC2VE4+RzmVF4bVtRats2rxtc7dQWysGJ6XerHs028DH/1cV4PK3BXLZVKjBB\r\n9K6CHbc9fYbUQqNsmnnmFcVYp2XbDl9VLhFYcNm9E9Qb3VRHmM/Dn60lOUwj\r\nvGPgpie2zNK8zBOYbR5UAQCEdIaGIu+hZWU=\r\n=nGYk\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"0bafcd7d64ff6735d5bb9647a0f6a1dbc95576fa","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.13.0","dependencies":{"firebase":"^9.17.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.4.3","webpack":"^5.75.0","babel-jest":"^29.4.3","@babel/core":"^7.20.12","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.4.3","@babel/plugin-transform-modules-commonjs":"^7.20.11"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_4.0.0-alpha.3_1676491932660_0.35996269264097847","host":"s3://npm-registry-packages"}},"4.0.0-beta.0":{"name":"@laboratoria/sdk-js","version":"4.0.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-js@4.0.0-beta.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"adfb9c10e257fc8c20484eda67ce345a0bd610da","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-4.0.0-beta.0.tgz","fileCount":20,"integrity":"sha512-a3JCGSacPPAQrJf5uG0KMSqHA/Y7kBlnUcK+122K+3gEiYYLX1ihJLFmMgsOe4Z+efaHhp6VrlzsrhhT0TRbLg==","signatures":[{"sig":"MEUCIQDKQy448PITZWraH9nsqA4CCrivswYUEB5mn56iVQPJlwIgZ6J1RrS2KwtMvez4NmtS47JbNyxCtQrXoNaaot6eC4E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":323193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7+ICACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoq8hAAl5d9eCzf0YoGlb+4Wjpy7Odj0SIPs7KajDZpGeOw7X7jbiV9\r\nT5vF/LvXAJTmZbo3KVXBqinuFbfThNSH5s9fvCWNCNWUmA8QcN5/VKZpxvTN\r\n9pp24POcbkxSWThf29FixCy7qE8CL47n7jO1rGpkLiIForXRfO1gEay6Sgxz\r\nXfBcV7COjt8465eo59bTIUQDL0cp4WwiGPUc42CVaQt+hBWw28lVDi5G4kTM\r\nC8dIedbmn0mzlKF0otJ62gDiIwkx8FsIp6SvR3w+tThgDHf1LibGVEnhtfp2\r\n8sXMkl7bD1WML8UjqAqcrNMDLUh8AkJKztei9dj/xKISbBoEqMxyM3kMqGJR\r\neuFyFfpHJAZ7VLdHzB0QHMphZ9zlyh1vsBC/KJhytzboUqldxZ1Hb6rmFDI9\r\nsHPFBpNjEsH8r9NbOq87t2nfBk+uH68IM/8HEwH/e85ED3BSykmkaMkyKtFc\r\ngn8ZV5GEXNDH9ohsDEiPdDtVrni5Ml0hbEEOkrGWbvx7atsyqnHkwfKs9RcE\r\n1LJUNT5op8stGppIQvkY87/TMZzToYTw8g+0unTkQnAUtY+3VtpxbTXo88mk\r\nUWNuAebfUJoZk8g420BEsIJEl/iEDJ2ny/LM4PAglN8D0bvRAzRDxRwEkxtF\r\nk2Wy50H965jW5IIxjHzaOkYQ7sLYjLPMQMI=\r\n=W0Lr\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"bc4b2d02ac5486715a9c02305e09cbf0808a84f5","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.13.0","dependencies":{"firebase":"^9.17.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.4.3","webpack":"^5.75.0","babel-jest":"^29.4.3","@babel/core":"^7.20.12","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.4.3","@babel/plugin-transform-modules-commonjs":"^7.20.11"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_4.0.0-beta.0_1676665346261_0.43572623687152934","host":"s3://npm-registry-packages"}},"4.0.0-beta.1":{"name":"@laboratoria/sdk-js","version":"4.0.0-beta.1","license":"MIT","_id":"@laboratoria/sdk-js@4.0.0-beta.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"cd424b3c0f70608379a82500685b03463d8c9296","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-4.0.0-beta.1.tgz","fileCount":20,"integrity":"sha512-h4IEvCw7cm8qbiaAVx2h3ifwnJIFomM4Z5y8nWVggENrf/1HxzFTJAButyMmi4u67SE/5eHygWZilyRElMWSTg==","signatures":[{"sig":"MEUCIQDdkTKIttnSmgM3S04718farda3ksCoSYy+p8NNVwONJgIgB42TggRlQoGfzMkll0ytM9BbawCHc14uwJucUvts0sY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":323193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj9MWqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqVJQ/+Nwx2mP6audHZveUkZH/bruNZ1B2oimcTuwtRBvfYZ0BxY/5R\r\n0SNMTNyKmoX3E4zstJ+AcQYQ+NwZm5IctyFp+pCY3YDW8HAGbyKzLX31VBBp\r\nS7Dd6MR7xjMALPWwWW1utivZ7dwhXS1YNjXM2Up+0zPtQC5vR7jUo0awEAcT\r\n8BqRqpuo4SuUdFkkdDu/lVSIK1bfZT5ilsJheDNA1lkXgUldP/sJndiyMU+X\r\nwLquZpHWchjaNr7OnjO9p7Mpi2wkFmK2HLvVG5iXjVHpPZxRBgHslzXRqKv+\r\npd4ibCJMIQdp76+TGZiFOjgqA90c8Fe7m4zqaFu7OZuebG7iFjJ4BhgmBnuO\r\nmB247UsQC59/yJYhZ9Xab14m3SgkCRasMgYAKQgw6rhwuJuHjWOecH2Km5in\r\nnBquNDvR39OmOQBxs5nT8QmYnaaMDAQAszX4oYIuo8gbjKyEZmUZveiae4P3\r\nr7JQTGHxsg1RfW4j90kB/VRREow7EPXmrpqjTzbxhCUB00GgVy6WVZWbmDKF\r\nvVO6XvDBrQxyGgUOuaSJDltIGIbsirDTbO/htkGJrEVPQTn9aYnSRks450Af\r\ndYFq1JMCGmFbwUvqGyZMxc0BOWJc/JxXYIhXC2HCaZC9U1PM99kBFkOiW9ar\r\nqo7gshLgKrdvMZrRIPR366+dHRrLi+LYdW8=\r\n=nkVO\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"fb2c724f2ce8a73ed286939368a16f8880b72515","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.13.0","dependencies":{"firebase":"^9.17.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.4.3","webpack":"^5.75.0","babel-jest":"^29.4.3","@babel/core":"^7.21.0","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.4.3","@babel/plugin-transform-modules-commonjs":"^7.20.11"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_4.0.0-beta.1_1676985770319_0.4451910822445855","host":"s3://npm-registry-packages"}},"4.0.0-beta.2":{"name":"@laboratoria/sdk-js","version":"4.0.0-beta.2","license":"MIT","_id":"@laboratoria/sdk-js@4.0.0-beta.2","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"dcdcd031750d6fc1acf4ee7e41781de839b6555b","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-4.0.0-beta.2.tgz","fileCount":20,"integrity":"sha512-zt781kXvLQ5Sr1ora9Se8drvrBOIBrp/WPkXS5RryX3jlOTY0yRZBr0fFJzqP1kjGK52wd3We0uyGXUkcgBZCw==","signatures":[{"sig":"MEQCIFTp4b4Hfb/6e/DQPU0OcYlmTf+bS69ZrETKZrFAFAuhAiB5k7KjZf1+qF8KBF6DX3SGGfTNLV8PMx3/rPRPMzULQQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":323414,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkBvoCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpNNA//emXqdkHbj9SGXfJ0OqBt/k6VaV/wlE0Wq5cCmWq0JaXk7bzw\r\nV7kUxnGrvNa1pFJfvDWmXVC5N5OyBoEW/BtcX7uEMjx9RjMh8XDtrSvrP2b5\r\n6cV60IfRjCJLaioVADYbmgjji9KNEnetDhjQ8DAUbbil2kVIN9lVq2r4tXvr\r\nzDXv66lzQj/YPuIGUrmjZQvx8/0uo7+dZt36p183ryfCt3H/MIGZz3nok3+e\r\nJAEOCyh3iBQjcNoeW7VsbC1VcqsqmxD05FMsYx5B6DAPHR3DZkf/ii3DYW02\r\njoIxpcFww5ZoT8GfsVe57l0QXMvIxDS76tGb+Fq9CX13/qJGEJ4bBJVMIwRk\r\nQj+GpMDja5l1lcXsaCStbLW27UYkTZ/V01k2CwsnRN8a8TFp3KisMkLIj9K8\r\nB9fp/zyD1H6OV8EGAS9/rrdtu5WinPlXSHtogGPzLS23w1azAP0VxvSVVAmO\r\nWONAW+bMw7yZMa5y1EfeuD6gi1sqSNtnSZUQqnfvLLpCauP2jvUGg2RKJmnx\r\nzURnlGIO5109gwSGMPxktTupXCCffG9lihF+InBPfAOujEYLi388qg3/4OiW\r\nHd9X3iDwoqNKorNJ1/Qrk8XCe07LIxDKSqrhjeYhYGgCLNYDFwuWVTT/AIu0\r\ngVA9/1AlaF6tBaK739mCzi8gnA+dp7AkYOU=\r\n=MgfU\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"53f47a2d23abd6162a2b5ff2876f23020c514183","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.13.0","dependencies":{"firebase":"^9.17.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.5.0","webpack":"^5.75.0","babel-jest":"^29.5.0","@babel/core":"^7.21.0","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.21.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_4.0.0-beta.2_1678178818357_0.09907209569528574","host":"s3://npm-registry-packages"}},"4.0.0-beta.3":{"name":"@laboratoria/sdk-js","version":"4.0.0-beta.3","license":"MIT","_id":"@laboratoria/sdk-js@4.0.0-beta.3","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"8dcd575b2a24e7dc08c35d2fe555cb01ae772884","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-4.0.0-beta.3.tgz","fileCount":20,"integrity":"sha512-LQplICL3tW+8kTyqf+fzpYg+W93xsd83N7DA+PoMiYVzdK40ZHDE3zmxaF9gkUQjjVIRaGFFqzN5YcwocrsvLg==","signatures":[{"sig":"MEQCIEXwJT7cWP37Nol1UpBFNnympXkLRlAbHLcGmzgxcv9hAiAukvvUF3myBfWxI48KSgvMlJIWQo5h15wWWfOl600q9A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":323511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkByh/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmquVg/+P75Qu1r+PLMeApEDJx68OGjwlKwTbe7usXO34mnf03fy6Dha\r\nziDKFoXiQkOSXSsnJqLPhtddbu2h4CT1hQlDGYnlZCKSMgL/slE344bp9BjS\r\nqk7JYSqI5s0DJak509c+Zs4j6B2R5E7nJYM5rhalghHh9OtgI3gSVoVjLXwZ\r\n8R0PdPmJqQYVKQc3Sk6L/d2WQBzwEIUfENWMD2Je8pl7ZOYlhk81XmuVzftD\r\nfkY5XgDksIBNNgZckyxsickmxPzy2j/hV6rLQxTR7TY/75ug2s1U+zRpVgU3\r\ns+yGOEXWJfMqgxyOXbtxlfsfKGciv1QmWW8mLDz4J95r3LCEWMq024hQUadJ\r\nA+574nk9Mmf0D+Fm9Cixdj4CNleQXASnhffFwp0wh9EWu8wO0YWwe4c1p7NY\r\nAvP2wqlQJ1oYXCT82W2reD6s1wlLbWhzrVeO9Os8l6NTZ9FwkpATIFMCcBr5\r\nNypO6VvcuSeh8UZXf3IEqDBiIYakFhiCensrCB8N3ez1rVcwXjuBA+zB58tX\r\n2RYrg0y7AGs2a8Pkru8nPwYAfB/sd3hJ+P6B3XDs29WqiVthuPGAuzQNYfuJ\r\nlHIRdy7uAXxDJFhenbDIzmDqgFWQVnrnUZWVyBd0q2gUdkJ2D8mV2B/1NDt4\r\nzcp592GYuCrb3TTV58Swl3iqsF5WtNe0z0g=\r\n=2fZF\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"42623eec1c63e7e8957d11f23f0b6a85240f11d2","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.13.0","dependencies":{"firebase":"^9.17.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.5.0","webpack":"^5.75.0","babel-jest":"^29.5.0","@babel/core":"^7.21.0","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.21.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_4.0.0-beta.3_1678190719758_0.9634166623412701","host":"s3://npm-registry-packages"}},"4.0.0":{"name":"@laboratoria/sdk-js","version":"4.0.0","license":"MIT","_id":"@laboratoria/sdk-js@4.0.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"32d8acd848f3c5386d6065dcd8fea5bd65070cb9","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-4.0.0.tgz","fileCount":20,"integrity":"sha512-xhjqnQZR5vTFBkFVImkMoQbiLcGC9mMRlOFQYUYi3fck+x9KUnCcLYVl07KYrdaMAg6Q37QF3RUik0JM+aqHJA==","signatures":[{"sig":"MEUCICrJVChslJUhjzZFbTXIm38uXV+6y/8Xtl4KsZ6plOINAiEAl1GEDo0MJ5wfCjW49qqBuzhSdp8AsCIQQdbzKv+fnts=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":323504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkB4JaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoEWRAAnl9URpT76rQ/QUBd10H2+i9y7qZzwPfFpq+AFv0mz2BD2M3Q\r\nHrQBnt4fgqSUpZ48m8EPh9RPAMcz5414jq6I6yvJETqC8zVf2Wqef7AK6pg/\r\nU1Wl6+7vPyfP0GjBcKhzC+J+qkgkLdSpvlugA4sLBRyY6sk3IduV0NwRbKso\r\nVx0ITYLxu976UlItzALtIzDFzq8VjxuvMwcyLUhfnoQJX1LigPbJ9wAPNSVk\r\n+UL/m+L6m2AFmatwLMEGCJ1zmygj/eSLx41i6mOnkQVC52OpgVzt3lVWhqat\r\nl4t0EczFBRlke0bG0Da7rzhWpo+iEEu/71FTxHnQUS8BkNXAnLiqR2/VEWRI\r\nt0b/kMUjUUtNvMSgxuPfnKYG1w66KY974Zcj0vRSELUABXikmgOs+naYRUNQ\r\nhKgeRwXlE8Hhh6OP1WSHzrGpWHU/3U7dVuDahRD8Xear+VAEh8Ik88JMKE5C\r\nhGqkFkizDeAY2qQ9wZco6PwlrIeMw3o0octJ+fv9p6lTBSgJrvawylKVrk9S\r\n13t2lOScgahfEW7va8vZUWIXolFtv2VQxQPwy2EBy/ymqKbzA3E1Aq3k3b4Q\r\nhTRJbRWvck3gnNYOapqxZwQfNh4TUE4tU38LnhSnfR9pdz2KkD6Won3bqJDz\r\nvn5mMzt+RlEghYGSPsKT0pvMgzlDAMKcQBI=\r\n=vOEG\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"132a068b588f11ea90a2919dab5d18a1d081c004","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"8.19.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.13.0","dependencies":{"firebase":"^9.17.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","webpack":"^5.75.0","babel-jest":"^29.5.0","@babel/core":"^7.21.0","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.21.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_4.0.0_1678213722054_0.06320814474497083","host":"s3://npm-registry-packages"}},"4.0.1":{"name":"@laboratoria/sdk-js","version":"4.0.1","license":"MIT","_id":"@laboratoria/sdk-js@4.0.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"4fc800b356eea687de24467cc4ea33ecb848ca77","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-4.0.1.tgz","fileCount":20,"integrity":"sha512-bwtNCgeKR7nq0nyum0dllSQhnhAK04zK4DME/owiftDsV3ZiKEKCkEKu9DxnUbiycfg/Kcw7Li6Apb19pdJiyQ==","signatures":[{"sig":"MEQCIBBen7LfjMHMSWi+tYkT2dPqnoYsHiWSq5eBhPVMSt4OAiAzFz7fb+YB8gHx6x9v8NPUDsK0xVyzz2PQRiLyHFXvJg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":323504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOTPjACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpQXA//bo7rM5ct0VcOE5yb9KMImJAGdkqI4Oc9ByxkkLxQO23K1FQH\r\nmlAT0ODjIaTIsMBBizgDeL849zX5kJXXWCp3cymGjSKxxGmb1T0OKLUvaTjZ\r\nioaM9SVdgFv277HkmZpYC53o1A2pDdFJNu3wQ7MsIzyyGUg1HltPUOAsw2mM\r\nmh5GRjogCM7fICNePPt6Y5ln3gX2NQGLKxvg4XqALXztwy6QYjXmwsTBzFf4\r\nj1zM7CeUu36n/ORRmRY10sGyz28n+nAGYU0VZ9Z4TOyD9TGuze+z0gzO1bb4\r\neCzVv2+1SWk0DmWJNMtYPCKkaffYPOrd/yP9baLgmkYHzD/7EMx18R9FxDWY\r\nndMsGop9vDA4Qqs8tXTRg3Awh7/+IXfVmwu4oJeOHQ3MPBGiw8ElydRDtnA0\r\nq9r6TCYT1Dgv7qu71XcyteuIJ9kb2CYDwq1PjwChf8VdpHxlfu/m+W1upSXD\r\nBMZeXuXmAujk/qaqCTOrDehjsmykpkgjPqpyj4gw1m7/B48pG9e2pBc4IqGM\r\nHQ/3LDdJvcUqpcXcTHGzJnVQdt9TkOpsGvUPqoICkGuItwJGvHsF5lEJQIpI\r\n0Uw/Z8mLm1Lzz6z7X3oGxoBVOC68Ce4yYYWQTi6RmBxBqx7fcSsHFtxRBAB1\r\nhcmA5EFI+zUu4FH3YtgA3zh0Utec7zSVDnI=\r\n=CAD+\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"ab3e2560e5f5c50e4f81e9dc56d3b99ffa4b0359","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.19.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","webpack":"^5.79.0","babel-jest":"^29.5.0","@babel/core":"^7.21.4","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.21.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_4.0.1_1681470435306_0.1732861161680026","host":"s3://npm-registry-packages"}},"4.0.2":{"name":"@laboratoria/sdk-js","version":"4.0.2","license":"MIT","_id":"@laboratoria/sdk-js@4.0.2","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"ff6aead2a88b273ddbc72e80a0be8c2139a5ad15","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-4.0.2.tgz","fileCount":20,"integrity":"sha512-SbsfWzw1ed8RsQ52Piidegbsp8FFv8vv59IIILbuhS0zVo6zkhOP5FUd0mU4GM3emlutlBfqjb83I2PCN0wzVg==","signatures":[{"sig":"MEQCIGDsZuWzufByegKEHHlMDddQANE3Gsq5pvEZ6WLxS+bJAiBK2QpsCZQoArHb+w9OTC+Wk8lc9FkKzN19OvNt5114EA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":323922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOTQNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqQSBAAnvBKJ8bU6eEXfKXUO998lvFoNGKO6dw11qGTf8VdZfR/8VcT\r\nqmo7RDc1D6ayZ++oDHvTdyLLAUHXE/i658ssP04R4K1MtqfwphLthPhrfA0b\r\nD/DaVLPb62pIJP8qU9iSe7dzlO34tKyae1xUUz67S+K7jX5FWzy/CSbrddKA\r\nXzjKrCmWRBOyAqIvfqVWabrYOjMWupFgGLshWqMazhEK0kqAhs2X/3tVPW+O\r\nDpzW1LpzDHCSSmNcwOyAJoQbJK6Pzr8L2XcfRX+PuZbmJYKFEoDTe/tnUcXr\r\nT4xyL7NOMYyt8PTE2NIR4Zdju3GQ5Zv0r+qVuRgr8h/dA9MlhnwZdgdL7DYx\r\noltYs6M0ieH0Vxer92E9ljBRGEbvFD9QlX0KEGkVgk86aYlLN+DmtkbJncZ7\r\nc25jffjDTwBv1NXFrle1XT8OOecVmdBNWrpcu3QdPr/GDHradPeviVP7/uvs\r\n4feeboZb9Zm/Yo7J9K1ZnIizgT6ThtF4x+rji2bzYJIU3RSJntlMmH7uyL93\r\nDIvJkzMXjkd6y6K/jr7DYaeCjVY9AKSn6B/VISVkzFPeIVbIaq04k5iwwGJO\r\n0gKQ2echixHqZomnvFmQLj8o3K4soGuWSr3ekWjF9taIcFWlEVElk8qyWzr7\r\negKdxF7uWtneYRVw3wdl/jHGc+UZb0LIWos=\r\n=/Z7V\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"55b5c27d094cf09263638b8581e592e4d50875f5","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.19.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","webpack":"^5.79.0","babel-jest":"^29.5.0","@babel/core":"^7.21.4","webpack-cli":"^5.0.1","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.21.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_4.0.2_1681470477455_0.9168024874595446","host":"s3://npm-registry-packages"}},"4.1.0-beta.0":{"name":"@laboratoria/sdk-js","version":"4.1.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-js@4.1.0-beta.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"cfc27edd91df049cc9fb073393062fb428175f86","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-4.1.0-beta.0.tgz","fileCount":20,"integrity":"sha512-jNHXZzhZDDx/yKojZk/JT0S6P/RVySjwGKKbSG6l7SyvUE4E3OIU8aCR9W80XFlQRIc2cmfm2qt2e6akxn/0VA==","signatures":[{"sig":"MEUCIQChX4FQIlsy3F4HC/QqJbfdsTDcU+6xdxTTpcy4kCXf1AIgfl4ncF4Z08xU0Ykvta4PxROHuCZ1kqnj/F9p9jQBZh8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":337060,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkRpeOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpRmg/+MFY1azYsKfqows5PuD+HS6JKFgKA+lbl7Z4wLnYKmKI3eP2e\r\nIS9euDJZvRdNQGMMKXXZvWQBOOPZQaIWHMuuIsUORxsKp1i08FQSVC05xXzf\r\n4g41L2ytI9UG4j2QkpAcltJLSoGbrlM39XE8TpY2+likg3X5Z5VWvNIkOou9\r\nhFBgX4fbDzgl0487zoUCXpxlHi+8GEX/oyIKvuVJl2REsuXLP3xku+0sdnpE\r\nPzn+kKy9bt/jAca7KYNA3KVGzxNLOFz1BHGRB1XkvYucjGJeKKu/ZgIQw8dw\r\nZKjmk0uNnaT/Yh/Ci7TN0wkqCMwUB71aHyfqjJzsa8nvVc/d9hizl2j8vnbG\r\n0mBxPjnKnMT16FAhVzhV2zxo43iSiwnPzjF9OnJmQo1EXnKLr5cl4HxUgqb4\r\n+uCKO0NXDBbsXD3Lmnr16lRCeF7X07ei248jwa86+kDqJ5/9P7wL3zoDpBNV\r\nJa6C7vV+wnqr+AjCxwIZs39zfJrXcaiN34WRJnKQamFrtvT7m5VerJT3uE93\r\nDVT3+ysn4BRgAO8yBXx1C0yYfc484kRmp/l58C2vzwGmOVLsQGA5TgxIPif4\r\nsv8LRIVPb5Ay7FVxn7DsuLacOq9fd1vrdq2vMNYaNt3cmSpQW62h65YdVBcL\r\nWu2XdTpmhAYY53cANXDTy+qxE59W5WjbcWg=\r\n=ouTb\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"583987e318d8c4c58fc8085b0acc12a85cb66103","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.20.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.5.0","webpack":"^5.80.0","babel-jest":"^29.5.0","@babel/core":"^7.21.4","webpack-cli":"^5.0.2","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.21.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_4.1.0-beta.0_1682347918331_0.3771800648553534","host":"s3://npm-registry-packages"}},"5.0.0":{"name":"@laboratoria/sdk-js","version":"5.0.0","license":"MIT","_id":"@laboratoria/sdk-js@5.0.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"2ce297ace0149cdadd5ffff912aae2599985bcd7","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.0.0.tgz","fileCount":20,"integrity":"sha512-yUCJcdorKRCg1WyTLUYkdZZslfcasX4K/EjdqbR9Mg1y9lL5gt8x1+5UpcEXjlNgJQpVWMBLFvmjmIKzBy37yw==","signatures":[{"sig":"MEUCIFcpVRFJuSFdJ5XcASu+wSf6cOPlJ7EoO2JB/IbchynCAiEAqKw9pnoQ261AsCgLPzp/43ju9nj2Z2eGuJtRdbMXMUo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":337054,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkSUB1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrxCBAAhggUAeAIkMXCy/hRGwpbay8w485Tmjkygg9/9EYT5+8mD5x/\r\nUq1MHFENMp1mHwhu+vKw19hQxCBme7ky2CLDMZqHFHHMHNgqXNG8A7mQHGTY\r\nDB8M9J/kwaXD4/5ADxqe+YRLn3iZjjm4fKb/wK2S2uyhJYSGgOZWT0p8m1Wq\r\nIMAY+E3q2zwpvmVm+Y6n4X3k6ZtIg/0gQZQuHjPS5T9GiqgiPc9VYuZdqSJV\r\nGOaAzW2G78JnRRKuiBotUPu7DDrkjL49IkVPX3bRwStAlfS5cPgt0Anv/Mub\r\nFf18TkLE/MRM6wIjxLU4KGSP7se1UZs7j/ShB/4TqA2nfk/KD7Vml+3sDQMe\r\nIzSXU1jB4OV/8sUPN0Lhp6qMdvTj/O7+ugKSw0TqWy3bLiaMS4PYktTL9+0N\r\nV/3sxQgd2EfCdb7LiExbVLZqBDMErGvFRELxjS6C29saCjYtxKV/oZiZrRRG\r\nDPxsU4CbfuemkWYrtDVvnDk8vLgipPDIafmi2+TxI0N1VEctIaLqaypwDSso\r\nPVjCJSKptxkEFQIuZ7hWX9tJhWbz513v937oI12L57HknNqk8kfwKFkK8VwR\r\nzPngavfm0n5znqfYN9rFPePugvOE0evSzEpWcW76I2IplqMhKp02rrAO32cL\r\nJkQfhw+an7wnJxtAOO0zRz8cZS/Fm4d6se0=\r\n=dK90\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"7e0eaaf0263d8d27f0eb16144fa35ab174d7b5bc","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.20.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","webpack":"^5.80.0","babel-jest":"^29.5.0","@babel/core":"^7.21.4","webpack-cli":"^5.0.2","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.21.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.0.0_1682522228821_0.485961280231334","host":"s3://npm-registry-packages"}},"5.0.1":{"name":"@laboratoria/sdk-js","version":"5.0.1","license":"MIT","_id":"@laboratoria/sdk-js@5.0.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"e8da1774e963756163f3871765eb106b2cc73c5d","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.0.1.tgz","fileCount":20,"integrity":"sha512-mdwecLZpKUeUtBsehMX/VDnsfAkR5tP1GuZq7j7pa1GR9f4A2d0anCS0K3YmlU89Nz6ElT1scKMY4unnSMXo/g==","signatures":[{"sig":"MEYCIQDr8p2HKFoCePuL/PSR/1TXFnwlyShlNF1qISD4pqJzxgIhAKe3kLhCYqkdy1PgJTk3sim3z1tJul3jbJVW5v2LIyTg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":337152,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkU/VaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr2Ow/+I0Odea8H6ZBbN1xDG8IFND+d/2pXoGqsnk2r9nLVinsCxkwz\r\nS2lJuPTBb+EckgNE4W3ApiExZA/oMCFcKQ76gXVoCly0fAVF1xqcyfksCEpI\r\nGq4Oqc9uRfYf/MczjvYSdqOwhCUHNX7zsUWDPoxhwW6ZflbcjchpuuZytjLY\r\nsJwsz7qtf6DAbMw8V8WVMdcfWDdhgPVbyNPe/Nwy8HL3LDVUZZ2ztZihUGPB\r\nNwLeFoKLFSFo1+M0ZbGR1vZk1qz7mbqp8lhvbPx/5UiTfX+qOXw1GJS9oqAT\r\npK6HFXYMWfT8VzFgZyro03LcdTJihck3/PPMmebQCNu/WYRwpb0+38B90zcw\r\nln56aiI0+kH1LQdkJ8Wdg5a+9Ao6tS/lEOIITE7juxadupF5Y5oiK/RVcuuR\r\nsVbOQq1Xm704sp3jfLCd6V4Edm7IzKW741XJ5u/pD0BXkyKmVxZygkmy0FVM\r\nJOiQMEOkG3OAzxcaWr7GXNhdFvQnNjVrEy8PltPJJ9fo9ELqbUNO8LuHUsHG\r\nuOcDAQAQJdIbU/5cTzqXsD183xumXjDATYWebndXPp41rwyC0ownenxkcHia\r\ndPwMYcM0c2oSNBZ6rE7z0w714g7FIF/xmLGjuvw5lxrMiF4naammiFlne1fv\r\n1uGAl8r7XeurxZ8I9DEgNuweMSZ6kvNlFFg=\r\n=LsLJ\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"d1cd83be95dbad0cc49888f37370c6f62035154c","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.21.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","webpack":"^5.82.0","babel-jest":"^29.5.0","@babel/core":"^7.21.8","webpack-cli":"^5.0.2","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.21.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.0.1_1683223898392_0.20967025497184788","host":"s3://npm-registry-packages"}},"5.1.0-beta.0":{"name":"@laboratoria/sdk-js","version":"5.1.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-js@5.1.0-beta.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"2e3f2dc985a452c2bd1962aa06acb607be392897","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.1.0-beta.0.tgz","fileCount":21,"integrity":"sha512-t6reT772ypRxdLLEfRiFrWfjZgSfeG2drL7ZyGRzTN0xwb83QmjDN3oVI/1SQjQlNgipTYSHLlFCnfAd/RTPZQ==","signatures":[{"sig":"MEQCIDymD9BFPPuP+Z7sKp0dK3xFOMWqRjXduPndGBf+r6fkAiAm9EKqew1I6FzNec6jeVu/mv8tk+7RRQdpsp7GAXe+DA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":343624},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"c4291318ca051fc8fcc7396090ac8e39bc991865","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.22.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.5.0","webpack":"^5.84.1","babel-jest":"^29.5.0","@babel/core":"^7.21.8","webpack-cli":"^5.1.1","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.21.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.1.0-beta.0_1685108526889_0.6638354040493049","host":"s3://npm-registry-packages"}},"5.1.0-beta.1":{"name":"@laboratoria/sdk-js","version":"5.1.0-beta.1","license":"MIT","_id":"@laboratoria/sdk-js@5.1.0-beta.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"1cd8dd1c1d4e4214fbd61427c2bee5a8903767bc","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.1.0-beta.1.tgz","fileCount":21,"integrity":"sha512-/lrj9Nh234vnXnBKkvPlTx7rT47AxaGpoYgYFtRBjgYPLwSo/T3alvI/3UDhP4199SBk1vdzJri1qb5zb+GJAg==","signatures":[{"sig":"MEQCIDZ5bYvnV+nnCSBN1NeMjF9kXAW6DBEQW6xu0pO0caUDAiBbRl7T+FFTPUF1b5VCeQSX0CBw3cwvkW/PrpBXRl0NWg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":343997},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"3621bc9f59ee02550a2dfb7b6df7b21224c59687","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.22.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.5.0","webpack":"^5.84.1","babel-jest":"^29.5.0","@babel/core":"^7.22.1","webpack-cli":"^5.1.1","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.21.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.1.0-beta.1_1685369849008_0.18899430835891984","host":"s3://npm-registry-packages"}},"5.1.0-beta.2":{"name":"@laboratoria/sdk-js","version":"5.1.0-beta.2","license":"MIT","_id":"@laboratoria/sdk-js@5.1.0-beta.2","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"8a5210b5cb9b39fefc9ef5defe774d6c76dd63a7","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.1.0-beta.2.tgz","fileCount":21,"integrity":"sha512-+pxBKFA0ZmSvcxEaKiaMxSCLpbhUSNH9OFmWeCp/p95sQ6O9sIOi2dDvrg9iIfo/e0kjb8S6KpitsDlT3S+CUQ==","signatures":[{"sig":"MEUCIQC8i/SYxCmhyZb62MhdTtRl7HDK+DZUezLwbH93lDj1EAIgGZO/xYuK1vSBQNlw9kUiBhmmac6rDpx9MRQdKa8CCrY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":344291},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"99eec1cb9066013e6e58bf1510937db73e1ecdd5","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.22.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.5.0","webpack":"^5.84.1","babel-jest":"^29.5.0","@babel/core":"^7.22.1","webpack-cli":"^5.1.1","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.21.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.1.0-beta.2_1685369954364_0.8388678142777688","host":"s3://npm-registry-packages"}},"5.1.0-beta.3":{"name":"@laboratoria/sdk-js","version":"5.1.0-beta.3","license":"MIT","_id":"@laboratoria/sdk-js@5.1.0-beta.3","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"577a8de262407e800a538342c6181c49492d9054","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.1.0-beta.3.tgz","fileCount":21,"integrity":"sha512-xR/Aily130ExWBPK8/DtM4imvLI2JRpHUUad7pPRvFpPuKCQI5mvBkf0pXbYHMhSXSYSosMz3aMFwyxrzkPWGw==","signatures":[{"sig":"MEUCIQD5BsxwsC1ogr19ECaJLCcDLjgRP/7sSw3AmHf76ZcvyAIgYHMZzfdF1eCnxzaH16x3fcIEtrkvhbdzxlMgRdSfPXo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":344581},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"63a2393a0310cd0fc5ef2cdbe938abe73e35b9b6","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.22.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.5.0","webpack":"^5.84.1","babel-jest":"^29.5.0","@babel/core":"^7.22.1","webpack-cli":"^5.1.1","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.21.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.1.0-beta.3_1685397781496_0.2124933905111075","host":"s3://npm-registry-packages"}},"5.1.0-beta.4":{"name":"@laboratoria/sdk-js","version":"5.1.0-beta.4","license":"MIT","_id":"@laboratoria/sdk-js@5.1.0-beta.4","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"c90511375d90008b0d9deedcaf462c87cfe5ba68","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.1.0-beta.4.tgz","fileCount":21,"integrity":"sha512-qCnSXzgv5q/gvUJbI7gguzSCiuDuniB4JzZ0InI/Xe++Fuozwg67rC2kSuMCdlRk+6k1xiPSgkM1D7FVKjMbGw==","signatures":[{"sig":"MEYCIQDRlYpq/D6GW/2cTl+2vMVxle7eKgL0scHTCwBQRsya6wIhAITXcsXRoiALo6fJbn3QODvqEXTGSVTtjQ1xT9JStd+5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":344783},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"3c2622acbb82e77c10e6771c7617d697d8a52278","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.22.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.5.0","webpack":"^5.84.1","babel-jest":"^29.5.0","@babel/core":"^7.22.1","webpack-cli":"^5.1.1","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.21.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.1.0-beta.4_1685397811497_0.08552068661951773","host":"s3://npm-registry-packages"}},"5.1.0-beta.5":{"name":"@laboratoria/sdk-js","version":"5.1.0-beta.5","license":"MIT","_id":"@laboratoria/sdk-js@5.1.0-beta.5","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"176afaafad2ff81142b4ac00ec383f6436464c0b","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.1.0-beta.5.tgz","fileCount":21,"integrity":"sha512-rklRUPv/+j3Fu23OQY+ZYwfCUISn0cBOi1CLjIUZDtjs+3VrrzmWrKvE7NRYkeQxTORo+HIhd50T2f9143rUSA==","signatures":[{"sig":"MEUCIFq/VBPLnmExukaVpKjfrg0RQxemJqfOGXRlZvP+QTPhAiEA9rMdgZxW+szNg9Bq/fAuXRyWK7LdWGXbaZmicqRzadg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":344898},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"a38bc7cb31220fe93d593c10dce2e1083824008c","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.22.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.5.0","webpack":"^5.84.1","babel-jest":"^29.5.0","@babel/core":"^7.22.1","webpack-cli":"^5.1.1","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.21.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.1.0-beta.5_1685526406099_0.6328033070115837","host":"s3://npm-registry-packages"}},"5.1.0":{"name":"@laboratoria/sdk-js","version":"5.1.0","license":"MIT","_id":"@laboratoria/sdk-js@5.1.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"63d44e8adcaa73159d4675f1a3f8aabe0bf8302f","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.1.0.tgz","fileCount":21,"integrity":"sha512-is92FNghor+ZBQFGorw/EmeXhCImtU5HaY0hIXIVsuZSSTeWrYEXaKvt7lEbMbCedtrqnDEp9OeTidOX0/sfiw==","signatures":[{"sig":"MEUCIGyS9RPlpxji3xkmf6JVgNTjBaBuD0IxAD2jzoWGdlX6AiEAh1Kz3NxjvxoaS5eJkU8g4iJoeLHaE+5tiE5SRKO4Z4U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":344891},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"8fa5f55ac271fd9abca922c2457bd1b6dcd7d29b","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.22.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","webpack":"^5.84.1","babel-jest":"^29.5.0","@babel/core":"^7.22.1","webpack-cli":"^5.1.1","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.21.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.1.0_1685980218706_0.21736718757218942","host":"s3://npm-registry-packages"}},"5.1.1":{"name":"@laboratoria/sdk-js","version":"5.1.1","license":"MIT","_id":"@laboratoria/sdk-js@5.1.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"32f57ab4d45b457b878ad518ce38a9a30678470e","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.1.1.tgz","fileCount":21,"integrity":"sha512-Apm/4YMPot4rCvDHN57ZVhKpnZq/xh15ipoZm08D8k39GzrZK69HYr0Nzb4rmXHPLlJQaJkWVegvNJHkuaUt5Q==","signatures":[{"sig":"MEUCIQCCynL7q0yST2sx1AZ21chn86467pIqe002L9BM1VVwcAIgAsixPcJ3n0OYk4ltdkPXaAIzYwUwR8aFEPx+FdU2knc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":344916},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"da886d1ffdaefd629550e3bcdf77625c6fe3d1a1","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.22.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","webpack":"^5.86.0","babel-jest":"^29.5.0","@babel/core":"^7.22.5","webpack-cli":"^5.1.4","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.22.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.1.1_1686319216773_0.09084868260357548","host":"s3://npm-registry-packages"}},"5.2.0-beta.0":{"name":"@laboratoria/sdk-js","version":"5.2.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-js@5.2.0-beta.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"76ff8677c8fd965effd489f7e7076d8d88be6c2a","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.2.0-beta.0.tgz","fileCount":21,"integrity":"sha512-GHVA1oqq3wisPSFV4uFNIF4M/iz/7r1KJBT0unAaZnUCa5UCjPStGKEX98ObJuTgg7JueRfp7xSBgHn3a4T51w==","signatures":[{"sig":"MEUCIQCVP4vdhmKEeT/bFSjKqgDd/OekB18BGLwlaIo0WPMdxwIgXH4uZqPyGZZh1jK0ox1C1H6f27ntNvBsNqt2txqc3+A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":345081},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"9596a3883162069a952341074973c7372eadef6e","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.22.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.5.0","webpack":"^5.86.0","babel-jest":"^29.5.0","@babel/core":"^7.22.5","webpack-cli":"^5.1.4","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.22.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.2.0-beta.0_1686583605880_0.3025092470314581","host":"s3://npm-registry-packages"}},"5.2.0-beta.1":{"name":"@laboratoria/sdk-js","version":"5.2.0-beta.1","license":"MIT","_id":"@laboratoria/sdk-js@5.2.0-beta.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"80380dcfbfe866fda6bedf501f0cbc2ddea60ea1","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.2.0-beta.1.tgz","fileCount":21,"integrity":"sha512-IkYhhNfR1ogr0zwWlrX6KbcHEj3SWqcRLqgqOFJeoZ15fjbS7TEF1IOu2TFqRobr9ASJl/+xcNE7NaZpRCcuew==","signatures":[{"sig":"MEUCIQCocCYPPIh831KYS0UBKxL1+l5oD4kiIF94R0OK0pZyyAIgQQCafcdFSf5K2j/7dCkzWY0y5lLeZzA82ev0wj+BAFw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":345212},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"24e4de0823316b680b1b587b7f6b93eec8e06838","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.22.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.5.0","webpack":"^5.86.0","babel-jest":"^29.5.0","@babel/core":"^7.22.5","webpack-cli":"^5.1.4","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.22.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.2.0-beta.1_1686583798443_0.4362300325297488","host":"s3://npm-registry-packages"}},"5.2.0-beta.2":{"name":"@laboratoria/sdk-js","version":"5.2.0-beta.2","license":"MIT","_id":"@laboratoria/sdk-js@5.2.0-beta.2","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"a8321a640cadfb75116d60956463e5aa8f68ef6c","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.2.0-beta.2.tgz","fileCount":21,"integrity":"sha512-fojAcwMDs0ie5sztjZGY9bveZkd9oM8R+O0o9GjuCoKQ3kUevCXeKP4B/gWFLRw6i5ATH1EzvL5nEm+GS8h7PA==","signatures":[{"sig":"MEUCIDYH17p29gBOoqKA2ef6h871eBe1wC4WZsam347WvIMsAiEA9IJ4rWD7koiPOgLIIrM0a/xaz8QEC0bF4vI4at8ffCQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":345270},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n  jobsApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"516b5d64477a51d5b0322a49b8a7aad846ac20c7","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.22.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.5.0","webpack":"^5.86.0","babel-jest":"^29.5.0","@babel/core":"^7.22.5","webpack-cli":"^5.1.4","jest-environment-jsdom":"^29.5.0","@babel/plugin-transform-modules-commonjs":"^7.22.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.2.0-beta.2_1686586426196_0.6389718091726388","host":"s3://npm-registry-packages"}},"5.2.0":{"name":"@laboratoria/sdk-js","version":"5.2.0","license":"MIT","_id":"@laboratoria/sdk-js@5.2.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"3b2a420469030744fa9c7b27613869eefa06fee5","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.2.0.tgz","fileCount":21,"integrity":"sha512-WecmJ/gTGW0QRYNa2EMWeTrq2Z51c7/PZdkvR3BbPZNVBGKGenjR2SKzbGuF9U0J+9XupzcTFhDCuJJgcXkkxQ==","signatures":[{"sig":"MEUCIFPcBePrWCzK6tRbgEYcu0P6fg1boaNPm+48rV8WxQGfAiEA/4wr9iUCYXz8H5nG7g+Wr2COOXTdk65Al5C9czYYCHk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":345263},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":97,"branches":94,"functions":100,"statements":97}}},"gitHead":"169b3f8c6a785993a629ce944b18f42d1b9a7251","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.23.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.0","webpack":"^5.88.1","babel-jest":"^29.6.0","@babel/core":"^7.22.6","webpack-cli":"^5.1.4","jest-environment-jsdom":"^29.6.0","@babel/plugin-transform-modules-commonjs":"^7.22.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.2.0_1688595203186_0.3447994601253481","host":"s3://npm-registry-packages"}},"5.3.0-beta.0":{"name":"@laboratoria/sdk-js","version":"5.3.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-js@5.3.0-beta.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"da927cdab523bbf80d7859992577c405e6114295","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.3.0-beta.0.tgz","fileCount":18,"integrity":"sha512-o+eICjhz01T5rNYu89Wju/ZmKWMmX25p0xfU3jAyZDjgCYarJrrlPGelRoMsoXf0mGkD6xEH5j5hyfgVm1wIVw==","signatures":[{"sig":"MEUCIBTy3r01gx5G4dp8nhU2+3dEadY/msVJ62JmIb4zAycYAiEAiHYtngyyZh1UZ4y2a5zWGoSSM8fphXghDo5KTtUndfM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":344873},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":98,"branches":95,"functions":100,"statements":98}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"fe5a4fcbcf015091ef0dab88621ac01f81cd4018","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.23.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.6.0","webpack":"^5.88.1","babel-jest":"^29.6.0","@babel/core":"^7.22.6","webpack-cli":"^5.1.4","jest-environment-jsdom":"^29.6.0","@babel/plugin-transform-modules-commonjs":"^7.22.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.3.0-beta.0_1689038155974_0.4761515037493851","host":"s3://npm-registry-packages"}},"5.3.0-beta.1":{"name":"@laboratoria/sdk-js","version":"5.3.0-beta.1","license":"MIT","_id":"@laboratoria/sdk-js@5.3.0-beta.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"2762ba9a90d34e087efb0c8532c4eec71351c548","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.3.0-beta.1.tgz","fileCount":18,"integrity":"sha512-needb5NTbjE6gs+U4FadFZ+VXeB/wCDHuOxR5s/yJ4fIcokcjXX+z0+0NJ+5H6O/pD6Cc4AiqDbycPEjI5k/NQ==","signatures":[{"sig":"MEQCIGcrQRbFHGTMJxOd6eepMKzBHEKrHfcj/o45VCKI+wDwAiBX6RcFsuqNSYnabptqYEM04ec0TjZHQRmSyTvkDXm0JQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":344638},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":98,"branches":95,"functions":100,"statements":98}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"159a882abfb1089487dd07f25a676c73d1cf6ab2","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^9.23.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.6.0","webpack":"^5.88.1","babel-jest":"^29.6.0","@babel/core":"^7.22.6","webpack-cli":"^5.1.4","jest-environment-jsdom":"^29.6.0","@babel/plugin-transform-modules-commonjs":"^7.22.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.3.0-beta.1_1689038199223_0.694863293334113","host":"s3://npm-registry-packages"}},"5.3.0-beta.2":{"name":"@laboratoria/sdk-js","version":"5.3.0-beta.2","license":"MIT","_id":"@laboratoria/sdk-js@5.3.0-beta.2","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"06b97832b376f65e0b8e3a7352890c9788a24aee","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.3.0-beta.2.tgz","fileCount":18,"integrity":"sha512-I+iI9Y1aSXvwnNUyaPylenc891KS+cJBL3Yf7B78T81+dWYIBAOzIVB0/MddZEt9q88cjtavwSjqmUz2+wY+Iw==","signatures":[{"sig":"MEQCIGBaC5dMzetk0CtVCMKIcZOzvTTZZMwrDYtHI2J/cYLcAiAOcW/CGDr0K6tc2nM853Nt3rGjBERQPGX1BYbTHf0IfA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":344636},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":98,"branches":95,"functions":100,"statements":98}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"569e1b4294d7bbb47b75297f803e5a4fddf2e008","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^10.0.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.6.1","webpack":"^5.88.2","babel-jest":"^29.6.1","@babel/core":"^7.22.9","webpack-cli":"^5.1.4","jest-environment-jsdom":"^29.6.1","@babel/plugin-transform-modules-commonjs":"^7.22.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.3.0-beta.2_1689779202861_0.07434813591018274","host":"s3://npm-registry-packages"}},"5.3.0-beta.3":{"name":"@laboratoria/sdk-js","version":"5.3.0-beta.3","license":"MIT","_id":"@laboratoria/sdk-js@5.3.0-beta.3","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"4acf87b75fd73561a431fbc947ae86c62689f505","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.3.0-beta.3.tgz","fileCount":18,"integrity":"sha512-VpIE/5cuoXi3Z9EOYE4+WR6AfeX6Q80QueE8QUhvIctlPKWz+UmaA+5SNdAtjDY+GtzhSNyoDbv44MyT/a7DUA==","signatures":[{"sig":"MEUCIQDOuMvt0LQLdqhG9Nz76nqj7Vd/9/2Gv/WkYNrwsvVDpgIgCt1Jf8ioALp5Dsf6Vnip5prKls+oxkCLCDnujIByeDc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":345051},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":98,"branches":95,"functions":100,"statements":98}}},"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","gitHead":"952f45bb32e61dab3a3cfcb2fb15e2b0e58ef677","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s (%an)\""},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^10.0.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.6.1","webpack":"^5.88.2","babel-jest":"^29.6.1","@babel/core":"^7.22.9","webpack-cli":"^5.1.4","jest-environment-jsdom":"^29.6.1","@babel/plugin-transform-modules-commonjs":"^7.22.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.3.0-beta.3_1689796432482_0.22169079332108788","host":"s3://npm-registry-packages"}},"5.3.0":{"name":"@laboratoria/sdk-js","version":"5.3.0","license":"MIT","_id":"@laboratoria/sdk-js@5.3.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"af23b92e149baeb39e133f91dd3516563250ecf8","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.3.0.tgz","fileCount":18,"integrity":"sha512-ucdO5TXb3Egv6h95RuEfs9U50Kkb5yfpx6T6L+747ICwIIyXoonFKWiYD+xdUhDOCa17EWr2mbxPPt3qDFmElQ==","signatures":[{"sig":"MEUCIQDgxQyNwj/MN+2+kwcwJif31gWOsy2j5pUX9c1buqtxmAIgDFbnPjQwPuhqh7q7cB9g2QpKEWDDHJZJhNZxnlCaB18=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":345071},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":98,"branches":95,"functions":100,"statements":98}}},"gitHead":"dd853fe60e3900f8f29c6fdb653fbf591a249720","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^10.1.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","webpack":"^5.88.2","babel-jest":"^29.6.1","@babel/core":"^7.22.9","webpack-cli":"^5.1.4","jest-environment-jsdom":"^29.6.1","@babel/plugin-transform-modules-commonjs":"^7.22.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.3.0_1689986222055_0.9482389315579729","host":"s3://npm-registry-packages"}},"5.3.1":{"name":"@laboratoria/sdk-js","version":"5.3.1","license":"MIT","_id":"@laboratoria/sdk-js@5.3.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"1bc80c7af9355bd03eb5e3a83b56094ecf60047f","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.3.1.tgz","fileCount":18,"integrity":"sha512-NA2qFlhkuVfv4fck7y1yshdWf5wyWEUebmvKJ0odpozwlr3W4OUTNYX0FzbaxxblRqhwg5WpBnta2fRo/IdQ+g==","signatures":[{"sig":"MEUCIQCG95NJ5x1CULAG4kgFwBFZzu1FgXknx7F+jTAIhChF6QIgPmbf2FRVpW6Qzl3uTv82nFxTs8p2tbXnrtR4qzIpWL0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":345329},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":98,"branches":95,"functions":100,"statements":98}}},"gitHead":"9eb72f23a1d6673816997a8e2a653d0071bee620","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^10.1.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.1","webpack":"^5.88.2","babel-jest":"^29.6.1","@babel/core":"^7.22.9","webpack-cli":"^5.1.4","jest-environment-jsdom":"^29.6.1","@babel/plugin-transform-modules-commonjs":"^7.22.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.3.1_1689986589397_0.23885317857019173","host":"s3://npm-registry-packages"}},"5.3.2":{"name":"@laboratoria/sdk-js","version":"5.3.2","license":"MIT","_id":"@laboratoria/sdk-js@5.3.2","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"ce5c8a3887c474f756e67377cadddbaf0c0f5ed5","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-5.3.2.tgz","fileCount":18,"integrity":"sha512-yCEPe0zmahPh4gaqw582M9EZfEspQAqki6ozH8qndQj0aZoIpE7xexu9pxJQp87B0lCckD9ND2nY2x46AdVMsQ==","signatures":[{"sig":"MEYCIQD/G3cI5AQXg9SyKwRMr03ojP3sUSw08hYtHsv5rYR/XAIhAMxrLRTVHORyb15c5dWl7EfaGhhPsDoUCy5wk4fmZs2F","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":345330},"jest":{"testEnvironment":"jsdom","coverageThreshold":{"global":{"lines":98,"branches":95,"functions":100,"statements":98}}},"gitHead":"2b113b9665db2d382d2632946dc4f261d641147b","scripts":{"test":"jest --verbose --coverage","build":"rm -rf dist && webpack --mode production","watch":"webpack --mode development --watch","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^10.1.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.6.2","webpack":"^5.88.2","babel-jest":"^29.6.2","@babel/core":"^7.22.10","webpack-cli":"^5.1.4","jest-environment-jsdom":"^29.6.2","@babel/plugin-transform-modules-commonjs":"^7.22.5"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_5.3.2_1692048501213_0.2802733596405944","host":"s3://npm-registry-packages"}},"6.0.0-beta.0":{"name":"@laboratoria/sdk-js","version":"6.0.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-js@6.0.0-beta.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"3059e4984193927fd3772e531a8e718f18f930b9","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-6.0.0-beta.0.tgz","fileCount":4,"integrity":"sha512-5N5g3tghWIkPDTUKWCDYQbJH/VksXgRLTGisuZxxVg+BwIWC29ijxuOsxrBbZoPB+1ey9znWTR1rtG1eJqg/7Q==","signatures":[{"sig":"MEUCIDUyLekG/y+ZfWEN3uyNXsoqe3BIlPvykfm1XZmRaqoAAiEA1VjLVBeW+396yYBucx5tlDBS4PODXJhbtuTK7Wn2ORk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":470472},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v3.0.0' });\n\napp.project.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v3.0.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v3.0.0' });\n\napp.topic.findMany({\n  locale: 'es-ES',\n  track: 'js',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v3.0.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v3.0.0' });\n```","engines":{"node":">=16.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"0a1bb737c40b75f97337b9076fcf7fceed278294","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^10.1.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^4.4.9","jsdom":"^22.1.0","vitest":"^0.34.2","@vitest/coverage-v8":"^0.34.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_6.0.0-beta.0_1692618611645_0.4075906145115198","host":"s3://npm-registry-packages"}},"6.0.0-beta.1":{"name":"@laboratoria/sdk-js","version":"6.0.0-beta.1","license":"MIT","_id":"@laboratoria/sdk-js@6.0.0-beta.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"7fe13dd4865fb5298e2d61ccd30e1bee49be01af","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-6.0.0-beta.1.tgz","fileCount":4,"integrity":"sha512-3cdLTqG8jMViWC4az9xFG81ZXAATWYk0Pmi6w44p4itvmBLMbopzdMx0p3pe7PmsFJS0RpcanReWuSlksBoojA==","signatures":[{"sig":"MEQCIHL3c7mpLymFu6nl9JVTudC/BM2E9baNrydj+qN5lpwfAiBmyWPI6MNWRTcTR9jLWX23tUXc4ppjXHiM1U2VhZeTOQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":470445},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=16.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"8cdc7a73b1c951634c6701c9a1cb98c22650dee1","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^10.1.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^4.4.9","jsdom":"^22.1.0","vitest":"^0.34.2","@vitest/coverage-v8":"^0.34.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_6.0.0-beta.1_1692732788994_0.805849794632294","host":"s3://npm-registry-packages"}},"6.0.0-beta.2":{"name":"@laboratoria/sdk-js","version":"6.0.0-beta.2","license":"MIT","_id":"@laboratoria/sdk-js@6.0.0-beta.2","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"916f3b7b7f53f5eb0e176b642e1063a9deb25f98","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-6.0.0-beta.2.tgz","fileCount":4,"integrity":"sha512-mftv07SVgl0nbxgH3vGgF+3to463hqPNNEp57ZfWS8Y9i4FKSFU8Iw/ky4lhjjLb0Y6ZdKz/t/7HAGxvngAp8A==","signatures":[{"sig":"MEUCIFoCtjhqTzQr+m/QicoL9a8Jx3v6qPM1j25hk8dJaQ09AiEAs9KrnOz4vWLnD5bAclSU2cWPgRqwOSmTRKHrelsYPUU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":470520},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=16.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"71f237a49fd4f4142fee28de79a85fa5325e64bf","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^10.1.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^4.4.9","jsdom":"^22.1.0","vitest":"^0.34.2","@vitest/coverage-v8":"^0.34.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_6.0.0-beta.2_1693511768547_0.035207935659512746","host":"s3://npm-registry-packages"}},"6.0.0":{"name":"@laboratoria/sdk-js","version":"6.0.0","license":"MIT","_id":"@laboratoria/sdk-js@6.0.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"2cf2f406e866cb06d575b664d669cdf4169fc8af","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-6.0.0.tgz","fileCount":4,"integrity":"sha512-iO/hAmA8/CSXepwA5kRwhE1IWzGpx9fyrgFfHLwBfAE73IuR/kkGThRCNV3SXIIE4+fWgCnFZ4TpqA0VjMwK0Q==","signatures":[{"sig":"MEQCIFAs3d8PTeDaIXlo1S6L75uxTEUfuhNbZFWxQCTH25kcAiBoPSii91ejf7JV2S4uGr9XFu3/FFRdUixvmr38oM+Lng==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":470513},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=16.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"9306145efee4c12832accdae93e5559fa657b630","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.5.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.16.0","dependencies":{"firebase":"^10.3.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.4.9","jsdom":"^22.1.0","vitest":"^0.34.3","@vitest/coverage-v8":"^0.34.3"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_6.0.0_1694451448644_0.8509787400028639","host":"s3://npm-registry-packages"}},"6.1.0-beta.0":{"name":"@laboratoria/sdk-js","version":"6.1.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-js@6.1.0-beta.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"cc602cdd3e4ccf76b506b4de773fc31533d5241a","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-6.1.0-beta.0.tgz","fileCount":4,"integrity":"sha512-viUHf8YvmnJtl2iuacIfFenQiwc2qrRfNMtC+bAc40ToDJ7RD3WGCZd/gg2kYNcqDFihuw7g4soRxw6YvQExrA==","signatures":[{"sig":"MEQCICpu5u1Y3xf3Uqd9xojhX4HlEVJ5nb8uMhy9tCfA6PJZAiAxSSN13iQVsPzUeq7/wkXEtB3EDE78cXQ2WIxuvsmCNA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":479856},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=16.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"e15ec4308128e809cd3ea06d9e4b6f092f90294e","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.8.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.18.2","dependencies":{"firebase":"^10.5.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^4.5.0","jsdom":"^22.1.0","vitest":"^0.34.6","@vitest/coverage-v8":"^0.34.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_6.1.0-beta.0_1698184296133_0.1300073255772205","host":"s3://npm-registry-packages"}},"6.1.0-beta.1":{"name":"@laboratoria/sdk-js","version":"6.1.0-beta.1","license":"MIT","_id":"@laboratoria/sdk-js@6.1.0-beta.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"e658e94176cfef499c71a255e1466001e3a4468d","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-6.1.0-beta.1.tgz","fileCount":4,"integrity":"sha512-mxUSpbUntFPAir/5ClZdShZwta95lu5Rjxn6HPW3VNDXDTGbyS27rBF+OEsg4o5vGQ8z1VKt8gJyu1rFogzxlw==","signatures":[{"sig":"MEQCIGZIPvbLGxXqWwgqmRd7C3/bd0y8WWshheycZStr19NoAiBFe54+BfW2TnbBuiT3uNutod+ZzuiAukHzqccZIF/bWg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":479857},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=16.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"bd274af3677d4bfc1bce01ed3a1b3524285a4ab3","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.8.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.18.2","dependencies":{"firebase":"^10.5.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^4.5.0","jsdom":"^22.1.0","vitest":"^0.34.6","@vitest/coverage-v8":"^0.34.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_6.1.0-beta.1_1698398415729_0.49657612324093114","host":"s3://npm-registry-packages"}},"6.1.0":{"name":"@laboratoria/sdk-js","version":"6.1.0","license":"MIT","_id":"@laboratoria/sdk-js@6.1.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"28b6d3b065094e4a0b24a43bf70031b33e7f7c86","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-6.1.0.tgz","fileCount":4,"integrity":"sha512-NYsY/vgIqF+jwGkOEJMK0ibq31jPHu8wiSunE0/J8P3IF48S1XTxoulFBmns+RNmEWCZahveo84Qlr88ctuwUg==","signatures":[{"sig":"MEYCIQDbgxzTi7kdWiDMr7GJ0/EU/o2ZZfMnAOsdsPJbFs4gggIhANh1Ow5SlFAdVQB5hi+/VdyOhjxDTzzBbwWXBkCd2zdS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":481195},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=16.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"6394db0b15a65331f1686be1fcc4d0504d073148","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"9.8.1","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"18.18.2","dependencies":{"firebase":"^10.5.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.5.0","jsdom":"^22.1.0","vitest":"^0.34.6","@vitest/coverage-v8":"^0.34.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_6.1.0_1698754543971_0.4999357435674048","host":"s3://npm-registry-packages"}},"7.0.0-beta.0":{"name":"@laboratoria/sdk-js","version":"7.0.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-js@7.0.0-beta.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"780e8eadce68312f4b10bfdd7df2a983e67c7a3c","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.0.0-beta.0.tgz","fileCount":4,"integrity":"sha512-Nl2odt4TItT4ErgyCgoTdeEdInvu3bEfsR1jWkqUpKe+/YgDQ/F4bcs/nAhnVxkdtw/sFVlQaoTqA2OC7nWm1g==","signatures":[{"sig":"MEYCIQCdEllVjDmy+QdSxIo1QPNVpxIU5UHtAAOl7+0sqCFFdAIhAJnWrbC7Qzfwz9SlpDYYw1+J/2UNSaQx0gl5bEGArHAc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":481202},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"0418623a6e7341b6bd346ecdee6988bb74eb52c6","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.1.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.9.0","dependencies":{"firebase":"^10.6.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.0.2","jsdom":"^22.1.0","vitest":"^0.34.6","@vitest/coverage-v8":"^0.34.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.0.0-beta.0_1700694761396_0.13347166227170315","host":"s3://npm-registry-packages"}},"7.0.0-beta.1":{"name":"@laboratoria/sdk-js","version":"7.0.0-beta.1","license":"MIT","_id":"@laboratoria/sdk-js@7.0.0-beta.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"28997a4d30dd9256b77b6b3fc70bed712abe1dc2","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.0.0-beta.1.tgz","fileCount":4,"integrity":"sha512-RP4A5QFA1UStG66WRQDkUBG5/VZTsSyOSdHqbUMgZs1umOHSJLmpRVgSgmjmWrkIl2lyjZRZyrK25u0MWt6gaQ==","signatures":[{"sig":"MEYCIQDifSnsJAkfMtrtUzFV/NZ/UdKtXNhXJkxVqjcsa8fkqAIhAIH8kHRTWK13qD5xjRssgWr107MFWijZyMwIaDBgGHcV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":481203},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"06fa4d22e9ce0b9ef683b956ee5775601785c1f1","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.1.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.9.0","dependencies":{"firebase":"^10.6.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.0.2","jsdom":"^22.1.0","vitest":"^0.34.6","@vitest/coverage-v8":"^0.34.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.0.0-beta.1_1700695086605_0.15622921201590123","host":"s3://npm-registry-packages"}},"7.0.0-beta.2":{"name":"@laboratoria/sdk-js","version":"7.0.0-beta.2","license":"MIT","_id":"@laboratoria/sdk-js@7.0.0-beta.2","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"04ea6f6392b70738011b61d91eed84a281830f35","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.0.0-beta.2.tgz","fileCount":4,"integrity":"sha512-EWTS0qY6TedTbkukjc2RQj+I6DmQIWDh0k00wksHYlUoyxGiZaaWYKDpMtFRZkp+AsAWV66Hv+vuOSCWNNuCgg==","signatures":[{"sig":"MEUCIQCVzQggYQG/a9d7rXR3cEGGSZiYAEGpTkppp+b/tdEseQIgLWvodlmV8n1+JaR7UCCDOeaH0J0GCGFUnmfVgpNM/38=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":482424},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"1b7f3c5b6f2d085c75d5931d467ca501a57c96b9","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.1.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.9.0","dependencies":{"firebase":"^10.6.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.0.2","jsdom":"^22.1.0","vitest":"^0.34.6","@vitest/coverage-v8":"^0.34.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.0.0-beta.2_1700695450668_0.6381990388276235","host":"s3://npm-registry-packages"}},"7.0.0":{"name":"@laboratoria/sdk-js","version":"7.0.0","license":"MIT","_id":"@laboratoria/sdk-js@7.0.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"66823d9e39b1c8429b4d61b90e0a432a547520c7","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.0.0.tgz","fileCount":4,"integrity":"sha512-QEfjZvKdFmu44L0wcCd1eK0Fpq7mrjD0J86gMItgRHE9Qci5u3GlXPRQIV3wKTgL59TCCjZ6QwVUdLm4m+INcA==","signatures":[{"sig":"MEQCIGxjF5KEi5w+WiejXmSeccDST5fzZKR9x24iiQLKCjaOAiBgSiuRrkXEa0zHwqyG3Ml5Oo5hfEK7VH4z4bgfffNI6g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":482417},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"9cae8e9ba22f372270ec98be68b8cc0c2bbcd108","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.1.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.9.0","dependencies":{"firebase":"^10.6.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.2","jsdom":"^22.1.0","vitest":"^0.34.6","@vitest/coverage-v8":"^0.34.6"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.0.0_1700696992875_0.2539254278142298","host":"s3://npm-registry-packages"}},"7.0.1":{"name":"@laboratoria/sdk-js","version":"7.0.1","license":"MIT","_id":"@laboratoria/sdk-js@7.0.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"d2f31de62d9dfe40ab958d340241a4413715ed7a","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.0.1.tgz","fileCount":4,"integrity":"sha512-k3bMjTavCVwN+kB6RSu6LtMq5jhGIDY4Qk3NFp5xTHhOD8eDzYHQQ1lofFc/1eTFapsOp5zNAClO84oJGh45Rg==","signatures":[{"sig":"MEUCIAy2iTmcYUrwm1bwshF4bNid7k/iS3KvVkr5AVHrDR+tAiEA6WibgrlVYE8I+0G15dKqB7vunRTcpr9ETLuhJEP8020=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":482970},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"4a577288c648b2526b01b98bb732a14a94a06159","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.10.0","dependencies":{"firebase":"^10.7.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.8","jsdom":"^23.0.1","vitest":"^1.0.4","@vitest/coverage-v8":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.0.1_1702379709686_0.29000961390652735","host":"s3://npm-registry-packages"}},"7.1.0":{"name":"@laboratoria/sdk-js","version":"7.1.0","license":"MIT","_id":"@laboratoria/sdk-js@7.1.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"294f70207161dd7df3a6b8e73ce38a24318b10c9","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.1.0.tgz","fileCount":4,"integrity":"sha512-tJ9BvqaoXza0fBq2SYRFjzLBdz06zo28a6mFrFbsfW63djCYgNskFR/iIq1bDvC3R0/AelMqdbZFIWYp1wkmzA==","signatures":[{"sig":"MEQCID+XMmSfpraJ3sdtYaDxbBHZVCTTy89Ni16ckBqRg2b7AiA31b7MdwBpiw8lMz6sb5n7e63jLOabtltrWqaCUFnR5w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":482972},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"13d0ea6c1e70a7720878adea5101a990dba2de9a","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.10.0","dependencies":{"firebase":"^10.7.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.11","jsdom":"^23.2.0","vitest":"^1.1.3","@vitest/coverage-v8":"^1.1.3"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.1.0_1705008101936_0.23336683837546435","host":"s3://npm-registry-packages"}},"7.1.1":{"name":"@laboratoria/sdk-js","version":"7.1.1","license":"MIT","_id":"@laboratoria/sdk-js@7.1.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"6d5a5d88c466a2fb5d710dc9642860c82de046bf","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.1.1.tgz","fileCount":4,"integrity":"sha512-L1T/Ep4FlLNTIjr1yy9h3qUbZ83R4VSfzQ52LlS30WyqPO1lGL/evGh6QSrvtwcJmY7ojJRJQvmszDjtmChqsg==","signatures":[{"sig":"MEQCIEiKfVqZ2ZrzWPgSgcO4J2olGLc9aMdo+Cx2qgbcFfhbAiB7e+8x88sZYlSmuE6TBEEdM5WOSnW0GtfU9pAYw3SPSg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":482972},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"ca391eff493b6c753265795d4d46c99b195ca44f","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.10.0","dependencies":{"firebase":"^10.7.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.12","jsdom":"^24.0.0","vitest":"^1.2.1","@vitest/coverage-v8":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.1.1_1706097716087_0.6088291483989077","host":"s3://npm-registry-packages"}},"7.1.2":{"name":"@laboratoria/sdk-js","version":"7.1.2","license":"MIT","_id":"@laboratoria/sdk-js@7.1.2","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"1b035764b71793fcd1a658cca00e331a94ad0c4d","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.1.2.tgz","fileCount":4,"integrity":"sha512-jcEILAU9NZNzLxSc0PR+f0YamM/lawlPNgBtE5xyfM9wXoOWCNgU+Z/L0kf6ejItNBtdW6xTP1Ls4ELQGUa5Gg==","signatures":[{"sig":"MEYCIQCdZG05MQFjExL+EhMpTXkebs6HpYWDveMqX6Quk2Ft9QIhALjmkd1EzaddlbCUXqLkfeASagG2SzZq3LKEgeGAQu8I","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":484523},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"5326d8144dba3ea8bae60cee2fd9bf8ad29aa1a1","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.3","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.10.0","dependencies":{"firebase":"^10.7.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.12","jsdom":"^24.0.0","vitest":"^1.2.1","@vitest/coverage-v8":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.1.2_1706098118327_0.6350497719640187","host":"s3://npm-registry-packages"}},"7.2.0-beta.0":{"name":"@laboratoria/sdk-js","version":"7.2.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-js@7.2.0-beta.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"dcd959445dc01857ee7823191bc877377d0bd504","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.2.0-beta.0.tgz","fileCount":4,"integrity":"sha512-ZUEmK5yU1nwVw4gvOAS7bJm7GIy01tu/sKmOmAL4e7uLZ8WJPODG3JuTboxt3J1E+zC7Z06m3aTWRccjEAQSYg==","signatures":[{"sig":"MEUCIC21mxF5gNfUNsevfniHpprnd/iAHGAnJXCE9zZ8JBPHAiEA7xd/okS+pzm5i11yJ5RDYqS1/aXc+5heYJFX38Yek7Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":486555},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"075101c9fa1bf863623206da4e67996fa8091d18","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.11.0","dependencies":{"firebase":"^10.7.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.0.12","jsdom":"^24.0.0","vitest":"^1.2.2","@vitest/coverage-v8":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.2.0-beta.0_1706784403043_0.08099745675128811","host":"s3://npm-registry-packages"}},"7.2.0-beta.1":{"name":"@laboratoria/sdk-js","version":"7.2.0-beta.1","license":"MIT","_id":"@laboratoria/sdk-js@7.2.0-beta.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"974f8e46a0a6fb2ef99213a1ed415f83ef94efdb","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.2.0-beta.1.tgz","fileCount":4,"integrity":"sha512-X7dzpsRxS1tgFSdnXgWOc5Jwa8Ew6M9+LtAOAqhxEiQMjbxkWIPMAH6F/FGqJU906t6ctQGINifRgLQkD7eo8Q==","signatures":[{"sig":"MEYCIQCKGWgTpnmKNrtE/FOFgFaX/afkpGsL2hlWKxbgetZstgIhALEdrVwfQNJouXhmDUacegoIYllPckm7JNx6nEu/Qb0Z","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":486667},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"dacd94801bac6450712f68c7f85bdd2e2b401f86","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.11.0","dependencies":{"firebase":"^10.7.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.0.12","jsdom":"^24.0.0","vitest":"^1.2.2","@vitest/coverage-v8":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.2.0-beta.1_1706809428730_0.8078477075411941","host":"s3://npm-registry-packages"}},"7.2.0-beta.2":{"name":"@laboratoria/sdk-js","version":"7.2.0-beta.2","license":"MIT","_id":"@laboratoria/sdk-js@7.2.0-beta.2","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"6945bf003d5c3b5a59cbc7ab1a6dce307957d06f","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.2.0-beta.2.tgz","fileCount":4,"integrity":"sha512-PZ8v7Vwd6xOPboK9MZUikcjIxq5GB6UA8K9aFzFRPhmtK15TIaJKp41Tynt5RQCMt+NlfTICu0V+QrAw6x7Uqg==","signatures":[{"sig":"MEUCIDahW84leoaIHysQx4SaWFzl7nbanzoapbnc6CUGeoi/AiEAzAjQuHflvvudb27EsWk6J42v4wMgXlJsZiQXME96Stg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":487464},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"a70e98650fb7c0439582cfa7eb3ed6a3d027c0af","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.11.0","dependencies":{"firebase":"^10.8.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.0.12","jsdom":"^24.0.0","vitest":"^1.2.2","@vitest/coverage-v8":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.2.0-beta.2_1706900283035_0.4728471283896398","host":"s3://npm-registry-packages"}},"7.2.0-beta.3":{"name":"@laboratoria/sdk-js","version":"7.2.0-beta.3","license":"MIT","_id":"@laboratoria/sdk-js@7.2.0-beta.3","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"7255c9e653ce0975527d4677158bccee62e135a2","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.2.0-beta.3.tgz","fileCount":4,"integrity":"sha512-IGekIqH96CrvwYyZ6Xv1eU3h255mDZZ6/QAJK7t2wfvYZHAZjsv+depXJPWv2gJZJBi0asAUyhgh7KPEC2cuNQ==","signatures":[{"sig":"MEUCIQCpCX+yFggH5tWT+bPsuD7b1CIx82/xGffbrVAD0NjtOQIgA3jAfEK4cGcZz2bkr6wSeB0ZYJf8rVfacAuZM7HObjQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":487672},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"bcde70e67a1d7c55c7efe48f84a0f65259920d98","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.11.0","dependencies":{"firebase":"^10.8.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.0.12","jsdom":"^24.0.0","vitest":"^1.2.2","@vitest/coverage-v8":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.2.0-beta.3_1707424380590_0.8585931068301118","host":"s3://npm-registry-packages"}},"7.2.0":{"name":"@laboratoria/sdk-js","version":"7.2.0","license":"MIT","_id":"@laboratoria/sdk-js@7.2.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"e541623089730d80883e553e2ad5f65aec39c3e6","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.2.0.tgz","fileCount":4,"integrity":"sha512-GyJyhqI2jZM+5nD3cubE7gUKlH7XbP7FJE3rCm5ByZW+QZmJOTxlAaRNHUH5/flLmpFeDB297dy1B64IXXVrug==","signatures":[{"sig":"MEQCIHtSVz10gJYpo3YGGyQL4sFa4UITP3hEP7MgVlVcFyvgAiAaRRZ/Fg7OJOQCDRpSq+dml5uH7NbsffWpzzfsvTRGUA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":487665},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"a4221032b207483676c1a999342364c206d0ee59","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.11.0","dependencies":{"firebase":"^10.8.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.12","jsdom":"^24.0.0","vitest":"^1.2.2","@vitest/coverage-v8":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.2.0_1707501264852_0.6695495599602355","host":"s3://npm-registry-packages"}},"7.2.1":{"name":"@laboratoria/sdk-js","version":"7.2.1","license":"MIT","_id":"@laboratoria/sdk-js@7.2.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"322ac805469bd03daf4ec6a5996ee6394c685d68","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.2.1.tgz","fileCount":4,"integrity":"sha512-E+BWY6/NYknSlX2V3g8eDPKgaZZoz2GSlnOEOzRNe48YO5S2yjR9TOoL47nkECbZMAW9XdVpl9dVrflXwDDqyQ==","signatures":[{"sig":"MEQCIDd5EPQ/RBXRYCn3xBhh2th/P4rbhtfM4rbl/JRHBPFoAiB5A8Pj9MrTgPwmxCf87RG1ZdJQ0iDnX6RMAml2DP5+GA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":487664},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"f9ebfee44c22aea4c0f18996400345aab9a0fa45","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.11.0","dependencies":{"firebase":"^10.8.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.1.1","jsdom":"^24.0.0","vitest":"^1.2.2","@vitest/coverage-v8":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.2.1_1707846728777_0.5522397941759656","host":"s3://npm-registry-packages"}},"7.2.2":{"name":"@laboratoria/sdk-js","version":"7.2.2","license":"MIT","_id":"@laboratoria/sdk-js@7.2.2","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"71bff70523dd67219a9b6216a258d42e82f8ca23","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.2.2.tgz","fileCount":4,"integrity":"sha512-O+DeiuW0ckkOb/UKH6uM8Tmyd13KB8Jkv5mmrK9OQkPO8fdokLz5ioxDd+WJ3FoGYEes1joj0Aak+R+5C1IobQ==","signatures":[{"sig":"MEUCIQCfUCfMQ5DEgMqhQ7/hQhul0NDtdJ/bCZ9Xv9QRLdzSSwIgSS/bhSkt21DV8nLFT2p7nTWjmje78PmwKIeTChvEaL0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":487768},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"c6921568306815d8305dd558d7ad46864936f6b1","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.11.0","dependencies":{"firebase":"^10.8.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.1.1","jsdom":"^24.0.0","vitest":"^1.2.2","@vitest/coverage-v8":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.2.2_1707855438649_0.2925328045905715","host":"s3://npm-registry-packages"}},"7.2.2-0":{"name":"@laboratoria/sdk-js","version":"7.2.2-0","license":"MIT","_id":"@laboratoria/sdk-js@7.2.2-0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"4e1da1e39e5de4d902436bc19cd55dd7a0df998a","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.2.2-0.tgz","fileCount":4,"integrity":"sha512-eP9r8TMirGugI0COBHHI/b15ZbLzP1Ea7lmfJZgjd4BoCEcphpIeE2gWyq40WxS9WDZHE/TRii/O1RoQbSumiA==","signatures":[{"sig":"MEUCIQCnuNVbDz3WVjtEfwqt4fCeLvxDqy1YYpuSG0Qt/t9f5wIgdgKClH0xDFjmTH7SCmYs2YS5rWjjdhbSddRGxdQ11c8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":487770},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"a276f1cef92ba2f8ebe6ebabec2d2a12c8e4470a","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.11.0","dependencies":{"firebase":"^10.8.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.1.1","jsdom":"^24.0.0","vitest":"^1.2.2","@vitest/coverage-v8":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.2.2-0_1707855440612_0.3527487727185461","host":"s3://npm-registry-packages"}},"7.2.3":{"name":"@laboratoria/sdk-js","version":"7.2.3","license":"MIT","_id":"@laboratoria/sdk-js@7.2.3","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"331705f6d523bbba7e1f62d2b88723d6ae975fe2","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.2.3.tgz","fileCount":4,"integrity":"sha512-a0xa/gHy6O8QNXbAVT++HD1WGgo9Mw317a9weE8/UZ4fg6+QkjKqQUC0sjWxu1mJkk2hzQpPojAerSkhCqo0Gw==","signatures":[{"sig":"MEQCIFbyOGlpO8+H8s3TnAciFe6ewPfd80HRDBk6tZGTVambAiBaT/8H/aw+Q8g87ZXDJHDRhG/OpO0eHhKLonyv0kyYxA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":487768},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"ff80bf5eb96737e03478629d190d4f7fd585c189","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.11.0","dependencies":{"firebase":"^10.8.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.1.2","jsdom":"^24.0.0","vitest":"^1.2.2","@vitest/coverage-v8":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.2.3_1707978863692_0.09644534110101421","host":"s3://npm-registry-packages"}},"7.3.0-beta.0":{"name":"@laboratoria/sdk-js","version":"7.3.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-js@7.3.0-beta.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"927d432707b27392ce8e1f5e2b1c810de5406002","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.3.0-beta.0.tgz","fileCount":4,"integrity":"sha512-QhbZPO5KvTB7m8OEbdX+2/miqPxrAE8nPK+W5Re1nYwSb9+VGK61WJpuhGCBuSAEU4jVLKubLHgyhlWWxKhjpg==","signatures":[{"sig":"MEUCIQDR35+wW9DluZWQ/C7a/b3+YHUHxcgWsOsAVQHxhIRiWgIgf+7gcUnILF4PQd4YgpneIrHARfnV8/xN8CbuJAbeGt0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":488212},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"01c67e06094a724fe0de1f2856450da41245ad61","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.11.0","dependencies":{"firebase":"^10.8.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.1.2","jsdom":"^24.0.0","vitest":"^1.2.2","@vitest/coverage-v8":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.3.0-beta.0_1707989857047_0.7982030131482654","host":"s3://npm-registry-packages"}},"7.3.0":{"name":"@laboratoria/sdk-js","version":"7.3.0","license":"MIT","_id":"@laboratoria/sdk-js@7.3.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"bde2720e46542f3abf1eb51041a7778e866452e8","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.3.0.tgz","fileCount":4,"integrity":"sha512-IjbJGUDBmPzn/AEX+Ib2ha6XFEWp81+wJedmZcwaqCYr2l6jfx/D/6XDK7nicJwLd05VcgVUvO99wJUCAEuNaA==","signatures":[{"sig":"MEQCIHH+srS4+P8GClaf9WS8s8cgshtyet0me3pOZnU4SOebAiBY19deoS/MHF73mIClDeZ83jCswQMKENirsbN64Rocog==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":488206},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"25215dae2c8d76ce861058a53f5d108c32c507b5","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.11.0","dependencies":{"firebase":"^10.8.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.1.3","jsdom":"^24.0.0","vitest":"^1.3.0","@vitest/coverage-v8":"^1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.3.0_1708422560250_0.06461542507190488","host":"s3://npm-registry-packages"}},"7.4.0":{"name":"@laboratoria/sdk-js","version":"7.4.0","license":"MIT","_id":"@laboratoria/sdk-js@7.4.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"c006e66d611c4a18154966566866cc76698db3bb","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.4.0.tgz","fileCount":4,"integrity":"sha512-y3w1lvNk7BIVPHGXfHG2G0Z5IJIB/SlHrc5+DOFmfb8s2ughjOqRrYQnUKTQfeqqRgr/p0Eagv9VL97Nt6cWCQ==","signatures":[{"sig":"MEUCIQDaLNIUnMQbqaW1/zigJk4GDiyVTPhLsrbtXs4ipNlcWwIgSvkLna5yn2GeWv93m5Ego5ZZv6wbRlxot2M8clyoBS8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":488229},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"fe76c5df7f6677a5b2e50f063825c9a109cf53d0","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.11.1","dependencies":{"firebase":"^10.8.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.1.4","jsdom":"^24.0.0","vitest":"^1.3.1","@vitest/coverage-v8":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.4.0_1708958410251_0.6672223393448466","host":"s3://npm-registry-packages"}},"7.5.0":{"name":"@laboratoria/sdk-js","version":"7.5.0","license":"MIT","_id":"@laboratoria/sdk-js@7.5.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"380db694d48752447ff8fa1612ced6917da1e611","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.5.0.tgz","fileCount":4,"integrity":"sha512-OT4ACJUa/QTbmPqbTJXGyJ2jtL/2m4E26VP98aMDlPv7jEDYFImnmdjxE9nP1/zwzb4dPaTykTlK9EFvAEXNMw==","signatures":[{"sig":"MEYCIQCp2KZNJP8234vR0NuONM6lYTrz+XzUwwowCvo/nuDkgwIhAPzyTuUzQnka1NhfRuxvlXA27W4XTs2D58MmwJAVwABA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":491115},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"2091769de24cdc4dd50e38a4c663bdac0641236c","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.2.4","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.11.1","dependencies":{"firebase":"^10.9.0","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.2.2","jsdom":"^24.0.0","vitest":"^1.4.0","@vitest/coverage-v8":"^1.4.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.5.0_1710986969095_0.805525714714294","host":"s3://npm-registry-packages"}},"7.6.0-beta.0":{"name":"@laboratoria/sdk-js","version":"7.6.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-js@7.6.0-beta.0","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"f890974bce06e5d059f62837ebf4a4b15e5b419b","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.6.0-beta.0.tgz","fileCount":4,"integrity":"sha512-cPdmyCWcIxm6vhnJhkzsTOGcnL5fOcs+Ad8fJNLfhqLikkLMjbOnMxKXsei3za4vSPPd5ik4YAsSHIDWY/3QRQ==","signatures":[{"sig":"MEQCIFv05xcC9eL8GRyacrtCraJvTXoUEaaabVU9Bh8rLhVMAiBLbd7TRfOhQdmN8YeYj4d++X0PN5/2LNgDD5rzdRnrvA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":493820},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"492782715cddae6a87e14931e92323cd078bb5da","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.5.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.12.2","dependencies":{"firebase":"^10.11.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.2.10","jsdom":"^24.0.0","vitest":"^1.5.2","@vitest/coverage-v8":"^1.5.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.6.0-beta.0_1714058343881_0.13160314548558127","host":"s3://npm-registry-packages"}},"7.6.0-beta.1":{"name":"@laboratoria/sdk-js","version":"7.6.0-beta.1","license":"MIT","_id":"@laboratoria/sdk-js@7.6.0-beta.1","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"65659a4fede308bdaddf0cda10f826b41732fab3","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.6.0-beta.1.tgz","fileCount":4,"integrity":"sha512-x+iC2gqIqUvXng6GG64tgpIdxUxZO2hq+fQuSAe702tKp4KybmcCaOra101bZVQf/d918HaMpooTwqLynfJPyg==","signatures":[{"sig":"MEUCIQD5/Y1NnDlhNdoR1ArgeU4UIYJrtNdIgjkWTnqS8qV4/QIgXCr9R3Rx4sYChPBId+uq1PYWLGGCqAAeHkPQfjaVRNI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":499062},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"17dee39561439fb230ff5d62c9501013456cc375","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.5.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.12.2","dependencies":{"firebase":"^10.11.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.2.10","jsdom":"^24.0.0","vitest":"^1.5.2","@vitest/coverage-v8":"^1.5.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.6.0-beta.1_1714058386878_0.5344848498470709","host":"s3://npm-registry-packages"}},"7.6.0-beta.2":{"name":"@laboratoria/sdk-js","version":"7.6.0-beta.2","license":"MIT","_id":"@laboratoria/sdk-js@7.6.0-beta.2","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"90e3fe4adfb2ec2bf38a92b4749d0b8f0de1c636","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.6.0-beta.2.tgz","fileCount":4,"integrity":"sha512-Vf85g5M4xazo1MaWMGQ5zPAhO9cgmUUDcePS9g4Zdi3KaG1JOkzoRx6IxTezJxLDB47oSi9suxin9Y4UkeKKaA==","signatures":[{"sig":"MEQCIAcaHHHqtniyCQBXwBT4INdUZKTBA0J8ksQfOF1/rAJJAiAqNQV2LgpPKu5nvVOQB5HixydyghYoFokGtSfY09M6uA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":500609},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"9a20b971c75ee560c7ba24d95aacf3ae1cd5e220","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.5.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.12.2","dependencies":{"firebase":"^10.11.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.2.10","jsdom":"^24.0.0","vitest":"^1.5.2","@vitest/coverage-v8":"^1.5.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.6.0-beta.2_1714075615350_0.34217529225428867","host":"s3://npm-registry-packages"}},"7.6.0-beta.4":{"name":"@laboratoria/sdk-js","version":"7.6.0-beta.4","license":"MIT","_id":"@laboratoria/sdk-js@7.6.0-beta.4","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"a39308e19ba471b668bc568efc3b2260ba80c9fa","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.6.0-beta.4.tgz","fileCount":4,"integrity":"sha512-V1yCzy/99sn9YeU8CQgGIwFi8dNpacLk6Yu622tIsLm5hIV/pNIyOEhKmJwPVfC6Pf+HHG4YOFKE1Ifq4hY+DA==","signatures":[{"sig":"MEYCIQDfXKL0pGUOVtQwo5fcPsbwSxYfsCg2w+TWk1X0KvV/PgIhAIi0Us/tpao+xd6sWBZMJIqqApNCU3j1m6U07Ynljrf4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":501562},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"01aa5cf5c4a7adcd2e1c26db8de8ea025a64fda8","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.5.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.12.2","dependencies":{"firebase":"^10.11.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.2.10","jsdom":"^24.0.0","vitest":"^1.5.2","@vitest/coverage-v8":"^1.5.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.6.0-beta.4_1714135450779_0.7851642208161209","host":"s3://npm-registry-packages"}},"7.6.0-beta.5":{"name":"@laboratoria/sdk-js","version":"7.6.0-beta.5","license":"MIT","_id":"@laboratoria/sdk-js@7.6.0-beta.5","maintainers":[{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"ed8b2a6cab29b4cc5a19597b8b63eeba97e959e0","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.6.0-beta.5.tgz","fileCount":4,"integrity":"sha512-vRR/71AJAqu/IppxAxxRuTBDIZqLNUGag7bXDKrl0LEJYdtPr4cGIoBg4rJ/u4+NIySdWPstQNAO1QbElAdaKw==","signatures":[{"sig":"MEYCIQCjZ7aNyHx8eDCDo3sy6xPpZRfjOl7o2RDs0nYY0wYT1AIhAP3g6LE/65nU67UbBpCdbtKTykB6HQKUYCd0GHxSZehs","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":501149},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"1f0dd8794fc0bb7dd4a71336e25bce57d51dc670","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.5.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.12.2","dependencies":{"firebase":"^10.11.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.2.10","jsdom":"^24.0.0","vitest":"^1.5.2","@vitest/coverage-v8":"^1.5.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.6.0-beta.5_1714165993144_0.9067816409817637","host":"s3://npm-registry-packages"}},"7.6.0":{"name":"@laboratoria/sdk-js","version":"7.6.0","license":"MIT","_id":"@laboratoria/sdk-js@7.6.0","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"561207f65be4ff37b1a5cb9e9f0a8facf15a7c3a","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-7.6.0.tgz","fileCount":4,"integrity":"sha512-EzXlmqsKDu3GlQ/KfSX10c9E0tLowTDLl84eMErCZ5/q18KQVGqLPlFpVvixxba08+XACHKD1vqUNuwNtyTe/Q==","signatures":[{"sig":"MEUCIQCIP620u+57CZtjizU/b9EhPZieVvkc6g6VQUIZWyv56wIgaETmtXB+4lIncN+eeTr+YY8PHFVFmTaB7LubxkVvYwk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":491136},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"46cb198e63bb58de1867ccb99b30bb31dad0c318","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.5.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.12.2","dependencies":{"firebase":"^10.11.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.2.10","jsdom":"^24.0.0","vitest":"^1.5.2","@vitest/coverage-v8":"^1.5.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_7.6.0_1715706544797_0.7839873282072232","host":"s3://npm-registry-packages"}},"8.0.0-alpha.0":{"name":"@laboratoria/sdk-js","version":"8.0.0-alpha.0","license":"MIT","_id":"@laboratoria/sdk-js@8.0.0-alpha.0","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"8f8c7782f4e4d298d228408e01c4adf84ca385bd","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-8.0.0-alpha.0.tgz","fileCount":4,"integrity":"sha512-xXws8S55agKoBzaSu5jK2HMU9nmzh9OLS+p45GIPas0bRxaBE84Zztr0l94n5hNS7pfkUj+/8/ASEPOaXMEN8A==","signatures":[{"sig":"MEUCIDs7PMNbU3T+F8oNqzFOxqR/0GrSqCp5TsE0EJarHbljAiEApvV+tan4fCB/40AMrLQ6ZOuXCf3AjcnYK/AZW8dtRwc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":497136},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"1eb34e1b50488f54684eba7161aab6c49db1dbac","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.5.2","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.13.1","dependencies":{"firebase":"^10.11.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.2.10","jsdom":"^24.0.0","vitest":"^1.5.2","@vitest/coverage-v8":"^1.5.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_8.0.0-alpha.0_1716833836352_0.8672647439645207","host":"s3://npm-registry-packages"}},"8.0.0-alpha.2":{"name":"@laboratoria/sdk-js","version":"8.0.0-alpha.2","license":"MIT","_id":"@laboratoria/sdk-js@8.0.0-alpha.2","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"6d00da0e15fd07cac21627579242ee4909bbec2e","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-8.0.0-alpha.2.tgz","fileCount":4,"integrity":"sha512-rgBtWZGljFiW7tJKZdchX9OuzAX6pPkTAJl6SGeW738PnSbXnU01IdXS3wrTNeH3tywXqnRs1Ic07Wlc65cwpw==","signatures":[{"sig":"MEYCIQDvov/367huh8sxFFIeWCslKMaWqO4RcaR/ObH7ohpIXgIhAMPaSLPMElHP5vj70jYKEGHyyojlWdJ+QwD0+lKIEPl8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":498657},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"0e1bb6e55cd95482549daacabd647d5c0e814f11","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.5.2","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.13.1","dependencies":{"firebase":"^10.11.1","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.2.10","jsdom":"^24.0.0","vitest":"^1.5.2","@vitest/coverage-v8":"^1.5.2"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_8.0.0-alpha.2_1717533909557_0.23756212055502623","host":"s3://npm-registry-packages"}},"8.0.0-beta.0":{"name":"@laboratoria/sdk-js","version":"8.0.0-beta.0","license":"MIT","_id":"@laboratoria/sdk-js@8.0.0-beta.0","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"4e2ecc15483a7f17c910cba8e865060845d9a4af","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-8.0.0-beta.0.tgz","fileCount":4,"integrity":"sha512-56QBgVjfbLxaIT/NWm+pN7RZqgN5TXWFLkA5X25NiIbpUBhyXZRm6JOv+j3bhg1kZ5/fPg/Bj+Ra0+AI3L+aPw==","signatures":[{"sig":"MEYCIQDXV3gRBIGnsPy07GVHthwwzq9OWRC9kbMPeGQKLpYf7AIhAKT9YiJgZL9+MnhXgHWoB0oC3lC5pEzvg+MxSQNppnfD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":495943},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"dcb407362d2a4f2d91e57b078ca31c94ceafb0eb","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.7.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.14.0","dependencies":{"firebase":"^10.12.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.2.13","jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_8.0.0-beta.0_1718098893535_0.8317506044903171","host":"s3://npm-registry-packages"}},"8.0.0-beta.1":{"name":"@laboratoria/sdk-js","version":"8.0.0-beta.1","license":"MIT","_id":"@laboratoria/sdk-js@8.0.0-beta.1","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"17378aa0dea5d689391daa0c5efb9bb9a036c4c2","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-8.0.0-beta.1.tgz","fileCount":4,"integrity":"sha512-rOVsQVuwYSvfMDobRcebfw3ZcdnVyzVJIeTLCCbsIy2WG5EY/frk/n8wCbRe0jiZvWFVKvL9OXFgTay6ddQjBA==","signatures":[{"sig":"MEUCIDiyNlI5Hx2vZE3h46cZ1GuIwws+atG5H2HdJYNRqlhTAiEAwhyVdqPEKnM0qGSV4CW7RGGPZ6oKEjP/kT8n8UkCWtQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":495944},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"4cea735734a50b15cd6305d935d844b1770c0fb7","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.7.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.14.0","dependencies":{"firebase":"^10.12.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.2.13","jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_8.0.0-beta.1_1718104052871_0.008158855546246624","host":"s3://npm-registry-packages"}},"8.0.0-beta.3":{"name":"@laboratoria/sdk-js","version":"8.0.0-beta.3","license":"MIT","_id":"@laboratoria/sdk-js@8.0.0-beta.3","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"9cfb6546b886bd627ef7fd83ef785f12c3136723","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-8.0.0-beta.3.tgz","fileCount":4,"integrity":"sha512-+URzU7xmMKT7BNPLRi/D3PMF8YqcwC8uZBBhmIek+bfbEmAv6rcRoaq5Lg+LswlaZeWLb8zMWA58i30vMwsuGg==","signatures":[{"sig":"MEQCIDMEdCS7DLWcN/Gv2ZGQwpeXZ8E6vcz3CQTNstL0EBTYAiB9YQ+hfAMZC68hNUOk69pYZfN0co3Sf4cHWpI9sf3Mew==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":496479},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"840af852ffae331e370132c3f8170bf6f4a5b193","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.7.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.14.0","dependencies":{"firebase":"^10.12.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.2.13","jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_8.0.0-beta.3_1718118976166_0.450138682770697","host":"s3://npm-registry-packages"}},"8.0.0-beta.4":{"name":"@laboratoria/sdk-js","version":"8.0.0-beta.4","license":"MIT","_id":"@laboratoria/sdk-js@8.0.0-beta.4","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"b618bee520fefb1929ec797322d76cd12652e1c4","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-8.0.0-beta.4.tgz","fileCount":4,"integrity":"sha512-QkU9Unm/rq7Qj6MTmY2CAVVsvVreUfd9JLYCvoBZQ2oq0NafP3dBYyeKhyCiwNg2+AbWlSBPQ7Vu/DHxYsLP3A==","signatures":[{"sig":"MEUCIFQP59qqi0GFjdBDxL2IgTXzQe7T/PVYTJuPQ60Xnuo9AiEAo2UmnBOYR2P4908mC5xfNSg/IICI43iF1+bFDegmqxs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":496787},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"ddbe160b1ca0c14c9289fef95de75cbd65331203","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.7.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.14.0","dependencies":{"firebase":"^10.12.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^5.2.13","jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_8.0.0-beta.4_1718119517283_0.5824340929384999","host":"s3://npm-registry-packages"}},"8.0.0":{"name":"@laboratoria/sdk-js","version":"8.0.0","license":"MIT","_id":"@laboratoria/sdk-js@8.0.0","maintainers":[{"name":"fares.laboratoria","email":"fares@laboratoria.la"},{"name":"mfdebian","email":"alfredo.arosteguy@gmail.com"},{"name":"bouli","email":"contato@bouli.com.br"},{"name":"lupomontero","email":"lupomontero@gmail.com"}],"dist":{"shasum":"9ece3f73b54d8494103e24c1561e4e1bc8d56771","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-8.0.0.tgz","fileCount":4,"integrity":"sha512-546ppNj3s3NXz4oOdl6p9IpaEj1QYgtQduAhmS4GOqTRyeunUoDjCKgrDzCu1X6+yUPEuxE8NOV+TEKrAyc3Lg==","signatures":[{"sig":"MEUCIQCTtvHxv9DrlPxroziautLyZg5XemISg7ibAlPrQHYHvAIgG3NtfBBwK/5kiycqJDH0VbyGKCbjT0XkUHrDB9k4fRw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":496780},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"c76b5a8d818c928f2e6b39347500b1f5e91fcdc1","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.7.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.14.0","dependencies":{"firebase":"^10.12.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.2.13","jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_8.0.0_1718121393682_0.6785388707020619","host":"s3://npm-registry-packages"}},"8.1.0":{"name":"@laboratoria/sdk-js","version":"8.1.0","license":"MIT","_id":"@laboratoria/sdk-js@8.1.0","dist":{"shasum":"1d7c62c8478f612901b1ce0b28030dfb4ebfdb3e","tarball":"https://registry.npmjs.org/@laboratoria/sdk-js/-/sdk-js-8.1.0.tgz","fileCount":4,"integrity":"sha512-INwK6Gw7UAbYSvnhp06UX8n2StH3vnfsBGurZbzyQdgy9bYogc2FVz8uziuWNbEpefQwkzXB5O9Fn/LVjuYgAQ==","signatures":[{"sig":"MEUCIEC3+TlGmA6de7kl1m7bWEvuFmxRrPJQ4LPeLyaWO3mjAiEAuNneB9Qb7tjLEp/dVCJdGY+Z9vO7bHY1bUrZfp+O3l0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":497323},"main":"./dist/laboratoria-sdk-umd.js","type":"module","module":"./dist/laboratoria-sdk-es.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":"./dist/laboratoria-sdk-es.js","require":"./dist/laboratoria-sdk-umd.js"}},"gitHead":"021c74125a16b7d2d0987cebf0b1b5f0c3b2b3e4","scripts":{"dev":"vite","test":"vitest run --coverage","build":"rm -rf dist && vite build","changelog":"git log $(git tag | grep -v -E \"alpha|beta|rc\" | sort | tail -1)..HEAD --oneline --format=\"* %h %s\" | grep -v 'chore(release): Bump'"},"_npmUser":{"name":"lupomontero","email":"lupomontero@gmail.com"},"_npmVersion":"10.7.0","description":"Laboratoria JavaScript (browser) SDK","directories":{},"_nodeVersion":"20.14.0","dependencies":{"firebase":"^10.12.2","blueimp-md5":"^2.19.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.3.1","jsdom":"^24.1.0","vitest":"^1.6.0","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_8.1.0_1719423230515_0.3550677479768696","host":"s3://npm-registry-packages"}}},"time":{"created":"2021-11-17T20:53:19.827Z","modified":"2025-11-26T17:52:18.746Z","0.0.0":"2021-11-17T20:53:20.035Z","0.1.0":"2021-12-02T04:24:00.470Z","0.1.1":"2021-12-02T04:27:30.647Z","0.2.0":"2022-01-11T16:22:21.684Z","1.0.0":"2022-01-26T22:57:49.288Z","1.1.0":"2022-02-01T00:05:49.008Z","1.2.0":"2022-02-03T01:50:23.620Z","1.3.0":"2022-02-09T00:19:43.677Z","1.4.0":"2022-02-15T23:52:52.535Z","1.5.0":"2022-03-11T17:52:56.873Z","1.5.1":"2022-03-22T21:12:31.894Z","1.5.2":"2022-03-28T15:27:24.442Z","2.0.0-alpha.0":"2022-03-28T16:24:54.443Z","2.0.0-alpha.1":"2022-03-29T01:58:05.089Z","1.6.0":"2022-03-29T23:42:41.413Z","2.0.0-alpha.2":"2022-03-30T16:38:36.777Z","2.0.0-alpha.3":"2022-03-30T22:29:36.683Z","1.7.0":"2022-04-02T23:49:06.335Z","1.7.1":"2022-06-02T16:28:02.334Z","2.0.0-alpha.4":"2022-06-02T16:40:58.622Z","2.0.0-alpha.5":"2022-06-02T16:57:37.107Z","2.0.0":"2022-06-16T02:55:24.088Z","2.1.0":"2022-06-23T19:55:14.312Z","2.1.1":"2022-06-30T23:36:43.765Z","2.2.0":"2022-08-10T21:24:09.430Z","2.3.0":"2022-08-19T14:08:27.527Z","2.4.0":"2022-08-23T17:23:26.484Z","2.5.0":"2022-09-01T13:55:21.905Z","2.6.0":"2022-09-09T13:46:23.281Z","2.6.1":"2022-09-15T20:23:14.937Z","2.6.2":"2022-10-12T15:55:22.369Z","3.0.0-alpha.0":"2022-11-10T21:21:06.820Z","3.0.0-alpha.1":"2022-11-24T21:00:20.842Z","3.0.0-beta.0":"2022-12-15T16:27:05.916Z","3.0.0":"2022-12-17T00:20:23.429Z","3.1.0":"2023-01-09T16:36:35.075Z","3.2.0":"2023-01-24T21:06:54.158Z","3.2.1":"2023-01-24T21:13:59.629Z","3.3.0":"2023-01-31T12:54:49.632Z","3.4.0":"2023-02-08T12:15:35.781Z","3.4.1":"2023-02-08T12:16:23.794Z","4.0.0-alpha.0":"2023-02-14T15:33:41.218Z","4.0.0-alpha.1":"2023-02-14T15:34:26.796Z","4.0.0-alpha.2":"2023-02-14T23:53:44.045Z","4.0.0-alpha.3":"2023-02-15T20:12:12.800Z","4.0.0-beta.0":"2023-02-17T20:22:26.468Z","4.0.0-beta.1":"2023-02-21T13:22:50.501Z","4.0.0-beta.2":"2023-03-07T08:46:58.573Z","4.0.0-beta.3":"2023-03-07T12:05:19.899Z","4.0.0":"2023-03-07T18:28:42.265Z","4.0.1":"2023-04-14T11:07:15.481Z","4.0.2":"2023-04-14T11:07:57.711Z","4.1.0-beta.0":"2023-04-24T14:51:58.558Z","5.0.0":"2023-04-26T15:17:09.015Z","5.0.1":"2023-05-04T18:11:38.547Z","5.1.0-beta.0":"2023-05-26T13:42:07.055Z","5.1.0-beta.1":"2023-05-29T14:17:29.173Z","5.1.0-beta.2":"2023-05-29T14:19:14.519Z","5.1.0-beta.3":"2023-05-29T22:03:01.660Z","5.1.0-beta.4":"2023-05-29T22:03:31.757Z","5.1.0-beta.5":"2023-05-31T09:46:46.294Z","5.1.0":"2023-06-05T15:50:18.933Z","5.1.1":"2023-06-09T14:00:16.927Z","5.2.0-beta.0":"2023-06-12T15:26:46.115Z","5.2.0-beta.1":"2023-06-12T15:29:58.646Z","5.2.0-beta.2":"2023-06-12T16:13:46.387Z","5.2.0":"2023-07-05T22:13:23.456Z","5.3.0-beta.0":"2023-07-11T01:15:56.240Z","5.3.0-beta.1":"2023-07-11T01:16:39.434Z","5.3.0-beta.2":"2023-07-19T15:06:43.025Z","5.3.0-beta.3":"2023-07-19T19:53:52.680Z","5.3.0":"2023-07-22T00:37:02.221Z","5.3.1":"2023-07-22T00:43:09.564Z","5.3.2":"2023-08-14T21:28:21.407Z","6.0.0-beta.0":"2023-08-21T11:50:11.819Z","6.0.0-beta.1":"2023-08-22T19:33:09.360Z","6.0.0-beta.2":"2023-08-31T19:56:08.693Z","6.0.0":"2023-09-11T16:57:28.836Z","6.1.0-beta.0":"2023-10-24T21:51:36.362Z","6.1.0-beta.1":"2023-10-27T09:20:16.088Z","6.1.0":"2023-10-31T12:15:44.130Z","7.0.0-beta.0":"2023-11-22T23:12:41.572Z","7.0.0-beta.1":"2023-11-22T23:18:06.779Z","7.0.0-beta.2":"2023-11-22T23:24:10.930Z","7.0.0":"2023-11-22T23:49:53.114Z","7.0.1":"2023-12-12T11:15:09.942Z","7.1.0":"2024-01-11T21:21:42.147Z","7.1.1":"2024-01-24T12:01:56.284Z","7.1.2":"2024-01-24T12:08:38.510Z","7.2.0-beta.0":"2024-02-01T10:46:43.182Z","7.2.0-beta.1":"2024-02-01T17:43:48.905Z","7.2.0-beta.2":"2024-02-02T18:58:03.240Z","7.2.0-beta.3":"2024-02-08T20:33:00.863Z","7.2.0":"2024-02-09T17:54:25.058Z","7.2.1":"2024-02-13T17:52:09.002Z","7.2.2":"2024-02-13T20:17:18.903Z","7.2.2-0":"2024-02-13T20:17:20.874Z","7.2.3":"2024-02-15T06:34:23.927Z","7.3.0-beta.0":"2024-02-15T09:37:37.197Z","7.3.0":"2024-02-20T09:49:20.416Z","7.4.0":"2024-02-26T14:40:10.533Z","7.5.0":"2024-03-21T02:09:29.264Z","7.6.0-beta.0":"2024-04-25T15:19:04.035Z","7.6.0-beta.1":"2024-04-25T15:19:47.049Z","7.6.0-beta.2":"2024-04-25T20:06:55.559Z","7.6.0-beta.4":"2024-04-26T12:44:10.911Z","7.6.0-beta.5":"2024-04-26T21:13:13.360Z","7.6.0":"2024-05-14T17:09:05.035Z","8.0.0-alpha.0":"2024-05-27T18:17:16.494Z","8.0.0-alpha.2":"2024-06-04T20:45:09.707Z","8.0.0-beta.0":"2024-06-11T09:41:33.725Z","8.0.0-beta.1":"2024-06-11T11:07:33.034Z","8.0.0-beta.3":"2024-06-11T15:16:16.381Z","8.0.0-beta.4":"2024-06-11T15:25:17.460Z","8.0.0":"2024-06-11T15:56:33.919Z","8.1.0":"2024-06-26T17:33:50.683Z"},"license":"MIT","description":"Laboratoria JavaScript (browser) SDK","maintainers":[{"email":"mariano.crowe@laboratoria.la","name":"mariano-laboratoria"}],"readme":"## Laboratoria JavaScript (browser) SDK\n\n[![Node.js CI](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml/badge.svg)](https://github.com/Laboratoria/sdk-js/actions/workflows/node.js.yml)\n\n:warning: This tool is still in draft stage and is likely to change without\nnotice.\n\n## Installation\n\n```sh\nnpm i --save @laboratoria/sdk-js\n```\n\n## Usage\n\n\n```js\nimport { createApp } from '@laboratoria/sdk-js';\n\nconst app = createApp();\n```\n\nWith options:\n\n```js\nconst app = createApp({\n  firebaseApiKey: '',\n  firebaseProject: '',\n  coreApiUrl: '',\n});\n```\n\n## API\n\n### Auth\n\n```js\napp.auth.onChange(({ authUser, user }) => {\n  // `authUser` is the Firebase Auth user\n  // `user` is the user profile stored in Laboratoria Core\n});\n\napp.auth.signIn(email, password);\napp.auth.signOut();\n```\n\n### Models\n\nThe `app` object exposes data models used to access data. Each model represents\na _type_ of object, which is stored in a database table.\n\nAll models have the following methods and properties.\n\n#### CRUD methods\n\n* `create`\n* `delete`\n* `findById`\n* `findMany`\n* `update`\n* `upsert`\n\n#### Other methods\n\n* `parse`\n* `stats`\n* `validate`\n* `validateAttr`\n\n#### Properties\n\n* `relations`\n* `schema`\n\n### Model Schema\n\nEach _model_ has a _schema_ (`model.schema`) that describes the _shape_ of the\ndata, what properties (columns) it has, what data types these columns are,\nwhether they are _required_ or not, etc.\n\nThe `model.schema` is an object with the following properties:\n\n* `inputProps`: An array listing properties to be taken into account when\n  building input UI or sending data (via `model.create`, `model.update`, etc).\n* `primaryKey`: Primary key in the underlying table.\n* `properties`: An object with the model properties. Each property is described\n  by an object having the following keys:\n  - `type`: It can be: `boolean`, `integer`, `string`, `date` o una referncia a\n    un modelo, en cuyo caso el string será el nombre del modelo de prisma.\n  - `default`\n  - `enum`\n  - `format`: `date-time`\n  - `$ref`\n  - `anyOf`\n  - `items`\n  - `inputType`\n  - `isRequired`\n  - `isScalar`\n  - `isRef`\n* `type`: The schema for the whole model will always be of type `object`.\n\n***\n\n### Users\n\n```js\napp.user.findMany({\n  where: { name: { contains: 'foo' } },\n  include: { students: true },\n  take: 10,\n  skip: 0,\n});\n\napp.user.findById('some-firebase-uid', {\n  include: { gigs: true },\n});\n\napp.user.update({\n  where: { uid: 'some-firebase-uid' },\n  data: {\n    name: 'OMG',\n  },\n});\n\napp.user.delete('some-firebase-uid');\n\napp.user.create({\n  data: {\n    name: 'OMG',\n    email: 'omg@omg.omg',\n    password: 'secret',\n  },\n});\n```\n\n### Cohorts\n\n```js\napp.cohort.findMany({\n  where: {\n    end: { gt: new Date() },\n    stage: { name: 'bootcamp' },\n  },\n  include: {\n    program: true,\n    stage: true,\n    students: true,\n    dropouts: true,\n  },\n})\n```\n\n### Students\n\nWIP\n\n### Dropouts\n\nWIP\n\n### Projects\n\n```js\napp.project.findMany();\n\napp.project.findMany({ tag: 'v6.5.0' });\n\napp.project.findMany({\n  track: 'web-dev',\n});\n\napp.project.findById('cipher');\n\napp.project.findById('cipher', { tag: 'v6.5.0' });\n```\n\n### Topics\n\n```js\napp.topic.findMany();\n\napp.topic.findMany({ tag: 'v6.5.0' });\n\napp.topic.findMany({\n  track: 'web-dev',\n});\n\napp.topic.findById('javascript');\n\napp.topic.findById('javascript', { tag: 'v6.5.0' });\n```\n\n### Learning Objectives\n\n```js\napp.learningObjective.findMany();\n\napp.learningObjective.findMany({ tag: 'v6.5.0' });\n```","readmeFilename":"README.md"}