{"_id":"@adityahegde/typescript-framework","_rev":"4-83d8d2b4e6a8e6240174730649db2a01","name":"@adityahegde/typescript-framework","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.1":{"name":"@adityahegde/typescript-framework","version":"0.0.1","description":"A framework for a full stack ui in expressjs and react","main":"dist/index.js","directories":{"test":"test"},"scripts":{"build":"rm -rf dist/ && tsc -p tsconfig-build.json","test":"npm run test-mocha && jest","test-mocha":"nyc mocha test/unit/**/*.spec.ts test/functional/**/*.test.ts","docs":"typedoc --out docs src/index.ts src/*/index.ts src/*/*/index.ts src/*/*/*/index.ts"},"keywords":["typescript","decorators","framwork","fullstack","server","express","authentication","jwt","session","datastore","mongodb","mongoose","reactjs","antd"],"mocha":{"ui":"bdd","require":["ts-node/register"]},"jest":{"testMatch":["<rootDir>/test/**/*.jest.ts","<rootDir>/test/**/*.test.tsx"],"preset":"ts-jest","setupFilesAfterEnv":["./node_modules/jest-enzyme/lib/index.js"]},"nyc":{"check-coverage":true,"all":true,"extension":[".ts"],"include":["src/**/*"],"reporter":["html","lcov","text-summary"],"lines":80,"statements":80},"author":{"name":"adityahegderocks@gmail.com"},"license":"ISC","devDependencies":{"@ant-design/icons":"^4.6.4","@types/jest":"^27.0.1","@types/mocha":"^9.0.0","@types/node":"^15.6.0","@types/react":"^17.0.19","@types/react-dom":"^17.0.9","@typescript-eslint/eslint-plugin":"^4.29.3","@typescript-eslint/parser":"^4.29.3","@wojtekmaj/enzyme-adapter-react-17":"^0.6.3","antd":"^4.16.13","bcrypt":"^5.0.1","clean-webpack-plugin":"^4.0.0-alpha.0","connect-mongo":"^4.5.0","css-loader":"^6.2.0","enzyme":"^3.11.0","eslint":"^7.32.0","express-session":"^1.17.2","got":"^11.8.2","html-webpack-plugin":"^5.3.2","jest":"^27.1.0","jest-enzyme":"^7.1.2","jsdom":"^17.0.0","jsonwebtoken":"^8.5.1","less":"^4.1.1","less-loader":"^10.0.1","less-vars-to-js":"^1.3.0","mocha":"^9.1.0","mongoose":"^5.13.8","nyc":"^15.1.0","react":"^17.0.2","react-dom":"^17.0.2","react-router-dom":"^5.2.1","react-test-renderer":"^17.0.2","should":"^13.2.3","sinon":"^11.1.2","source-map-loader":"^3.0.0","style-loader":"^3.2.1","tough-cookie":"^4.0.0","ts-jest":"^27.0.5","ts-loader":"^9.2.5","ts-node":"^10.2.1","typedoc":"^0.21.7","typedoc-plugin-markdown":"^3.10.4","typescript":"^4.4.2","webpack":"^5.51.1","webpack-cli":"^4.8.0"},"dependencies":{"body-parser":"^1.19.0","config":"^3.3.6","cookie-parser":"^1.4.5","express":"^4.17.1","pluralize":"^8.0.0","validator":"^13.6.0","winston":"^3.3.3"},"gitHead":"3b139727a6801f1732e3ceabd5ff5e1cccd9c7c8","_id":"@adityahegde/typescript-framework@0.0.1","_nodeVersion":"14.17.3","_npmVersion":"7.20.3","dist":{"integrity":"sha512-1FsKTIpPgTXF8OfBSqc4MYT17zVz/2BN5rkqmJLL/ru6VF+CtkaZQmInP7w8ynHCQF1/NSQ9cHzSJL/Sgn5vWw==","shasum":"3216c21a03cd04561ee53bb6fa2b827aff60c312","tarball":"https://registry.npmjs.org/@adityahegde/typescript-framework/-/typescript-framework-0.0.1.tgz","fileCount":228,"unpackedSize":235152,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKkL6CRA9TVsSAnZWagAAlwQP+gI3dtVE22Pv/wD8qXCu\ncnoW3X3erFmoJY8GZW0tXg4JmlzOBJ0pc0AuzbkxTnVmdHwA16wpFowldof+\nFq+EAdbktD9w5jicGY2nho5swuS8tSiwFyDaPLZcB53oR1rrZe5gg5zwMLhG\nq68/luPxpSIbc2dyUUYrZS0l0PAbeurctc9VbZYbx/I5ae4Wb9sDURV2Kq2j\nQY81ra6wqssCEL9X81QxlMwqUlPclvIEGzozoXGhy/WcFqOvJP0K8wWK+ZzU\naKSEj/8SgGE8g+NL6s0r9VkQbox4Ux/nwAYIePf8pSDgLAsUxjswszgm79Fg\nBDxK6QrWX3qeB42icYUfIzWvv5oYF27YrW9/nED5ZEYDx1xfLdeWKgs8Anti\nZmh3WtkS3dmAfo20e1WzvJ5L1lStVrs078wWsyDPYrCKpG0whEL79gfxaPqI\nPshrpWGI97jAsrE+pzjyK0RYZ9n9w68HUq0wmgmiFaBeFYFWO3ZfR687CtPo\n8PKFmIsBP0ofEUA+d5mMV1LFPwXr9humtWVxWuJCRDWB7KVNOPtaPiSaZvf+\nVnEjircE3Q1Euk4sRUvt3iQcClheuyZYN2BtFKn0hzvr60wgIH95aKSHo+yX\n1HfDlOoiZuV5b3Giy0u9lRkLyEfMmvc/ZMUpBwc6iSW8v3g0kKaeRnxdrJzt\nr78n\r\n=zZeg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG5pYNhWfah9iX5kMKOnvbgYxvVuGD8GDi1R76EfKP+mAiEAnC6Vr9AbmDIutPSdUsc/BFxbFHSFmyQTcHF9vhm56yY="}]},"_npmUser":{"name":"adityahegde","email":"adityahegderocks@gmail.com"},"maintainers":[{"name":"adityahegde","email":"adityahegderocks@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-framework_0.0.1_1630159610210_0.8862880524092496"},"_hasShrinkwrap":false},"0.0.2":{"name":"@adityahegde/typescript-framework","version":"0.0.2","description":"A framework for a full stack ui in expressjs and react","main":"dist/index.js","directories":{"test":"test"},"scripts":{"build":"rm -rf dist/ && tsc -p tsconfig-build.json","test":"npm run test-mocha","test-mocha":"nyc mocha test/unit/**/*.spec.ts test/functional/**/*.test.ts","docs":"typedoc --out docs src/index.ts src/*/index.ts src/*/*/index.ts src/*/*/*/index.ts"},"keywords":["typescript","decorators","framwork","fullstack","server","express","authentication","jwt","session","datastore","mongodb","mongoose","reactjs","antd"],"mocha":{"ui":"bdd","require":["ts-node/register"]},"jest":{"testMatch":["<rootDir>/test/**/*.jest.ts","<rootDir>/test/**/*.test.tsx"],"preset":"ts-jest","setupFilesAfterEnv":["./node_modules/jest-enzyme/lib/index.js"]},"nyc":{"check-coverage":true,"all":true,"extension":[".ts"],"include":["src/**/*"],"reporter":["html","lcov","text-summary"],"lines":75,"statements":75},"author":{"name":"adityahegderocks@gmail.com"},"license":"ISC","devDependencies":{"@adityahegde/misc-scripts":"^1.0.1","@adityahegde/typescript-test-utils":"^1.0.1","@ant-design/icons":"^4.7.0","@types/jest":"^27.0.2","@types/mocha":"^9.0.0","@types/node":"^16.11.7","@types/react":"^17.0.35","@types/react-dom":"^17.0.11","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","@wojtekmaj/enzyme-adapter-react-17":"^0.6.5","antd":"^4.16.13","bcrypt":"^5.0.1","clean-webpack-plugin":"^4.0.0","connect-mongo":"^4.6.0","css-loader":"^6.5.1","enzyme":"^3.11.0","eslint":"^8.2.0","express-session":"^1.17.2","got":"^11.8.2","html-webpack-plugin":"^5.5.0","jest":"^27.3.1","jest-enzyme":"^7.1.2","jsdom":"^18.1.0","jsonwebtoken":"^8.5.1","less":"^4.1.2","less-loader":"^10.2.0","less-vars-to-js":"^1.3.0","mocha":"^9.1.3","mongoose":"^6.0.13","nyc":"^15.1.0","react":"^17.0.2","react-dom":"^17.0.2","react-router-dom":"^5.3.0","react-test-renderer":"^17.0.2","should":"^13.2.3","sinon":"^12.0.1","source-map-loader":"^3.0.0","style-loader":"^3.3.1","tough-cookie":"^4.0.0","ts-jest":"^27.0.7","ts-loader":"^9.2.6","ts-node":"^10.4.0","typedoc":"^0.22.9","typedoc-plugin-markdown":"^3.11.6","typescript":"^4.4.4","webpack":"^5.64.1","webpack-cli":"^4.9.1"},"dependencies":{"body-parser":"^1.19.0","config":"^3.3.6","cookie-parser":"^1.4.6","express":"^4.17.1","pluralize":"^8.0.0","validator":"^13.7.0","winston":"^3.3.3"},"gitHead":"7ced1c301deda0da634b4d85ad307b2669d25037","_id":"@adityahegde/typescript-framework@0.0.2","_nodeVersion":"14.17.3","_npmVersion":"7.20.3","dist":{"integrity":"sha512-HAGxyBAtoa7NBBPFU1FjT0fETBSHKdu0n6HIEAHmo6vbxnmUVzE+qTqu8SzgbxZFx7xwP3iV3LERRnN/yNkDjQ==","shasum":"dfa8933170ccffabd0c63c314be25205d3ca764e","tarball":"https://registry.npmjs.org/@adityahegde/typescript-framework/-/typescript-framework-0.0.2.tgz","fileCount":216,"unpackedSize":221717,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlJrWCRA9TVsSAnZWagAAJZsP/i9T3WMwKEho2kD6KVNp\nZLlRnwd6EX5wqJEi/pSF7nkVJe8SXY57xhm8Urwa1RmD/IBVHVfflTQqKxsI\nuSoquBG5CXBybHBCmqU/bYRwxbFy7CQ31lg5a9J84VupGT5+/eThWpMR71/q\nHrtolJAXCQEL1JxGGZbgNL+mohTmD+nxPTuAzQScJeiZG4TiU63hiNg+DdoD\nIgpQJbdjHziy9m3hWtg0a/XYX/bHzk5PfXzro3gLXYxs+arWhyCl1daOxvEs\nHJcxuXSynDwa1glbXwp8Sun2vGegdT/urvRSaUuTlEuiWL4Fze2s6Hwvk212\nM8HOUqrrssg3dE8IcC+0XeygOhkL7WKUjp4991cqLATfn26+bVDxxcOGyC1K\nCjJSoR5QvoKzB8AZkC4Zt7OCbEWzr38yFHKuXRijzsblgygYVdD80amm5CIH\nhTXaQAwwMDandRv0qa3RwxHAf+OW0Y+aVpYhqFnlHjSEYsfmJ+2LvfoH7n8Z\nEjavqOG9l4eF4/0V2tdmxYsCfIBPlMtwon6RgmremR7l/C+sYvukOeddPuaA\nIKlpL13bqyz79l23pAm92c4njp1wINSeKHQpN/LRb8FSz6Udp3/Xq25qB+Uh\nygfbAC2a3aPmVY+I8cQXNQq0D84wRbWbU66YkkYYYICtPCixbMoLiGuT1RgD\nnw2y\r\n=2vvr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCc1HjhuEaxv5VWvqSGseBagFEh7uAMGx6b6Tok7NafYQIgN9i60/TvCXXh9acSzZEeMJDaiGbXDUPc4N7Mhus5CF0="}]},"_npmUser":{"name":"adityahegde","email":"adityahegderocks@gmail.com"},"maintainers":[{"name":"adityahegde","email":"adityahegderocks@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-framework_0.0.2_1637128918473_0.20880491010260394"},"_hasShrinkwrap":false},"0.0.3":{"name":"@adityahegde/typescript-framework","version":"0.0.3","description":"A framework for a full stack ui in expressjs and react","main":"dist/index.js","directories":{"test":"test"},"scripts":{"build":"rm -rf dist/ && tsc -p tsconfig-build.json","test":"npm run test-mocha && npm run test-jest","test-mocha":"nyc mocha test/unit/**/*.spec.ts test/functional/**/*.test.ts","test-jest":"jest","docs":"typedoc --out docs src/index.ts src/*/index.ts src/*/*/index.ts src/*/*/*/index.ts"},"keywords":["typescript","decorators","framwork","fullstack","server","express","authentication","jwt","session","datastore","mongodb","mongoose","reactjs","antd"],"mocha":{"ui":"bdd","require":["ts-node/register"]},"jest":{"testMatch":["<rootDir>/test/unit/**/*.test.tsx"],"preset":"ts-jest","setupFilesAfterEnv":["./test/unit/ui/setupTests.ts"]},"nyc":{"check-coverage":true,"all":true,"extension":[".ts"],"include":["src/**/*"],"exclude":["src/ui/**/*"],"reporter":["html","lcov","text-summary"],"lines":75,"statements":75},"author":{"name":"adityahegderocks@gmail.com"},"license":"ISC","devDependencies":{"@adityahegde/misc-scripts":"^1.0.1","@adityahegde/typescript-test-utils":"^1.1.1","@ant-design/icons":"^4.7.0","@testing-library/jest-dom":"^5.15.0","@testing-library/react":"^12.1.2","@types/jest":"^27.0.2","@types/mocha":"^9.0.0","@types/node":"^16.11.7","@types/react":"^17.0.35","@types/react-dom":"^17.0.11","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","@wojtekmaj/enzyme-adapter-react-17":"^0.6.5","antd":"^4.16.13","bcrypt":"^5.0.1","clean-webpack-plugin":"^4.0.0","connect-mongo":"^4.6.0","css-loader":"^6.5.1","enzyme":"^3.11.0","eslint":"^8.2.0","express-session":"^1.17.2","got":"^11.8.3","html-webpack-plugin":"^5.5.0","jest":"^27.3.1","jest-enzyme":"^7.1.2","jsdom":"^18.1.0","jsonwebtoken":"^8.5.1","less":"^4.1.2","less-loader":"^10.2.0","less-vars-to-js":"^1.3.0","mocha":"^9.1.3","mongoose":"^6.0.13","nyc":"^15.1.0","react":"^17.0.2","react-dom":"^17.0.2","react-router-dom":"^6.0.2","react-test-renderer":"^17.0.2","should":"^13.2.3","sinon":"^12.0.1","source-map-loader":"^3.0.0","style-loader":"^3.3.1","tough-cookie":"^4.0.0","ts-jest":"^27.0.7","ts-loader":"^9.2.6","ts-node":"^10.4.0","typedoc":"^0.22.9","typedoc-plugin-markdown":"^3.11.6","typescript":"^4.4.4","webpack":"^5.64.1","webpack-cli":"^4.9.1"},"dependencies":{"body-parser":"^1.19.0","config":"^3.3.6","cookie-parser":"^1.4.6","express":"^4.17.1","pluralize":"^8.0.0","validator":"^13.7.0","winston":"^3.3.3"},"gitHead":"0db6905b6e30ff0e8f897dc8b917243955c94402","_id":"@adityahegde/typescript-framework@0.0.3","_nodeVersion":"14.17.3","_npmVersion":"7.20.3","dist":{"integrity":"sha512-p0v4wPU+KCFS6z0H0ZXTEUZGteCYGOZK5oxxQ4nUEnwpOcutA2mIuz3bJTkipBlVGHZKPs6lCsaydMErLHjSgA==","shasum":"5c4fd05f0029dd296081fe1aa3d3e4ddd136e841","tarball":"https://registry.npmjs.org/@adityahegde/typescript-framework/-/typescript-framework-0.0.3.tgz","fileCount":216,"unpackedSize":221901,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlfamCRA9TVsSAnZWagAAjfQP/jL7tXR+Vs5nmgZwTqQS\ncAZmrPWY3sNg9GqeZrkOsvwsx2IWbzOJUVCeEl5ZLv3YkGHW7ZMpRWMCYS28\n9Sn2ek7YXldBi6GT8TcxRZ1pTgp5tLU8HTK9LF8Qqbv+PnjOxZSp8sIWnosm\ngjbcGdi888Xf66inKJ+5prkinQqHKPD6Gem6BTTlO43gMhKTdS8X/iavGcPO\nsGqS5nJglLgIYV3UsDk7uFQZE6JWsvWkUVE0xdsVoGUjDqt0BHtCV75H3A6C\n/lHeHVWlmLpWpmkKhf4NaIaQm42NZKawIVH/lnnreQgCV6YvK6c82nDe6dZn\nj6pjLD60PaiUDnzTWNzC45BGHv5vLku7PQZ5MHBNzlMNm2XHrs894SQve0gO\nEMeBbyZ+zjrqkvFhmKKWDMQ+/nszwISy9p79KZC3HKQoRgFD97FMa1m1wzPR\nQdQh6WF7u5HKcLj/iXbmGniVZ4U7/WKS/iZZl0xVN5I4UBbIa0KLKcUL4U1T\nnFHmwWBrOnJx7wodGd2DC6Yaq/3YnqjDYiSEsW93uqDfK9hHL7VDJ7/BUKdf\n6gfXwOKgMk8S78NBuK60ISqoOrdXzfRwVkrlv0MiY2acSglESKS0vzPdMVFV\nxJ8TEYyl1y3jv1TCZdn7jXiJncfgIMNinIGDTLGyd/6txK6wS6fgJzGawrmD\nBtB1\r\n=dopp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHm91RZIIzLBAP5DdeK4LOBMM9O0IY1LFuxwQYTPorAZAiAXl8tEcua9F6zlz1FEI9czKaKwJzkLo7tq3TsmuvPrPA=="}]},"_npmUser":{"name":"adityahegde","email":"adityahegderocks@gmail.com"},"maintainers":[{"name":"adityahegde","email":"adityahegderocks@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-framework_0.0.3_1637217958423_0.7041458855541811"},"_hasShrinkwrap":false},"0.0.4":{"name":"@adityahegde/typescript-framework","version":"0.0.4","description":"A framework for a full stack ui in expressjs and react","main":"dist/index.js","directories":{"test":"test"},"scripts":{"build":"rm -rf dist/ && tsc -p tsconfig-build.json","test":"npx jest --verbose","docs":"typedoc --out docs src/index.ts src/*/index.ts src/*/*/index.ts src/*/*/*/index.ts"},"keywords":["typescript","decorators","framwork","fullstack","server","express","authentication","jwt","session","datastore","mongodb","mongoose","reactjs","antd"],"jest":{"testMatch":["<rootDir>/test/**/*.test.ts","<rootDir>/test/**/*.test.tsx"],"preset":"ts-jest","setupFilesAfterEnv":["./test/setupTests.ts"],"testTimeout":500000},"nyc":{"check-coverage":true,"all":true,"extension":[".ts"],"include":["src/**/*"],"exclude":["src/ui/**/*"],"reporter":["html","lcov","text-summary"],"lines":75,"statements":75},"author":{"name":"adityahegderocks@gmail.com"},"license":"ISC","devDependencies":{"@adityahegde/misc-scripts":"^1.0.1","@adityahegde/typescript-test-utils":"^1.2.4","@ant-design/icons":"^4.7.0","@playwright/test":"^1.16.3","@testing-library/jest-dom":"^5.15.0","@testing-library/react":"^12.1.2","@types/express":"^4.17.13","@types/jest":"^27.0.2","@types/node":"^16.11.7","@types/react":"^17.0.35","@types/react-dom":"^17.0.11","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","antd":"^4.16.13","bcrypt":"^5.0.1","clean-webpack-plugin":"^4.0.0","connect-mongo":"^4.6.0","css-loader":"^6.5.1","eslint":"^8.2.0","express-session":"^1.17.2","got":"^11.8.3","html-webpack-plugin":"^5.5.0","jest":"^27.3.1","jsdom":"^18.1.0","jsonwebtoken":"^8.5.1","less":"^4.1.2","less-loader":"^10.2.0","less-vars-to-js":"^1.3.0","mongoose":"^6.0.13","playwright":"^1.16.3","react":"^17.0.2","react-dom":"^17.0.2","react-router-dom":"^6.0.2","react-test-renderer":"^17.0.2","should":"^13.2.3","sinon":"^12.0.1","source-map-loader":"^3.0.0","style-loader":"^3.3.1","tough-cookie":"^4.0.0","ts-jest":"^27.0.7","ts-loader":"^9.2.6","ts-node":"^10.4.0","typedoc":"^0.22.9","typedoc-plugin-markdown":"^3.11.6","typescript":"^4.4.4","webpack":"^5.64.1","webpack-cli":"^4.9.1"},"dependencies":{"body-parser":"^1.19.0","config":"^3.3.6","cookie-parser":"^1.4.6","express":"^4.17.1","pluralize":"^8.0.0","validator":"^13.7.0","winston":"^3.3.3"},"gitHead":"811738f4ed1cc54628aa978d383fadc32ecf3463","_id":"@adityahegde/typescript-framework@0.0.4","_nodeVersion":"14.17.3","_npmVersion":"7.20.3","dist":{"integrity":"sha512-VjjaSEfJf2w7xjdRsgHKHG8QETRAVLnQVNkUfRSP82BzJFDwIwziJLyH+N/Ok9lub3o1UdnkrqPd8H/7WNZ1PA==","shasum":"fe4391bde9ef390dff2d7ae6ff46a1d531b7f55e","tarball":"https://registry.npmjs.org/@adityahegde/typescript-framework/-/typescript-framework-0.0.4.tgz","fileCount":224,"unpackedSize":231613,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqgr3CRA9TVsSAnZWagAA/w8QAJ1C09Xhv/eWsiIdctHi\nDsn9+vlDdnnjIfXD1g2udAHCgVX+UgtQVE+StPg9vyZPV2ZkppzABjlLYwpF\nyB/DHS5nJFLEjeZR6LJPErz9GwvB0A6GhIiT/GAYfciiD9z1rb3IkUrC+lgk\nhsTmcOzSL80p+ur2zEBVq1rOAI8sWbLA2N0hm5EQc7GEaEKCd2P5UuSfMLa6\nD2ltHQckLJFx4lF6xdL8eEFxMc7lMKBaWwE5yW3Qtz6IaF0RwpMILN3yuSoU\nmY/2TY26rY1ne6rnKt2bHALVb5a7ZqWjWVQF3h+fN59d9El/iOGZ9D0QOoyp\nNv5N5uAsXA+fyvVNG5ZRBP/meYSk6RP6JNGxa65hg+MVAjOC5myTLDgFW27z\nZpO0MB1TvWVZ3m6CUKg/3Pa4k0SmphIM9EYifqx0k0fX2jUBBkPoG2I/Ku/x\n0PZDFXZIY+drkTEbG0fZUdUXx/iMtIk88CiJ68ZwzMewJVA15UV5XxS9G6ed\n/VytWVrLXcL/MdEIIQy0vDuN7Xfw309MOY8GRayv/7+wUd4KhbcZR/cAlNjD\nZ3tkkJ9kUJw9s8gbG3EBo+ZlrjDh9W0elAOrN2pT6ATB2aYAEt/qZKfB5xvP\nSljScB3k276FpgeGZqmumz77vxA3G4erxTGaUAWuI80N092D2pk9zsLCvfzO\nxc+a\r\n=/NbT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4nGD6bTaEpGw0sEC/Mrp5ZdVS8jwC50JlFjEeqYfqPwIgPfDbNg2qKSNPAzDLPqRJAjDm30m9o84O24vOg0erh6c="}]},"_npmUser":{"name":"adityahegde","email":"adityahegderocks@gmail.com"},"maintainers":[{"name":"adityahegde","email":"adityahegderocks@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typescript-framework_0.0.4_1638533879095_0.49737735768542835"},"_hasShrinkwrap":false}},"time":{"created":"2021-08-28T14:06:50.151Z","0.0.1":"2021-08-28T14:06:50.469Z","modified":"2022-04-04T11:30:53.356Z","0.0.2":"2021-11-17T06:01:58.666Z","0.0.3":"2021-11-18T06:45:58.583Z","0.0.4":"2021-12-03T12:17:59.273Z"},"maintainers":[{"name":"adityahegde","email":"adityahegderocks@gmail.com"}],"description":"A framework for a full stack ui in expressjs and react","keywords":["typescript","decorators","framwork","fullstack","server","express","authentication","jwt","session","datastore","mongodb","mongoose","reactjs","antd"],"author":{"name":"adityahegderocks@gmail.com"},"license":"ISC","readme":"# typescript-framework\n\nA full stack framework with Express.js for server and React.js for UI. This is a very much work in progress. API will change.\n\nCheck test/functional/ui/app folder for a real life use case.\nCheck docs folder for detailed API docs.\n\n## Models\nUtility package used to define models for a React app. Models are defined using various decorators.\n\n# Creating a Model\nTo create a model in the ecosystem the model class has to extend BaseType and have ModelMetadata.Model decorator.\n\n```typescript\nimport {\n  ModelMetadata,\n  TextField,\n  DisplayField,\n} from \"@adityahegde/models\";\n\n@ModelMetadata.Model({\n  // Overrides the singular representation.\n  // By default it will be class name with 1st letter as lower case.\n  singular: \"sample\",\n  // Overrides the plural representation.\n  // By default it will be output of pluralize pacakge of singular attribute.\n  plural: \"samples\",\n  // API base for the model. This is used to build the api route for this model.\n  // apiPath = `${apiBase}/${plural}`\n  apiBase: \"/api\",\n  // Specifies the base class for a polymorphic inheritance.\n  // NOTE: Not implemented just yet.\n  polymorphic: \"\",\n})\nclass SampleModel extends BaseType {\n  @DisplayField()\n  // Add field decorators at the end for other decorators to work\n  @TextField()\n  public textField: string;\n}\n```\n\n## Server\nHas various classes to easily build an endpoint for models and serving the UI.\n\n## UI\nHas different components for UI elements that are rendered based on model's configuration.\n","readmeFilename":"README.md"}