{"_id":"nestjs-objection","_rev":"39-8ff74d5fcfe8540a2b5d1a0e2c31dcac","name":"nestjs-objection","dist-tags":{"latest":"3.0.0","test":"3.0.0-test.2"},"versions":{"0.0.1":{"name":"nestjs-objection","version":"0.0.1","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","main":"dist/index.js","scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","test:e2e":"jest --config ./tests/jest-e2e.json --runInBand","test:e2e:dev":"jest --config ./tests/jest-e2e.json --runInBand --watch","prerelease":"npm run build","release":"release-it"},"dependencies":{"@nestjs/common":"^6.10.14","knex":"^0.20.10","objection":"^2.1.3","reflect-metadata":"^0.1.13"},"peerDependencies":{"@nestjs/common":"^6.7.0"},"devDependencies":{"@nestjs/cli":"^6.13.2","@nestjs/schematics":"^6.8.1","@nestjs/testing":"^6.10.14","@types/express":"^4.17.2","@types/jest":"25.1.2","@types/node":"^13.1.6","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","eslint":"^6.7.2","eslint-config-prettier":"^6.7.0","eslint-plugin-import":"^2.19.1","jest":"^24.9.0","prettier":"^1.18.2","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.0","ts-loader":"^6.2.1","ts-node":"^8.6.0","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"gitHead":"47ab7951b7a80e3d9b47cc0a99477c331ebc4329","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@0.0.1","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-ktdIaSVtjHmCvor/l5V3J1oR3NonG9kI10qoOwHbreXysNP1y4SLj3Cm90W+eQFhxWGgf+5sSZB9qBTtqOzpEg==","shasum":"72b4d086297e45c1c5bda2f34751b1bbaf64c7f1","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-0.0.1.tgz","fileCount":32,"unpackedSize":398149,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeVePmCRA9TVsSAnZWagAAxDMP/14xB16JYC3mlSte9uMq\nsxMflGm64AkRfU9eMRx8Ksq2sgLOa20YqK9b4E4cD6PkR2w4ZAO+uKPowVqz\nPXXSglN371zhLgpz6HVjhlPt8WYCfp5EpxctMS7ZpWtgxsb7uDhGtrjSxJsf\n0HtG+7jvpGpE+Pt035m2mJkTcQaju5CQE1WblMrWgcSAtcdMUB5cIOkre5nu\n19ZWPgdYbtNnHamMACqz7EnEe7yYms1mZG4QtiU3/ySlY6QVhdOYFx+kcmlt\nj6w6/NaUgcNtoi9hKJvWs5ORmAiZkfX+6QUqA37BeZ9SCC9kUN/qzOOzaByU\nCAZtuctXBSmUtTXYZHVXWL+V/TzSsQLnVOA2K5TIbmN+Xr6u1m/1qiSq8NV1\nvbv2mt6p5MiWwh26mksNdfhnbr3ED0VWwXAwoIaLrKMJ29w/ExyfRaoSMHlw\nbHpPVG7HOjoxmJEeDOA4FTQ8AmTpdpxDSRgTpE+6mwJjcb7CWU6KbJmjh7bC\nZ2NQRfiqxM759wD+6abPbr6+jA31uOL7bhmtsQF+MFbNI2lpBb3tebRvZMFm\nDhNrXtTZt4dWHxP5EV/PGu/EzO6tCBLiNOGdnYT2o/aj/nxg6vTPb9oyuPZu\nfUNh/xFnww/DymOzNOfIsMj3g0FRcH5ULUD28kDV+asA6CbEvkFXjYosF+KY\nblqA\r\n=Bx8w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBGt4PGqRFNrLlxqnEaPn9AYpEPibg0wWjlEKVAS5W8QIhAIe3dhAbxjbRoj+ITM+pNiyPmt9YrrnVLFgEC4YFxgDm"}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_0.0.1_1582687206331_0.261919666388557"},"_hasShrinkwrap":false},"0.0.2":{"name":"nestjs-objection","version":"0.0.2","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","main":"dist/index.js","scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","test:e2e":"jest --config ./tests/jest-e2e.json --runInBand","test:e2e:dev":"jest --config ./tests/jest-e2e.json --runInBand --watch","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/cli":"^6.13.2","@nestjs/common":"^6.11.8","@nestjs/core":"^6.11.8","@nestjs/schematics":"^6.8.1","@nestjs/testing":"^6.10.14","@types/express":"^4.17.2","@types/jest":"25.1.2","@types/node":"^13.1.6","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","eslint":"^6.7.2","eslint-config-prettier":"^6.7.0","eslint-plugin-import":"^2.19.1","jest":"^24.9.0","knex":"^0.20.10","objection":"^2.1.3","prettier":"^1.18.2","reflect-metadata":"^0.1.13","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.0","ts-loader":"^6.2.1","ts-node":"^8.6.0","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"gitHead":"8b3418e339ed2c976d5644b4545d6a67809da25f","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@0.0.2","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-GYMD1rvbey+UqgrBpqF+xw6I8ludgKa8faPvHgv2jl0iBsDs+IBeKVOwJSEGUpgmJQDkuWAfAP4SEcqfRic8Fw==","shasum":"5110fff1ecca335ec39c330e07d474c4e2464f58","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-0.0.2.tgz","fileCount":32,"unpackedSize":395864,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeVlrXCRA9TVsSAnZWagAAZzwP/A60NckFfzeiwY3/eLgU\n6zhZyddf5Ms0jqjkUGwrGQx0Dl4HPfLRole2OvSOuwP3vktjoODYPYMB0jYO\nA5BjTw+IsHDZMm7Dgscm6mkdFkzrjMjg3GP3ZEtMT5U7D2oUC7vQYmQwOtkU\neV8FcYjRFl2iWwI2LOxExO7HhU33tozv4veT1Hv+Ryy5K9QInWtFoxc+o1wY\nYRmC+C1zY97ONa1rTFpWjdTkLXg6E5kREw1+U2/XAufgxwgPA5hlKrODNJk1\nW87cjfKPC7YRK4iUHIDGudDwqc387LJp968oBm4ZtIcKnWsGQVPboSgFYBpl\n6aqA4D+cwAafnY+bMuv/XztJmGv7S49e8p6hdcG9lzhEpLfpk6iHk2nFYUwC\nCl80VjEeMgwCuXrzBD9J7Yt78bJd75IXb/0tfQupl1aVsX3HyDpliHHS4lpj\nBncmWSCf7oegm2+F+kvDztLD4a1g4jRcXLsx+d+pMeWALD/onO7xORzC5L8D\nHAgLqE5wQdH9+7pJNKufy8UW2tflPNR2a5XOJYehDOOnjAtwnRsWIoShPa5g\nJb0OJUzxeUfTGAhf8GJtxJYYx+NKL64tc1YbPZe5FW/hUjSz7ZuBu9pVrw16\nGnjVdKqynhuWp2+55bx8HjieAFrMNim0+vhQ1DoVRfq3Z/GA5Mpfw+5vMySY\nVCAz\r\n=s0zs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDa/oup1tj4PL1rbJlPRe/Z/xzN8ke90uwQInZlX4cgxAIgU07UnRvqgBLT7EB8RRcmySnMAXN7qaqq2cV07Xu4V4E="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_0.0.2_1582717655213_0.8646116515410049"},"_hasShrinkwrap":false},"0.0.3":{"name":"nestjs-objection","version":"0.0.3","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","main":"dist/index.js","scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","test:e2e":"jest --config ./tests/jest-e2e.json --runInBand","test:e2e:dev":"jest --config ./tests/jest-e2e.json --runInBand --watch","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/cli":"^6.13.2","@nestjs/common":"^6.11.8","@nestjs/core":"^6.11.8","@nestjs/schematics":"^6.8.1","@nestjs/testing":"^6.10.14","@types/express":"^4.17.2","@types/jest":"25.1.2","@types/node":"^13.1.6","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","eslint":"^6.7.2","eslint-config-prettier":"^6.7.0","eslint-plugin-import":"^2.19.1","jest":"^24.9.0","knex":"^0.20.10","objection":"^2.1.3","prettier":"^1.18.2","reflect-metadata":"^0.1.13","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.0","ts-loader":"^6.2.1","ts-node":"^8.6.0","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"gitHead":"30ce46d0e27f94a23f510e374a8878c8afb12498","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@0.0.3","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-eGgYRaS3nd8cmaJRIGLej8T3SNz0a2OOvWQfZ5Q5gu6Z3ZHn6gpaWxTzfz24Js2dVagzwi6YjV5hQM/pDGHo4g==","shasum":"9ce565c8a738e5ce33b4d6fd05319d3406096a99","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-0.0.3.tgz","fileCount":32,"unpackedSize":405711,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeVsBPCRA9TVsSAnZWagAArikP/RdJ16JmZ5sPbnmcmBhl\nSWMYiPCLuNthSRVIXgbJmQ5y4TgcL8lrkBXEEOGd6rLjrNamPGfWt5OA8hZR\nMvBpnwgTIb++yiDwtYLeRchqtsfwrgsWu8kZYfKqXAI2F9TvRCwsoxkRDlnK\nPSzxVDWc8AZSL12wqIYirRegjmeLz7IsV2zO3Ie2cLDesv54JJS8pkkP5EeI\nBKEeCb+bmG7a8lC1wW46DYVDdHudOkN06aXcQOoJEj6lC9OB76hBfrn95y+Q\n8TEqMHNAm+ftP7e28/ViuY2wvtcIXa2c5q2elnywxcILPYGuVGfjuIp1gNG+\n4dOmUymX22/JwBd5caIBF2xGbDAZCHgeoWkggafOxuQyK6lYnEecCbkP8CnN\nirqu9IjrmdigyYEjRZFZcrm7nGFGtqJukQXWfiKjpDXDs/cd4LxeeazQ+ayn\nTHcu0YZB3y6BqAe4RU/4L/nC5d5TGxYJ2wqc4zXJh0RO02lecQgCFiLPaCjB\nWU3rLdXyhd3iAVRJT9h6Yb15fpwQcO2zBHoqP+I6y1GksggGHB4cNTlWhZsc\nLbaVPULFC6V9PW8xgZ1bJLOJmUArKa9t/5d8/++SXh7LOtlt3BTL1OnlDDjB\nx165XCDWbaDzzOmAMhxwVM9Wei1IIt/jln7DXKP8x15Ga2c3q85cMSyd62Jr\nL0Ex\r\n=rp89\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDtEjI8CyYnEnHsHPkBBlRmrgZyHawQ6/dd9wvpkblCUAiEAmUppA6zbD8OXLgkHApyaLudlIq2tC+sSD5GmlkZGOgs="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_0.0.3_1582743631364_0.8368559460979128"},"_hasShrinkwrap":false},"0.0.4":{"name":"nestjs-objection","version":"0.0.4","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","main":"dist/index.js","scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","test:e2e":"jest --config ./tests/jest-e2e.json --runInBand","test:e2e:dev":"jest --config ./tests/jest-e2e.json --runInBand --watch","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/cli":"^6.13.2","@nestjs/common":"^6.11.8","@nestjs/core":"^6.11.8","@nestjs/schematics":"^6.8.1","@nestjs/testing":"^6.10.14","@types/express":"^4.17.2","@types/jest":"25.1.2","@types/node":"^13.1.6","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","eslint":"^6.7.2","eslint-config-prettier":"^6.7.0","eslint-plugin-import":"^2.19.1","jest":"^24.9.0","knex":"^0.20.10","objection":"^2.1.3","prettier":"^1.18.2","reflect-metadata":"^0.1.13","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.0","ts-loader":"^6.2.1","ts-node":"^8.6.0","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"gitHead":"68165705bca13c7f20975f8c671cb40db178cbfa","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@0.0.4","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-Kmy2NV3chvv5KoEiC6rmvBjpTxhU/uRJ9HvL+qtuseWW07X8TaX8T4c7AGZ04T5bElIPWhl6wQbQlH3GUIpQLg==","shasum":"fcffe83c7d937354d5f591fd6910198254f19d5b","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-0.0.4.tgz","fileCount":32,"unpackedSize":406914,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeVuaQCRA9TVsSAnZWagAATycP/04gWWC4mVXkIJEG7Bgt\nXLYf/C/XnLxgP2ptomTacc0P42mCQ+SgSwkDk+2F3AC8UuN/lpzf6J2hb3Qw\nM6Nbp44oqLnPTVcpudZf8z2TXsqdawMVlsnhHG2/7JOSGNqg8xNEWv0lIS1H\nODXUIh7sf4J4yOVH6QtSdWwIc6skHouvlFW3vTM0ZgkqSljURI/89mah14Zp\nfJKPDe2cI9c9v2aMWxp1iNoTbPWVvf6XPlqiTM7obk5BqN50VQDmkjKjtb/o\nRvJo9WLDyT9b6YbDVOAdgff4x4EY9OJ2YQ80hXkALCAdMOPAEdrHnVv2tgPm\nP6Ultxw2TuRkE9bpUiABWXj+vLc/xAX395cDQAXSvaK4kaLQQYP+JJzBF9jV\nj5QJE2OgqiQWrcAU9bl1ZTb0GoNmCcbz6p0yxYpZ1A9QOwk+sr7Vg3ES2ofg\nnSuQW6Qkg8wUrqDNrdK30vTo+oJfRHO1UImTJAwJoheDE9vbtOHm8nNiMLaj\nvOH4HIFFkZEEakVnHilWkCdVmGNBc5+4VDNt8cdcJZCEckCILTtEmkxsfyzN\nrRQSoN9K+LIlL7SWquS0FRmEQ9WiGaqF07oBn2t3kTjozR8LeybZyAfW0D5b\nsKUFdJACXdVRbgyhc7vJpmFIlYvEJBl2fK//aj8jjMe62kDGbAsZ76Sl/pLQ\n81jv\r\n=qr7j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjDVY+emWtCuFVgY1YZS5fwZ1HN22UxASLgN8IB2gBygIhALlhnqwEKWOoi7YptJ/OfSbTdECRdyO+XgG79V+gHexd"}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_0.0.4_1582753423553_0.4049027708374031"},"_hasShrinkwrap":false},"0.0.5":{"name":"nestjs-objection","version":"0.0.5","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","main":"dist/index.js","scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","test:e2e":"jest --config ./tests/jest-e2e.json --runInBand","test:e2e:dev":"jest --config ./tests/jest-e2e.json --runInBand --watch","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/cli":"^6.13.2","@nestjs/common":"^6.11.8","@nestjs/core":"^6.11.8","@nestjs/schematics":"^6.8.1","@nestjs/testing":"^6.10.14","@types/express":"^4.17.2","@types/jest":"25.1.2","@types/node":"^13.1.6","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","eslint":"^6.7.2","eslint-config-prettier":"^6.7.0","eslint-plugin-import":"^2.19.1","jest":"^24.9.0","knex":"^0.20.10","objection":"^2.1.3","prettier":"^1.18.2","reflect-metadata":"^0.1.13","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.0","ts-loader":"^6.2.1","ts-node":"^8.6.0","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"gitHead":"45f7753bd897590298c3cacd57b90b749a061aed","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@0.0.5","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-o9z5iq7JuH3nNZ6wcr9iaRPDHhifZPopb3Q5yI+1Uevn24DYltdmj2ya7mZg4QOSM/BsHsWyShdOeqvhiLzKnQ==","shasum":"a599a6bcf62fb1c93c0b413c9e5fa3f5fbb4867e","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-0.0.5.tgz","fileCount":32,"unpackedSize":406909,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeVucDCRA9TVsSAnZWagAAoGgP/Rl+ssXd7NsyQ3IAyyEJ\n6/PWFRIlLb1TZRTqfpSEeyiHQV+hN9nMwGKYdBcYhYLlLgb+1SjvPGWoi9Nm\niZrtBUYNQ33XJje7nMbhc30H/ow8b0vHZ3xM+WCQ24kfSj6Dpq/vv1+uFm3l\nqtPyid+RyXR4IGLvfOGrPxzvvgheXgI27QWW3GipbY/OY3mrmCuQPx4R4FJQ\nDjxLoSMZXipJctQW/v3Q0XeE4CXIgLmW8aqe3l6vCo88Fusfg3Xid6fOqVMb\ntBCGYQyBjnbHoGsG7D9ZiB/BLXSaTJUhBBPP2h9odhnpbJzn2fnW85DrR7+w\n4/TO4p+CQECWsZuwCAyZe+qyVizX1BSKu3qfGuLZqV5Ujl+coGWD2OpvMz55\nTuGcjBXnj7gpIpQ9kUDM2e4Zdb8SQWyThBS2k/WhvjM9nz0z+TTpmWLDoIQy\nxehECvcLg4mqordafCu2wC97HHMoUAJZPS92WuIMsDMnWx7Lmi6vF3a4rwnZ\nKw+WllGlJmEs+zkdFpYBkzCkFz3jPvPmNqE7E4CIlMFXUsRkcTUWMRuZhCQT\nrRkvUefBhv05t3yz6zH092wqlGO/p0BnAN1PGmLfX/EzNdwEr+CpRsM0JFhZ\n64nP/lVrz9t0w1ZruESJT3/kyK81Ii5MiN7MJ1S6Ub8/7QP/65vd7q4BPqbC\n+1k8\r\n=y2zX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGWgW0yaPcGW8kGZV7pyC2s2NDvOrJutCF6OXYaC7JJiAiEAuHjU9BT4JpkeFf1nY9t68+bgo7QhSaA7rKJHrurjKuM="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_0.0.5_1582753538673_0.03956637967030563"},"_hasShrinkwrap":false},"0.0.6":{"name":"nestjs-objection","version":"0.0.6","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","main":"dist/index.js","scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","test:e2e":"jest --config ./tests/jest-e2e.json --runInBand","test:e2e:dev":"jest --config ./tests/jest-e2e.json --runInBand --watch","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/cli":"^6.13.2","@nestjs/common":"^6.11.8","@nestjs/core":"^6.11.8","@nestjs/schematics":"^6.8.1","@nestjs/testing":"^6.10.14","@types/express":"^4.17.2","@types/jest":"25.1.2","@types/node":"^13.1.6","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","eslint":"^6.7.2","eslint-config-prettier":"^6.7.0","eslint-plugin-import":"^2.19.1","jest":"^24.9.0","knex":"^0.20.10","objection":"^2.1.3","prettier":"^1.18.2","reflect-metadata":"^0.1.13","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.0","ts-loader":"^6.2.1","ts-node":"^8.6.0","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"gitHead":"f2fa276255920e3fad962aa21de92d157fc570d1","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@0.0.6","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-1avKGJBvIJl0c6Js6rW2H0V/pr+J8O/kB+ZAa0PFwZlAdLCg01XtY18IXBqRIFX2JTA/55+q+tp+7geNXgO+IQ==","shasum":"e7714e5c977ce08ca6299ff349d5da8faec47e11","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-0.0.6.tgz","fileCount":32,"unpackedSize":406844,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeVunqCRA9TVsSAnZWagAANisP/iJf7Iu6lWcfOgDATgO7\nXokfMUxwKS4P2D/YzhJPAnTtvhmst7K2OYTo55p94RpYd6xSsDECjVgq+yoP\nrkV1bf65++pxZa0UmogKx3E+XiNDBcNMAXs1UdL2Nzuto528cbZAifySG7ei\nRThh7DEoLtdTMu5JWvPEZ4IsB6fL8/tWo2LIBN8icFU6Q5R0aIjerIxLxjZg\nxE8VOQ7sdB69x0IKES7UU3s0fWeOvRr/v6wfGbqWWQzlIGvCGU9s2gTvcEVy\nLoU4Ld0dwHKIMi1gmaMtleWdIwFGt/7I727AOe8wlwP/85KtnfZR4zfOuHbx\n6JqEOqqfaK9EWyNnpNkG2RKVBcjGR5hhKSG8wuMEAc5LU8Mn8ZEsw7ZY/NYs\nq+Hic5oPS1695CXFwtDv2Cqua94x46ihfz9+WuL/A/TveznrCp6Yegrwd4sx\n2rrM2+N/DimxSHww3FVjjsziCBCAtc2CRHGARBjbiY6L9KN0NIelFEeLWCiC\n1THt6MlWwSg8Sjyn8rMO6JepuYy/z4a2J25eZqOLOCFVeHo+drrIkChHyAp2\nwZBDIFBpVZJzUmyOXz6mwzqmGfjNHQaGmSED3cPBFd0Z9GnUqQ9y3Av+7UYh\nx/a36APqfbl+0OVWKWUoj1fH8Se9iWwGOV8esmGs8+vN1X8PfkZuXzruwbim\nr+QU\r\n=EWrP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFZxeS4cnWivGWMrsv6+TtGECGh4GbIMaZ64IWQnwuRBAiA8gAlte+/BU/IR8cS+neOaV9ZJBV5iuPzqUO1xnzW6CQ=="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_0.0.6_1582754281863_0.7302057549317951"},"_hasShrinkwrap":false},"0.0.7":{"name":"nestjs-objection","version":"0.0.7","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","main":"dist/index.js","scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","test:e2e":"jest --config ./tests/jest-e2e.json --runInBand","test:e2e:dev":"jest --config ./tests/jest-e2e.json --runInBand --watch","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/cli":"^6.13.2","@nestjs/common":"^6.11.8","@nestjs/core":"^6.11.8","@nestjs/schematics":"^6.8.1","@nestjs/testing":"^6.10.14","@types/express":"^4.17.2","@types/jest":"25.1.2","@types/node":"^13.1.6","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","eslint":"^6.7.2","eslint-config-prettier":"^6.7.0","eslint-plugin-import":"^2.19.1","jest":"^24.9.0","knex":"^0.20.10","objection":"^2.1.3","prettier":"^1.18.2","reflect-metadata":"^0.1.13","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.0","ts-loader":"^6.2.1","ts-node":"^8.6.0","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nestjs","objection","knex","orm","database"],"gitHead":"7ab5ebebe8bc5419f96c47234b96a3eded9cbbdb","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@0.0.7","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-eYigTk3Sd+rW/aaHqApW/6kQUbxPgtHLEEK1LMgkVnXT9y18HvUQSa5oFluPQnTJtnU6tjdN0KB7LkM92ZKw3g==","shasum":"ac934e0c8c51a4674c5887d8e60ec951e9c42da0","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-0.0.7.tgz","fileCount":32,"unpackedSize":407375,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeV47JCRA9TVsSAnZWagAARqMQAJawqRfXp65WEnui2ENI\nMid4TiOZSReXIWWaWlC4CYzomXe9TU8aGeh0Wq6meNPpcKQ/dj9cngmj5M6d\nqHoqBWSh8/jf51hHThNJH/navBNvqDO9ymayGGRcNeQp2bhLUkbx9Vf4Iogt\nwGCCNBYH1gsoH7WVhaaLeyo/5UGwjgybZnz2taXXgtPq1FKA/J5iUxRxy16a\ne4e8ByfOmqSKKDL9aVAKW5qCnZJdcgwtaftSgNc2PpGJUYqbaYt2bCz6hPsX\nuRFnuJpymMl0n6bLFrT6BscPoMiMWi0FogTocAhZw/7hHiP5kJ4L1BJ8azfR\n4M1ykst7a1JGeQIJ8l2d9xN2chFyAja6/DCtaWtsQDL5qwHUiaw8WoJcEtyX\nIi1QJnZZq9q8yIfwftsvdFkRaZU3bS5oELlsecMVjchyVsh7eZEdlpuSMGkO\nMk2/1gnmERksEUUxS1YdDQtGWIGKbf0FdENGvgc/Lq1nRR1tx7z26kONkQuS\nPKDLA++WvF19l7oa4eshcBUHj47QguAVHyrwGi6aLy5fzx/4o6kdwATmTqhn\n6Wg7q+SS10nXfQpmHAA3Af9xkcSK5e2rHLmgGo5KjnE277dRGFfPsE1++8qD\nVHmJbO2g+piFerjeRlH23q1Umxeqw7koqS+P+OjISzgiiIpLTDkDasEMCN5W\nqhY+\r\n=M/gS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCL7FbZYbJyM7JmDR/0Css4HRHCG+xKDUGOvOGCGZCsPQIgaexPWH/ZpmelZbmDGOLgVMIxfg44ltaxmhFO8syZfOA="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_0.0.7_1582796488780_0.5954327833781718"},"_hasShrinkwrap":false},"0.0.8":{"name":"nestjs-objection","version":"0.0.8","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","main":"dist/index.js","scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","test:e2e":"jest --config ./tests/jest-e2e.json --runInBand","test:e2e:dev":"jest --config ./tests/jest-e2e.json --runInBand --watch","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/cli":"^6.13.2","@nestjs/common":"^6.11.8","@nestjs/core":"^6.11.8","@nestjs/schematics":"^6.8.1","@nestjs/testing":"^6.10.14","@types/express":"^4.17.2","@types/jest":"25.1.2","@types/node":"^13.1.6","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","eslint":"^6.7.2","eslint-config-prettier":"^6.7.0","eslint-plugin-import":"^2.19.1","jest":"^24.9.0","knex":"^0.20.10","objection":"^2.1.3","prettier":"^1.18.2","reflect-metadata":"^0.1.13","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.0","ts-loader":"^6.2.1","ts-node":"^8.6.0","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nestjs","objection","knex","orm","database"],"gitHead":"e2d4114545810dd31bd62103f8b3d9dd891d7303","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@0.0.8","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-hcKPgnqP9TCPs9gUC8ErhQmq8CtkPQskvDgSJVb/SL6KscE9jY50D/YjuzCBz+PRbj0u/IFVkBGJv+v9zRJFyg==","shasum":"baca45e3d96b5939ba9a596c25fd0eb3a35d5faa","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-0.0.8.tgz","fileCount":32,"unpackedSize":408557,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeV8YiCRA9TVsSAnZWagAA//8P/1cFwtYx7pFzuDXFJCcb\nWc9Y0mZNe+OLM2SIklDQq2dxmZKTCQYrc6ymDgfFzH1577M/JBTF9uC0fmPv\nuvHX7vX9rYWLxoLwsfhMsgOwKcyHtEK0863QVKCs3NCXWXxtKpOoM208OWIG\nd3iDQ5/RTZszkOU8Xcj3z7FSsKL8s6WUQ/nfTGj6VTxhVwG+FkAqpcVNs9io\nrG8oQdrFuVKa+Ceotlc/7DnKVixgcMk9Yf7f9cclEc8F0HP9dOQ6PHhXK4/k\nm0RhI6ppu63ppmZPf3gFlkXfqnoGKmhKS689PAkoHwZSucvj9wjTJ3z3ZNCU\nmTyn5AMMHcHDeF1v+fRZAx3OsN5MLVURUePLUxWHZfMqKy5kR3AtfczGEsct\nkMXua1L0GQkYqNLiilDySfm/JY8GQ011pIVEKiclxidvFL97IInwiu7kUfRA\n3U42w6OdYsq4MEUTZ5rUXt+96VfD9FcqtkwVOoRY1Uf4vrxwT8Y/Ze3Nu2Jn\nb2+0nFzMGB9T08RGNO4VW4SVkuV12eef3/Sn8TpyRVUpDBrTXIrP+wyJX1AV\nK0Qn91skAhywZzFuJ0BiopP6UsDDJ2AKmIbckMmsl8ZiYZO5Rbw5tMo9uCcp\njqDbTlU3lrZDzYer6GsXUELM8x1k+WQ+nsiSKl9y2YJPMG53by2fukJ10RUs\ncyRi\r\n=vJZl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxtsNmnGsnqJVnSUau8XVDicesFolMJkxlInUtAKxgSQIgQ3w4UHOwa8lbDI8NfAWpswQxWyI05A76fi1KA/pSiGo="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_0.0.8_1582810657974_0.5421229930405342"},"_hasShrinkwrap":false},"0.1.0":{"name":"nestjs-objection","version":"0.1.0","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","main":"dist/index.js","scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","test:e2e":"jest --config ./tests/jest-e2e.json --runInBand","test:e2e:dev":"jest --config ./tests/jest-e2e.json --runInBand --watch","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/cli":"^6.13.2","@nestjs/common":"^6.11.8","@nestjs/core":"^6.11.8","@nestjs/schematics":"^6.8.1","@nestjs/testing":"^6.10.14","@types/express":"^4.17.2","@types/jest":"25.1.2","@types/node":"^13.1.6","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","eslint":"^6.7.2","eslint-config-prettier":"^6.7.0","eslint-plugin-import":"^2.19.1","jest":"^24.9.0","knex":"^0.20.10","objection":"^2.1.3","prettier":"^1.18.2","reflect-metadata":"^0.1.13","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.0","ts-loader":"^6.2.1","ts-node":"^8.6.0","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nestjs","objection","knex","orm","database"],"gitHead":"0391add21d089d49f475940f02940891735a90f1","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@0.1.0","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-4umzT2XDGUoQC24vSD+e8ClBFezxaUE1YSmbR/1ArTVKGvLNz7sTBlbOAj2qxuRxPP6IVA+neCjDBG4/FAnHNw==","shasum":"5d86d81d8a4070873cbab49fdd4f77cdf14aff42","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-0.1.0.tgz","fileCount":32,"unpackedSize":408783,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeWB8+CRA9TVsSAnZWagAADeYQAIATjT5TuhC9/Lgalf4U\ntOifn+ss0gsKcyJHKAQeN/inzlU53Dml242zCs45yzjAMFN+HfVWAhsPqjJj\nXfX1KH+X/3JmzpqnrX1i2J1vQB9sr6icLEuu5mLBR9mn52pEGWdSk0YTxn1X\nbHs4z8zg9dYpUguMAAWLDz5gia7XnLzBkxfkh/Dz+twjVMtxIpU73zhQrk/m\nUlM9hG3cXp4WK60R9wmzGiygOZCIK9idL4uAALKEfzwPqVyA4E3s2eEr9OLB\npn2PqUi6E4t0c0SiZOr9pLzCsQQY+BfBgA2vvajYd9Ur9rU9ef1mfsv2Nud3\n64jGVTvMpGjgZsteO2gnMGGJkNbQUZofXOCkr7hJGyAqW24eBDptSFBzXPz/\nGef1IIjyp4vgOF7tfx6uXtQFaFU2FCwXjRLp2hQsynwVMUVRADme2tix6MPO\nvY3XYTsDxdbD0W0b4pcKilHv1q6tx46jv53nBHQU0R4ArNIEkdwbpoEsviIP\nVa7kvDTsnzKogSsK0ce8oGldOBXNlLgd0Uf8ymLSD7w4X4N2jfxcsB9XtLgr\nPmf7rg5qWFf7gWb7EzgKfM+btw1MIcDIkN2LRR/hu6IJ6X7kv/no3Yic1Xrl\nQZWJTmwah6R98N7/6Z8itl/BkVoN62iNX4SSWiFrTtLGkvrWUklDqEmdAL6I\nZ00/\r\n=4aoz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMQLEHVzbg5Uuvpfb5LLVY9IqT7IKqr2M1rONxk+23CAIgC+oDFBAm8Rdv1dOOqy69KWsP/yZ3ksuTUItvVDpy/98="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_0.1.0_1582833469579_0.034307666050854335"},"_hasShrinkwrap":false},"0.2.0":{"name":"nestjs-objection","version":"0.2.0","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","main":"dist/index.js","scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","test:e2e":"jest --config ./tests/jest-e2e.json --runInBand","test:e2e:dev":"jest --config ./tests/jest-e2e.json --runInBand --watch","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/cli":"^6.13.2","@nestjs/common":"^6.11.8","@nestjs/core":"^6.11.8","@nestjs/schematics":"^6.8.1","@nestjs/testing":"^6.10.14","@types/express":"^4.17.2","@types/jest":"25.1.2","@types/node":"^13.1.6","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","eslint":"^6.7.2","eslint-config-prettier":"^6.7.0","eslint-plugin-import":"^2.19.1","jest":"^24.9.0","knex":"^0.20.10","objection":"^2.1.3","prettier":"^1.18.2","reflect-metadata":"^0.1.13","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.0","ts-loader":"^6.2.1","ts-node":"^8.6.0","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nestjs","objection","knex","orm","database"],"gitHead":"a0fdd3266ae2936b2268e9ea32b6c03e69418286","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@0.2.0","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-yQFEiHoEcRib8yjaMUNbMIZK86RvNbVrmRqM2BHC5uiVbPVMDX4+kg+6WWONSlIxjidpVXLYXc1W4ly6Ncjwxw==","shasum":"cbd97405d50028843a2371d81b7da0b952dfd2fb","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-0.2.0.tgz","fileCount":36,"unpackedSize":412462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeWozJCRA9TVsSAnZWagAAhjkP/3yTJVs/PCGHrMaxHqFw\n2M41PSXUSQWtpULt1yQC4tqiBIJOwNXQktMRoeDXZERCW9IWnKVmDrcJzQcG\nN5CVt19J972rEyEldHN70NW/4IgXkHJgeaiz75TDRkmodGiSnpf1ROmLI+8P\nYtbuVyvmlxZAVxGmU6inyyvAJaNwO3PTkukCQorDTxvYxwJWC7h62NZMyiSn\nT3iZfu6X+HX+SWR+eXSGa/Z0juD/SHrsKLPM3B/SjhD745sIfgMw4wT/9MBp\nlpyMSirKBynd5st8pStGfOnKneQso7eG8fj+QsGLIPK2H1DVploawQ2PWvyX\nI+F1+8JYZTiV0aovsoJ/mDjKzw4beBmphWZFQeL4JDPyo8DngoU5Of4l36c3\nts8Gk/uGbm01PRyyjuzahoe7xNJgnM8kKLE6CWyk6IZ3yrXu0b68C5qArTgd\n8IOF9odxEkd4CS44a/yrr5bf8V/7VuKvWB+JVQFb1XD3J0QA6MM+lJk4vKgs\nkpjRcX8NE8OqLSYdTgWTrQhz/mOA1vFLEg1O0szi9P09mQuTIwpFDAhsF6pe\nwEUjMWeRbwY0m7qiE8PVd5E1lLjsXPj15u8E7G+OmyRRkBBCIvdjK02nkm9/\nEgZsFBCGSej9cZYGpATBbpjJ8Uk6ykJQS+efJtJ59nGIr4Hfw5v5syXcuOYb\nevn8\r\n=IobU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8SbBaS1wpljGWEMqrNzrnrnj9ovztzLn9J9+WRJxGOQIhALiTPDeNQA2DJU1e/zJrK4i6lvUmeviXVAUTacUIYRHI"}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_0.2.0_1582992585169_0.9111764964139519"},"_hasShrinkwrap":false},"0.2.1":{"name":"nestjs-objection","version":"0.2.1","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","main":"dist/index.js","scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","test:e2e":"jest --config ./tests/jest-e2e.json --runInBand","test:e2e:dev":"jest --config ./tests/jest-e2e.json --runInBand --watch","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/cli":"^6.13.2","@nestjs/common":"^6.11.8","@nestjs/core":"^6.11.8","@nestjs/schematics":"^6.8.1","@nestjs/testing":"^6.10.14","@types/express":"^4.17.2","@types/jest":"25.1.2","@types/node":"^13.1.6","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","eslint":"^6.7.2","eslint-config-prettier":"^6.7.0","eslint-plugin-import":"^2.19.1","jest":"^24.9.0","knex":"^0.20.10","objection":"^2.1.3","prettier":"^1.18.2","reflect-metadata":"^0.1.13","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.0","ts-loader":"^6.2.1","ts-node":"^8.6.0","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nestjs","objection","knex","orm","database"],"gitHead":"82b67bce31b62013831600767cc82aa8a0c8f190","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@0.2.1","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-bYcTGeEn7a9bW5XXbpt8KtJeCMaQnfH32md/nHrkgtgTk4cG7hiXU9hu3Zw6alZjfD16QxqLmqRi3UQpNnN4fw==","shasum":"3655e949651fc2978c39730cb4477607e9960449","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-0.2.1.tgz","fileCount":36,"unpackedSize":412282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeWpnCCRA9TVsSAnZWagAAZNAQAI42nAxX2qdx3K8SrchT\nyjDsBeaWBF6tkUtD5wWnpnvjfQLJenilEAsBI/TzaCudmKx4j9fKMbQRBJaT\n9EptzLNF8WCbrVI9O/aGF8TJf0Hsux4iGmaOq0T+dRbZSeI6y4QTfXwc7ZAS\nU91ByuRewpzuAA7lAOvAEFIWtbr0ETu6x8kDyHUIsyXy1AFJfY6U8x+/UCWH\nX2ADlkQzUWZApawv3Q1CqShCzt4QFRRJr/wkwyxw/wBihbG7huwc8Z9UpT/0\nzxQtM0E6F74dJL9N2Tp73YQOQoh/QFy146L3kjA1u47O76Ge8XzXPpK1h45P\nGALQmH7E+B6Vj9OsqEbcfyP5HlrjeAtuep/rwhbqk6SMmwy1GdEdEYF5QOrn\nBUZxrVLFkNjLX9IHwH4x9jyETxrI0JVrZkXOQK3tNpoO3yKmNEGHnrz1mwlS\nLNS5oYLY+WUaJ+4WnGK0ZVZ+bU1nwlfw77HcNhBmUj8BT9cgkee/+rqkdVte\nFeP/bR9yvDEj7ZfY/lPKSzH/J4Qw4v8QF1sc3sfI09V4r0EnyeOekiJib6id\nrfJ0xR/GI6az+YJOu3aaT5YBgV8RGUgygBePZFJp6F+QGqk5f/MjJ+SlEpWR\n8bm479WrjFUdJog+2vV3h4R6nXHzBbbiRe6vox3Wh+leejWZ0V5p6g6B717h\nb7uc\r\n=rvBj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjFKYO6zf/xIo5fzcSzJmxVm+nqfzMg/z4rbZdmwtkWgIhANLvv06zAoGytxGElv09BQLEulCFAW/LIXbCT4wZNwp9"}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_0.2.1_1582995904812_0.5240454973499951"},"_hasShrinkwrap":false},"0.2.2":{"name":"nestjs-objection","version":"0.2.2","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","main":"dist/index.js","scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","test:e2e":"jest --config ./tests/jest-e2e.json --runInBand","test:e2e:dev":"jest --config ./tests/jest-e2e.json --runInBand --watch","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/cli":"^6.13.2","@nestjs/common":"^6.11.8","@nestjs/core":"^6.11.8","@nestjs/schematics":"^6.8.1","@nestjs/testing":"^6.10.14","@types/express":"^4.17.2","@types/jest":"25.1.2","@types/node":"^13.1.6","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","eslint":"^6.7.2","eslint-config-prettier":"^6.7.0","eslint-plugin-import":"^2.19.1","jest":"^24.9.0","knex":"^0.20.10","objection":"^2.1.3","prettier":"^1.18.2","reflect-metadata":"^0.1.13","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.0","ts-loader":"^6.2.1","ts-node":"^8.6.0","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nestjs","objection","knex","orm","database"],"gitHead":"8ea60a0985affe4515be2036ddea38152463ffe1","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@0.2.2","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-mJZXbuvP7ZyNsAI5UsRAqGLFPXnE2WqfxkqJ9wJ0vaWtIpe0GO5wp8Xzwg8iLhC8QNI22hrPgP+ONQWcBYdlcQ==","shasum":"bc8af4ff28b94a5c553685d24850110220139d6e","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-0.2.2.tgz","fileCount":36,"unpackedSize":412291,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeWqPhCRA9TVsSAnZWagAAlSgP/3OQWaEtgy39EPd/Iyxj\nG+gN0Pv7mMNQOINzKYhbJgFLls0gjkJsdAjqSF7beX6pCWyY6tjOpHzKjIw1\nOpck5CzIl66y410AKicq8qnp4T3s0aRfBhFqAhaBw8OZR9p8CVbRZ2dJUtpL\nSSL3xgNy6eClzdh+uVDiyTfa3WKr5KIK1VDjDXRg8GDLFJYQdoi+CJlwCBSt\nFI2XEmNgnTyxLZKqZndmFD9SbpqgiAK5mNAYyR322nyGLCRD6krFGg3ZPD0v\n101vLENkTYcgXfTkQoKToLlOoCqRSjk9H6oLOjA4uk0vwDIcQqfg4uW42S+p\nTszWGGiWkIZvGH3t8oxzLzeQ818kF1YhNKhFFrVPgdUuC5ztc1S5XOp6xsWh\nDOuj7zf2KbLE9YNcQ3d3wE+kimqhEzcXLhsBnn4PkT+FvIF1JD9pDMIWQdhU\ndmCE/Rt/ZjUWLJi4gHM4CeO+LA8G0KJRLjWEeg+mmUrtZSQOFkL6OK0Fom0W\n7tbKgzys6EY6PShAMP6qIRt5fB7YDuFw1WvPmpkOx12wIDgRsV/SKbbQprlE\nXyTxzIsMm/WAXlvvO2xQF5mttrVKLOWYJYxTZ/3fTdaYPoZvUH4Uv4hiGiWw\nAaJ1XiYoak04EyXEN8jO2Lj80vEEOjrta3MWLrIDOh/Y1CZxYcojIrefaYQq\nRgXK\r\n=sRuo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5rBLq93xo+yqkibhP6wVj+4BNOZ9Zt6uIZGCoKctRDQIgANhLHJpy1lPuEOyOEA/63GTgLAV0GDa6rNmhWx5E6pQ="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_0.2.2_1582998496568_0.12590525804247354"},"_hasShrinkwrap":false},"0.2.3":{"name":"nestjs-objection","version":"0.2.3","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nestjs","objection","knex","orm","database"],"main":"dist/index.js","scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","test:e2e":"jest --config ./tests/jest-e2e.json --runInBand","test:e2e:dev":"jest --config ./tests/jest-e2e.json --runInBand --watch","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/cli":"^6.13.2","@nestjs/common":"^6.11.8","@nestjs/core":"^6.11.8","@nestjs/schematics":"^6.8.1","@nestjs/testing":"^6.10.14","@types/express":"^4.17.2","@types/jest":"25.1.2","@types/node":"^13.1.6","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","eslint":"^6.7.2","eslint-config-prettier":"^6.7.0","eslint-plugin-import":"^2.19.1","jest":"^25.1.0","knex":"^0.20.10","objection":"^2.1.3","prettier":"^1.18.2","reflect-metadata":"^0.1.13","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.0","ts-loader":"^6.2.1","ts-node":"^8.6.0","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"gitHead":"7682544f1cbb38967e42a1dacc31dcd97af64292","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@0.2.3","_nodeVersion":"12.16.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-UbyJlmVCVuRujaLrPY1men8KpFlufcMOhqwP3ObEyfl0/HTmGFask7POSj58s5i2jams95yhAD8zqwucP1agdg==","shasum":"7e901564899c783f030fc6458f7e6cc6d5a767c5","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-0.2.3.tgz","fileCount":36,"unpackedSize":412291,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYrq6CRA9TVsSAnZWagAAjxEP/jTrN0K4+Y81ElifEQoe\nVVt8xkL+gtShniqbmM94n6ISnCbBZV7bRgFRf0xnsMXD06GQDsQe+TozpwYV\ne/eQ8HEotTAgULPOFTq24evTSs+ecIGRksQFH3/mLpE7jhgEPp4Jf/snkvjj\nN671difSW2nGB1AsMsJtfsHUTQjIDJJL4V6Qu6RFhlAXaBTHfn3LFJpl7r33\n39Epjz/sgJsj1bkRErbcz3iVgxeToph6IcABQbpxmD86bil0DVpEsIwbOyHa\n1NfneyDndV1wxVsvSoehMC4zngeM3ej+tYhhVABT5Gso6iTIW/M2iqt1EaHh\n47pLocWDEup/HBJPBt6DB0BpDaWKja5CPrzebF3mv/9iIS/OM3JxvXgIjWri\nUzBrZCuGwHllsO8VhjgJxMOZIHGVbl14N3Inhz6MmWzIf8fgzhR9fyvK4hJd\n4JPv5bf129gr/69mmTZDVQA+EZTAW3kcicLfbPzEKDkyjV5PQxKglycAb8zC\n3qsRSCld6kX5OJpKaWPa9jR0K0i4gYqfFS3W96xLhfSpydCBqJv6gU2LcKrG\nWUezk5EuTmVAmKPcKD6uRFXbXHi62IqCtx7RgjQM51KhUhRzlE60UYAqGzX7\nZgtLpOpzvEA8dmFTLq08Pr7vRtLjeBV6vBf/Xapt2Tz+00Lj4Cb0fRiYEfbU\ngqXQ\r\n=rKV+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC4mbGkKmwHN/7D0FVhqemCMELxYBnkbSc9sPT050MKpAiBiBLVs2+Z8ALe6jw5eDBIp+Gb9UBVa96wQSkUeBVXW5g=="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_0.2.3_1583528634152_0.5529644130395444"},"_hasShrinkwrap":false},"0.3.0":{"name":"nestjs-objection","version":"0.3.0","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nestjs","objection","knex","orm","database"],"main":"dist/index.js","scripts":{"build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/cli":"^6.13.2","@nestjs/common":"^6.11.8","@nestjs/core":"^6.11.8","@nestjs/schematics":"^6.8.1","@nestjs/testing":"^6.10.14","@types/express":"^4.17.2","@types/jest":"25.1.2","@types/node":"^13.1.6","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","eslint":"^6.7.2","eslint-config-prettier":"^6.7.0","eslint-plugin-import":"^2.19.1","jest":"^25.1.0","knex":"^0.20.10","objection":"^2.1.3","prettier":"^1.18.2","reflect-metadata":"^0.1.13","release-it":"^13.0.2","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.0","ts-loader":"^6.2.1","ts-node":"^8.6.0","tsconfig-paths":"^3.9.0","typescript":"^3.7.4"},"gitHead":"6b3ec21fc7d0ea45bc3ef1cd2d048b1d4f106eb8","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@0.3.0","_nodeVersion":"12.16.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-9Z1N4woj7awrGQsn2nYPvhuaHV1p/YwaAlJ3ymBWSYoxgKrhW8Ls/+5nEekN9/tXK5BFZvHC2QpGxKt7LiVrrQ==","shasum":"8db5753a273fba3f35a12e4c3e0cbc09f413fe08","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-0.3.0.tgz","fileCount":18,"unpackedSize":26734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeahRACRA9TVsSAnZWagAALiwP/Aw2SY9kpS0kGIXgIKn+\nv6FCoo+rQeCfp59MOF5B2ybn+gH7SadtfypVCvKt4k/jFSahJx+z4l29KAO8\nuxqjbs6K/FBBQQshC57pouCdfcOSO8f/XKa6V08BoC1CcOWniprYCW0c8ymK\neTmiYSlo9/ZOfSZuR+c59mR7UmQvRfQlxP4oJxJUYY5E92aBqrar2/vzIJkC\nWLiAwUatrU1hGxFOQiOa2nQ7K2X9ZK3O9G7HOF7Lp5nC9rHhthODqe8EmuoP\nh90WidaihjlsBWvmXU8+avlmrguBj5/Sxm3trtyGGm6U8TZ1RDEFme3NE3sm\nR1Jw41Awk7Pfv3J3XObkUyFscpZyv6nD+t19HJ05fBPB3f67IOTOFF9DheTu\nROEOfASE8FfiDZRWlNU2EyAZGPhXpGCF2f/73NWwgQmde0xdDE2+92ztiPAd\nNrEeIx2tiiCpwyEhLkR+GaAmUVdH4OvFHTvLYCcxM01VaJJgyaWVv9kM+Uqi\nO7rg6h+XU4vrW9sHw/nRZhY0k2SZrTkU+XZU/z8roStzFsNgDGPVbyb4ALQs\n1J+ToptjLofatrMpXXlEdQVqldLLf8pq8ednGwkqYuIyqpNmvrdxHd0kqhDc\n5Nr9Vd7zGNteE9t26PtMx3KYqtueEK0Bfn8/dsOah7HgrmTahxCWIjVhT9E6\n1rTl\r\n=TPgK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBHGTGVTzGJGYMdEgXUuh2XqW6fbmhVZio70JitYnTMoAiA79mDg0fPG7YGetWI50rBxAi1hpDAi8SeeVwHFRZwSwA=="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_0.3.0_1584010303999_0.006078873177358446"},"_hasShrinkwrap":false},"0.3.1":{"name":"nestjs-objection","version":"0.3.1","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/common":"^7.0.2","@nestjs/core":"^7.0.2","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.2","@types/express":"^4.17.3","@types/jest":"25.1.4","@types/node":"^13.9.1","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.23.0","@typescript-eslint/parser":"^2.23.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"^25.1.0","knex":"^0.20.11","objection":"^2.1.3","prettier":"^1.19.1","reflect-metadata":"^0.1.13","release-it":"^13.1.1","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.8.3"},"gitHead":"e4d7961a5cfe0439e4a3771e62814c45973e8b76","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@0.3.1","_nodeVersion":"12.16.0","_npmVersion":"6.14.2","dist":{"integrity":"sha512-vs5HJ5f6LkOxZXrYUR2msL4znBYt7XxB1hk5B3qQ0DLGzo5OGjzV0s9/S1vBKgoi2DP2FBybEPLZxBHt1vjAYw==","shasum":"566da368aee1dcec3d57f3b0d872c37e8229ebc1","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-0.3.1.tgz","fileCount":18,"unpackedSize":26815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeb6eECRA9TVsSAnZWagAAjbIQAKOET1ouWlLlsXFHSXGa\nHn2iRp45b/uYBN3EOykRt7OECesIOK0PFTXViIarknY4pO5blL0gGhOzNW6v\nmmBlBqrkgfzLRbJ7GWJT8p9sV0H6EFrPuFumuR11sp7yjRwziuwVKWisw3xF\nBQqHM87RZnZD+cdkyhVnr4jeK6cd/07X5vUBm/wOFbGBbdKcnKSYF1gw421u\nOF810xPaFV0D+wAq7IfLE2HrWjOo+4AujGcWWKDqLsHdvZSmR/eN8Az55GP4\nvguxdIhrNs7C+ynZKOZ8zYlx2o4LrsuMx0/X64dHiZpZJcwFJ72zuiwwyxYu\n1iW7W39P6VMSOsRBNT5QEbbmKqfI7YL7UD4RqwD0Gnt3EOGlSh8wBZlIYWet\n/kwdCpzFeehl2ahDpHaAe4363OFoVzrDBZOirOm7T4g8cZsBBEnS9veOX6Ig\n1kb+JqiAkKWp4gAcAaw+sGq9itKYX9EzQjh8B4jY1N94LD6ZXfq7zMQ41VS6\nqGRT+0pbz4hJHdcn9PHk4+VeORg6nXc9PfmPCPGuNkFj1Yq2PYylajdXZpGW\n8b1vAez3nhyQ6rIHKZO4sSdbPRyWnBq01mqmJGVVBDNZO0rlYvYONJXEV1Q5\nLeNztey8pDcplHBKivIn9IwvU/TLQtZb5RKbb02ljiNJaTcUOPMB1ibxUgvP\ngqI8\r\n=Ela3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKGpcmjKLLXiEyakIBB5w1jkIWgq8lJFX9toEcUf/KqgIgITSYnMgMa/lLAa0nQE53U3JqLFnAtWIb3ZaoQJbAvHc="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_0.3.1_1584375684178_0.5143791166057405"},"_hasShrinkwrap":false},"0.3.2":{"name":"nestjs-objection","version":"0.3.2","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/cli":"^7.0.0","@nestjs/common":"^7.0.2","@nestjs/core":"^7.0.2","@nestjs/schematics":"^7.0.0","@nestjs/testing":"^7.0.2","@types/express":"^4.17.3","@types/jest":"25.1.4","@types/node":"^13.9.1","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.23.0","@typescript-eslint/parser":"^2.23.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"^25.1.0","knex":"^0.20.11","objection":"^2.1.3","prettier":"^1.19.1","reflect-metadata":"^0.1.13","release-it":"^13.1.1","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.1","ts-loader":"^6.2.1","ts-node":"^8.6.2","tsconfig-paths":"^3.9.0","typescript":"^3.8.3"},"gitHead":"f77b57fb92f60bc941c75c60bb62573e2485eac0","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@0.3.2","_nodeVersion":"12.16.0","_npmVersion":"6.14.2","dist":{"integrity":"sha512-QfMqLK2lDXS5a25yGJkRWbmSkCBVzsF2DgHG9Waj5AMHe7pcHUGzt6Qedl+b8Cfze28aOpvnwLmq1ZWQSwfqGA==","shasum":"aad9d092d30d9a40ef7f8f64441a356a349d5ddd","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-0.3.2.tgz","fileCount":18,"unpackedSize":26883,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecqXsCRA9TVsSAnZWagAAfk4P/1VpDm9l/mmwvk9qoiY3\nc2RiIIOZWgV+fPe3qDuZH99cbsWHzs5uk6nUy4H3ya1tykkVWXkBLW4pEQ6n\n3Ln+k4OfXYc/HgQqY0xT7c9Lrg3pOmy3dUi6LnUZxwoySiuwh89KhBOAndVh\nyp9+KrVbVYzbGQVMM9pFZx+wsW3gBgrX+gGgcN+lZkCSRgB+4yL0Zl4mLsJY\nY00qw7BUqjqOHZfbbwqutI5wk8cIvUQETHmxyaYmo/Fr7eFodM/7w/mgKbMo\nfKj66LhpFfWYiYxo/V9x8feKt8wqrhMIxYTm/Zf+nO3bne7Kk1syYIAtgKFj\nDcF0nCgai+MdWunRxZu1YmHZrjnCMqXEHn8FxYp6gyebxmUU6qQKCQ0kRr7p\nqoJ9Vot4OOGAfVJAzXWVqD0cXw30E8g+Kt5k3AwB2dzDeQLzhjHZqMWPAc12\nDRt0RZvCZQ7tG90K9RGJRIIFd0JGvaDQI3f/LltsVm07djnFa+MM4f8UGIb9\n2sYNoJLl9zkmWcGNay6zSgBUECzdto1HtXlGECmLjUmcTPLTRFow4e5M6bwQ\nq+5nX7W7pqnXD5DiDDIJHy2CwZ90e5yycYs2cLDZdyQ0POhhSr6E97ydNABi\nO2moTYwnM/tglgNS13g5so75tpT7/UpLNJKbs0S/P9ouYrNlwnbo/xBnNSuz\nrD+D\r\n=jCJQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDd2Q/P8W5i29A41PpGY06hvGFnTShO6t3nAsLD/ilZSQIgQEZWP4VqKg3JXZywMk2SAowtMm8Qck3CCT/p/B1GvAA="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_0.3.2_1584571884191_0.531984264397426"},"_hasShrinkwrap":false},"1.0.0":{"name":"nestjs-objection","version":"1.0.0","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","@nestjs/testing":"^7.0.3","@types/jest":"25.1.4","@types/node":"^13.9.2","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.24.0","@typescript-eslint/parser":"^2.24.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"^25.1.0","knex":"^0.20.11","objection":"^2.1.3","prettier":"^1.19.1","reflect-metadata":"^0.1.13","release-it":"^13.1.1","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.1","ts-loader":"^6.2.1","ts-node":"^8.7.0","tsconfig-paths":"^3.9.0","typescript":"^3.8.3"},"gitHead":"1d1b99be5ded090d16a1b0ab17056bf5655e8a7d","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@1.0.0","_nodeVersion":"12.16.0","_npmVersion":"6.14.2","dist":{"integrity":"sha512-sGCJIEWZNANe/StNwSEqjHZpJkk2aHeZ7/ZHQ4P6zV1AXwCc8b1szk7ztTXhmp7SMURTIBM5du1RFqCp8MyuVw==","shasum":"bf6ccdbcdde636ea5d1aa50f08695d2a88e4e787","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-1.0.0.tgz","fileCount":18,"unpackedSize":26785,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJec35nCRA9TVsSAnZWagAAkPUQAKERemEG/gxc1kmlWz1V\n5dhSlJ37R1f2DAYXgL9MFNd4e4WUYuYtOwOahZNR4/fWej1hbImy/0kNH0z7\nivTao5g5OC6Y8idPdn7CsJLLeF9Mvc+FjmjUHlZasGy9qlIABQjp7rM57UGQ\nsqht/7hmz9tTcINgRO3nhoa9SEZn50IUhuXZ2+Bl40KQpeQ6nPqrKjupKsOS\nxymvAQzHpP3rGMTTvOHBF/YL3wgS3GquKvIizMCS3Zol/nZyoa/catylU6Ea\nFx6eyl3hwOY9dJXaWGc59WoeThkRC7IT9xXBIKZ2BLjQaaxFVv1VhlG6SonM\nOcZCbOzyPw0qGZhZCjuD1iiNM3kIkI3e58+fqp3cOVO4xe3DIEGeTnmCTi5n\n2qGV0nwXaaB6/bRYvF88waKMw9i6KbGWvYQ6TDTF+KUQM9kwgq2TvE1hTBuQ\naynSdgmmCMPi9ePS3/OSGCR07L6XtIk6zgN7zsXUHkOpTa6wR1J3YCES1Rja\nXD81wdqgkWXfeX3ypuJPg3P6gX69Ph0ZrP/zY2xiS7cn8SMkeGiYrpW5XJH9\n/0S5f3qGzYsk/PJ0C06OMBsYSeqjy47a1LnLpPSr3OiXR7XyHSuBxXU8d0I9\nkv3rtzsVOT7PHlqoO/8y6hP693XYiaSlFbEmqFU7oL/Fi3N7XzvghgHRCXUW\nKVBg\r\n=5Spr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGZmN9Hz9HBxPLH5q8+Yr/Oyi5VMJMzP7MnIqhNI62pNAiEAkGE8Ro8CK5d48HUAiL+9mcnYPRzFM3/nlNGG5na/6j0="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_1.0.0_1584627302886_0.5189088654031593"},"_hasShrinkwrap":false},"1.0.1":{"name":"nestjs-objection","version":"1.0.1","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:next":"npm publish --access public --tag next","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","@nestjs/testing":"^7.0.3","@types/jest":"25.1.4","@types/node":"^13.9.2","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.24.0","@typescript-eslint/parser":"^2.24.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"^25.1.0","knex":"^0.20.11","objection":"^2.1.3","prettier":"^1.19.1","reflect-metadata":"^0.1.13","release-it":"^13.1.1","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.1","ts-loader":"^6.2.1","ts-node":"^8.7.0","tsconfig-paths":"^3.9.0","typescript":"^3.8.3"},"gitHead":"9222950d0d354ad282eb71b36262ba228824ddca","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@1.0.1","_nodeVersion":"12.15.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Ku1tqY1WZWOfIsyfEYPPS5idLpFDhGZDvSr4RyDbcWjYRnfUoEY39NTHvouHOhxPD7nNaumcoHTFwuXlhHfmUw==","shasum":"9807e9c739a0a9be7e6981dbcb9afbbebba13496","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-1.0.1.tgz","fileCount":20,"unpackedSize":27010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeiJsECRA9TVsSAnZWagAA1BYQAJOCX+SMcqg1suWkujfk\nQgggBtOD168DC30jTxjOOZVWw+0/VkTb6Aoa8mRSAugJH7D1Qa/N+APH5Ngs\ngYOTvKoUnAjpF2wtR5Ud7PJiOVQhPqDVfCP/c47ycP/skKLRlJEI3Ry8Ghjq\nGZ2WvQIFLyICj1TCJT7hJGBiPzBwL442qGs2hc+cJ3lhzhR6GysQUuaWrbD7\nRtRVSF+dQ/oGbn61X7Cmpb7snSThIY07B5IbDN5rSUqvyoI9CVgIUMfYbDmO\nln8gDlzY/Ao/upY+AMnSCRnXcveM9je1oL79RWVI3yz3brA+vusBEwhWBnSM\no4QGNmbSg6ELIXrUQAP7eOj+RBXn0Iq/Li1+wnmxRpBE/P5Dil5H70RBqy6j\nPLHr6/bNmG+rPRjaYpgkUbXF9cDcnvBUO4V8sAniMsOztpgl3qD7RnQS5/yi\nXc9Nnsu/kbgJk1woBfaJWIRCiKdRuxbYGRXIw9Y8LJ6gT1rdVHMRZsIXLqBx\neOeiMC/Hmaj4IYMw2MU3cfX9yx7wwZHlgExq2LE5qbonQK7L5Imw/IeD+u8N\nxIzbHuXtfsWGwTkSllr+kiqHApA2ovBs3gqpwPimvaJqP3XQVbyd2tr6e2Ul\nCTtHeJgVYeQDNOPfqQujcosGfESg2yABDHWgTPnRyhQES8iTDmXRdAdyQrIv\n29oJ\r\n=J/Og\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG1dwDmPgMeZ2n+hFZfWz4yHHrrrDAhs8ZTNUxOLnI2AAiEA4yXH6G24m2y+iSe1uQeYc4wyVctuPG4/GzH8oRoPwPM="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_1.0.1_1586010884103_0.6640324617111801"},"_hasShrinkwrap":false},"2.0.0-test.1":{"name":"nestjs-objection","version":"2.0.0-test.1","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:test":"npm publish --access public --tag test","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","@nestjs/testing":"^7.0.3","@types/jest":"25.1.4","@types/node":"^13.9.2","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.24.0","@typescript-eslint/parser":"^2.24.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"^25.1.0","knex":"^0.20.11","objection":"^2.1.3","pg":"^8.0.0","prettier":"^1.19.1","reflect-metadata":"^0.1.13","release-it":"^13.1.1","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.1","ts-loader":"^6.2.1","ts-node":"^8.7.0","tsconfig-paths":"^3.9.0","typescript":"^3.8.3"},"readme":"# NestJS Objection\n\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/v/nestjs-objection.svg\" alt=\"NPM Version\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/dm/nestjs-objection.svg\" alt=\"NPM Downloads\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/l/nestjs-objection.svg\" alt=\"Package License\" /></a>\n\n## Table of Contents\n\n- [Description](#description)\n- [Installation](#installation)\n- [Features](#features)\n- [Examples](#examples)\n- [Typescript](#typescript)\n- [License](#license)\n\n## Description\nIntegrates Objection.js and Knex with Nest\n\n## Installation\n\n```bash\n$ npm install nestjs-objection knex objection\n```\n\nYou can also use the interactive CLI\n\n```sh\nnpx nestjs-modules\n```\n\n## Features\n\n- Decorators      ```@InjectModel, @Table, @Column, @Relation ```\n- Synchronization ```synchronize(model, force?)```\n- SoftDelete      ```@Table({ softDelete: true })```\n\n#### Table options\n\n| Name         | Type               | Required | Default           |\n| ------------ | ------------------ | -------- | ----------------- |\n| `tableName`  | `string`           | `true`   | `className`       |\n| `softDelete` | `boolean / string` | `false`  | `false`           |\n\n#### Column options\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `type`          | `columnTypes`   | `true`   | `---`             |\n| `default`       | `any`           | `false`  | `---`             |\n| `columnName`    | `string`        | `false`  | `false`           |\n| `nullable`      | `boolean`       | `false`  | `false`           |\n| `notNullable`   | `boolean`       | `false`  | `false`           |\n| `unique`        | `boolean`       | `false`  | `false`           |\n| `unsigned`      | `boolean`       | `false`  | `false`           |\n| `primary`       | `boolean`       | `false`  | `false`           |\n\n#### synchronize(model, force?)\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `model`         | `Model`         | `true`   | `---`             |\n| `force`         | `boolean`       | `false`  | `false`           |\n\n## Examples\n```bash\n$ npm install nestjs-objection knex objection sqlite3\n```\n\n#### Models\n\n```ts\n// app.models.ts\nimport { \n  Model, Column, Relation, Table, relationTypes, columnTypes, \n} from 'nestjs-objection';\n\n@Table({ tableName: 'posts' })\nexport class Post extends Model {\n  @Column({ type: columnTypes.string })\n  title: string;\n\n  @Column({ type: columnTypes.json })\n  json: { [key: string]: any };\n\n  @Column({ type: columnTypes.integer })\n  userId: number;\n}\n\n@Table({ tableName: 'users' })\nexport class User extends Model {\n  @Column({ type: columnTypes.string })\n  name: string;\n\n  @Relation({ \n    modelClass: Post, \n    relation: relationTypes.HasManyRelation, \n    join: { from: 'users.id', to: 'posts.userId' } \n  })\n  posts: Post[];\n}\n```\n\n#### ObjectionModule.forRoot(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRoot({\n      Model,\n      config: {\n        client: \"sqlite3\",\n        useNullAsDefault: true,\n        connection: ':memory:',\n      }\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### ObjectionModule.forRootAsync(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRootAsync({\n      useFactory: () => ({\n        Model,\n        config: {\n          client: \"sqlite3\",\n          useNullAsDefault: true,\n          connection: ':memory:',\n        },\n      }),\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### InjectModel(Model, connection?)\n\n```ts\n// app.controller.ts\nimport { Controller, Get } from '@nestjs/common';\nimport { \n  InjectModel, \n  synchronize, \n  InjectConnection, \n  Connection, \n} from 'nestjs-objection';\nimport { User, Post } from './app.models';\n\n@Controller()\nexport class AppController {\n  constructor(\n    @InjectModel(User) private readonly userModel: typeof User,\n    @InjectModel(Post) private readonly postModel: typeof Post,\n    @InjectConnection() private readonly connection: Connection,\n  ) {}\n\n  @Get()\n  async getHello() {\n    await synchronize(User);\n    await synchronize(Post);\n    await this.userModel.query().insert({ name: 'Name' });\n    await this.postModel.query().insert({ title: 'Title', userId: 1 });\n\n    const users = await this.userModel\n      .query()\n      .select(['users.name'])\n      .withGraphJoined('posts')\n      .modifyGraph('posts', q => q.select(['posts.title']));\n\n    const posts = await this.connection.table('posts');\n\n    return { users, posts };\n  }\n}\n```\n\n#### SoftDeleteModel\n\n```ts\nimport { SoftDeleteModel } from 'nestjs-objection';\n\n@Table({ tableName: 'users', softDelete: true })\nexport class User extends SoftDeleteModel {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.datetime })\n  deletedAt: Date;\n}\n```\n\n```ts\nObjectionModule.forRoot({\n  Model: SoftDeleteModel,\n  config: { /* ... */ }\n})\n```\n\n```ts\nthis.userModel.query().where({ id: 1 }).delete(); // softDelete\nthis.userModel.query().where({ id: 1 }).includeDeleted();\nthis.userModel.query().where({ id: 1 }).forceDelete();\n```\n\n## Typescript\n\n```ts\n// src/index.d.ts\ndeclare module 'objection' {\n  interface WhereMethod<QB extends AnyQueryBuilder> {\n    <T>(columns: Partial<T>): QB;\n    <T>(column: Partial<keyof T>, op: string, value: any): QB;\n  }\n  interface OrderByMethod<QB extends AnyQueryBuilder> {\n    <T>(column: keyof T, order?: 'asc' | 'desc'): QB;\n    <T>(columns: (Array<{ column: keyof T; order?: 'asc' | 'desc' }>)): QB;\n  }\n  interface SelectMethod<QB extends AnyQueryBuilder> {\n    <T>(...columnNames: Array<Partial<keyof T>>): QB;\n    <T>(columnNames: Array<Partial<keyof T>>): QB;\n  }\n  interface QueryBuilder<M extends Model, R = M[]> extends Promise<R> {\n    includeDeleted(): this;\n    forceDelete(): this;\n  }\n}\n```\n\n```ts\n// with type-safe\nconst users = await this.userModel\n  .query()\n  .select<User>(['name'])\n  .where<User>({ name: 'Name' })\n  .orderBy<User>('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select<Post>(['title']));\n\n// without type-safe\nconst users = await this.userModel\n  .query()\n  .select(['name'])\n  .where({ name: 'Name' })\n  .orderBy('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select(['title']));\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"060f6471452ebf7f7afc58f5e1dd8965b7a347b6","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@2.0.0-test.1","_nodeVersion":"12.15.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-GK2qGWmU4++MINYAugsNPui9XO6MUHKxZT0OOAaKH97kf5Mn8rRW1cYdb2wWGAGZ4KzqiHOpUggjXDK3OhINMQ==","shasum":"37cab8717ca9d3d98e5ae815de4609dbf0702ace","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-2.0.0-test.1.tgz","fileCount":22,"unpackedSize":33026,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJei3UFCRA9TVsSAnZWagAADRYQAIMgLzX2tQwvv4djDvnZ\nqZvKFb4Gikr8hpVgUScFtgeCYGdNjud9GVxcBoxlnAW2P61IbGuiDsU2POpL\n+eQ/DCtUP+sivjetLUcuVuz7vkjHIiHkRGO9YkDRGKuClONO7uU7pIa7qoqA\nps1G7eAzvHzA5wsmrnLiygtudpfll5tstme0XiDejS/mDyFppNGNFNzEN/8d\nagfQZ+ftAxGWPSE2YjidZdIw3c8119Hsjm4qTLwNfNK0Kk8DHrfNyZYyu8VO\nbgi0ISLUrHsIV/JVRsiRVnnAdJu4EtQm3Reqcq1H8DZJLxmKjZR9ZO3EDCzG\nC5/h6WHQzeXMprzlWvGyRbe7eoIH/vOHRNdh5ehJg3eGwYkVSBEYdxUQwaTt\nc9dge76IyKrcwcgJzkdPjb5nztslscEY2MWYkmyKHjKKPikvO/cn4jJYQhhb\njYq/Y1g3BnEalK0nviRWWK+UzjH2t8SvGzBnbrNOzXTxHwu1UmeXcp9mvI5V\nkZHnjTqcUxvxoUFhpdjUC5Xr14kMaRu4H7Tp+dN8k3P/GUWr2+4GkQjTFi24\nPTI8KypUmXUt1W0FBEJRJtuWWXSasKkcFnFiyNPn81Clqwz22zQ5lDcOkljK\nX0L0tlh/49qucszrs2h6z7u9Ym1j1hVxds7AAk9h3VclDtqpja4HozL8WuzQ\nIvyY\r\n=J5FB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwlbjQcY4V8n2z9wGOzV3fyREQHw1595ddeZsnMSY63QIhAIrTCjTSGdwCca/bEf8bFDVi7yckMMX69uyevadLy4YC"}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_2.0.0-test.1_1586197765198_0.05443819739207112"},"_hasShrinkwrap":false},"2.0.0-test.2":{"name":"nestjs-objection","version":"2.0.0-test.2","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:next":"npm run build","publish:test":"npm publish --access public --tag test","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","@nestjs/testing":"^7.0.3","@types/jest":"25.1.4","@types/node":"^13.9.2","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.24.0","@typescript-eslint/parser":"^2.24.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"^25.1.0","knex":"^0.20.11","objection":"^2.1.3","pg":"^8.0.0","prettier":"^1.19.1","reflect-metadata":"^0.1.13","release-it":"^13.1.1","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.1","ts-loader":"^6.2.1","ts-node":"^8.7.0","tsconfig-paths":"^3.9.0","typescript":"^3.8.3"},"readme":"# NestJS Objection\n\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/v/nestjs-objection.svg\" alt=\"NPM Version\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/dm/nestjs-objection.svg\" alt=\"NPM Downloads\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/l/nestjs-objection.svg\" alt=\"Package License\" /></a>\n\n## Table of Contents\n\n- [Description](#description)\n- [Installation](#installation)\n- [Features](#features)\n- [Examples](#examples)\n- [Typescript](#typescript)\n- [License](#license)\n\n## Description\nIntegrates Objection.js and Knex with Nest\n\n## Installation\n\n```bash\n$ npm install nestjs-objection knex objection\n```\n\nYou can also use the interactive CLI\n\n```sh\nnpx nestjs-modules\n```\n\n## Features\n\n- Decorators      ```@InjectModel, @Table, @Column, @Relation ```\n- Synchronization ```synchronize(model, force?)```\n- SoftDelete      ```@Table({ softDelete: true })```\n\n#### Table options\n\n| Name         | Type               | Required | Default           |\n| ------------ | ------------------ | -------- | ----------------- |\n| `tableName`  | `string`           | `true`   | `className`       |\n| `softDelete` | `boolean / string` | `false`  | `false`           |\n\n#### Column options\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `type`          | `columnTypes`   | `true`   | `---`             |\n| `default`       | `any`           | `false`  | `---`             |\n| `columnName`    | `string`        | `false`  | `false`           |\n| `nullable`      | `boolean`       | `false`  | `false`           |\n| `notNullable`   | `boolean`       | `false`  | `false`           |\n| `unique`        | `boolean`       | `false`  | `false`           |\n| `unsigned`      | `boolean`       | `false`  | `false`           |\n| `primary`       | `boolean`       | `false`  | `false`           |\n\n#### synchronize(model, force?)\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `model`         | `Model`         | `true`   | `---`             |\n| `force`         | `boolean`       | `false`  | `false`           |\n\n#### columnTypes\n\n| ---             | ---             | ---            | ---               |\n| --------------- | --------------- | -------------- | ----------------- |\n| `increments`    | `bigIncrements` | `integer`      | `bigInteger`      |\n| `text`          | `string`        | `float`        | `decimal`         |\n| `boolean`       | `date`          | `datetime`     | `time`            |\n| `timestamp`     | `timestamps`    | `binary`       | `json`            |\n| `jsonb`         | `uuid`          |                |                   |\n\n## Examples\n```bash\n$ npm install nestjs-objection knex objection sqlite3\n```\n\n#### Models\n\n```ts\n// app.models.ts\nimport { \n  Model, Column, Relation, Table, relationTypes, columnTypes, \n} from 'nestjs-objection';\n\n@Table({ tableName: 'posts' })\nexport class Post extends Model {\n  @Column({ type: columnTypes.string })\n  title: string;\n\n  @Column({ type: columnTypes.json })\n  json: { [key: string]: any };\n\n  @Column({ type: columnTypes.integer })\n  userId: number;\n}\n\n@Table({ tableName: 'users' })\nexport class User extends Model {\n  @Column({ type: columnTypes.string })\n  name: string;\n\n  @Relation({ \n    modelClass: Post, \n    relation: relationTypes.HasManyRelation, \n    join: { from: 'users.id', to: 'posts.userId' } \n  })\n  posts: Post[];\n}\n```\n\n#### ObjectionModule.forRoot(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRoot({\n      Model,\n      config: {\n        client: \"sqlite3\",\n        useNullAsDefault: true,\n        connection: ':memory:',\n      }\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### ObjectionModule.forRootAsync(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRootAsync({\n      useFactory: () => ({\n        Model,\n        config: {\n          client: \"sqlite3\",\n          useNullAsDefault: true,\n          connection: ':memory:',\n        },\n      }),\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### InjectModel(Model, connection?)\n\n```ts\n// app.controller.ts\nimport { Controller, Get } from '@nestjs/common';\nimport { \n  InjectModel, \n  synchronize, \n  InjectConnection, \n  Connection, \n} from 'nestjs-objection';\nimport { User, Post } from './app.models';\n\n@Controller()\nexport class AppController {\n  constructor(\n    @InjectModel(User) private readonly userModel: typeof User,\n    @InjectModel(Post) private readonly postModel: typeof Post,\n    @InjectConnection() private readonly connection: Connection,\n  ) {}\n\n  @Get()\n  async getHello() {\n    await synchronize(User);\n    await synchronize(Post);\n    await this.userModel.query().insert({ name: 'Name' });\n    await this.postModel.query().insert({ title: 'Title', userId: 1 });\n\n    const users = await this.userModel\n      .query()\n      .select(['users.name'])\n      .withGraphJoined('posts')\n      .modifyGraph('posts', q => q.select(['posts.title']));\n\n    const posts = await this.connection.table('posts');\n\n    return { users, posts };\n  }\n}\n```\n\n#### SoftDeleteModel\n\n```ts\nimport { SoftDeleteModel, columnTypes } from 'nestjs-objection';\n\n@Table({ tableName: 'users', softDelete: true })\nexport class User extends SoftDeleteModel {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.datetime })\n  deletedAt: Date;\n}\n```\n\n```ts\nObjectionModule.forRoot({\n  Model: SoftDeleteModel,\n  config: { /* ... */ }\n})\n```\n\n```ts\nthis.userModel.query().where({ id: 1 }).delete(); // softDelete\nthis.userModel.query().where({ id: 1 }).includeDeleted();\nthis.userModel.query().where({ id: 1 }).forceDelete();\n```\n\n## Typescript\n\n```ts\n// src/index.d.ts\ndeclare module 'objection' {\n  interface WhereMethod<QB extends AnyQueryBuilder> {\n    <T>(columns: Partial<T>): QB;\n    <T>(column: Partial<keyof T>, op: string, value: any): QB;\n  }\n  interface OrderByMethod<QB extends AnyQueryBuilder> {\n    <T>(column: keyof T, order?: 'asc' | 'desc'): QB;\n    <T>(columns: (Array<{ column: keyof T; order?: 'asc' | 'desc' }>)): QB;\n  }\n  interface SelectMethod<QB extends AnyQueryBuilder> {\n    <T>(...columnNames: Array<Partial<keyof T>>): QB;\n    <T>(columnNames: Array<Partial<keyof T>>): QB;\n  }\n  interface QueryBuilder<M extends Model, R = M[]> extends Promise<R> {\n    includeDeleted(): this;\n    forceDelete(): this;\n  }\n}\n```\n\n```ts\n// with type-safe\nconst users = await this.userModel\n  .query()\n  .select<User>(['name'])\n  .where<User>({ name: 'Name' })\n  .orderBy<User>('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select<Post>(['title']));\n\n// without type-safe\nconst users = await this.userModel\n  .query()\n  .select(['name'])\n  .where({ name: 'Name' })\n  .orderBy('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select(['title']));\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"52f08502cc3c1a50b5e0d7e2e39013d7d8760185","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@2.0.0-test.2","_nodeVersion":"12.15.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-sseWYZC1F4YNtTfcpHNYl6+xSLW96UqrHb/l1+W5E6AurWZs3ENB/V7tW+bn5lrTGn8ObhWUNLuJ3S+R6k099Q==","shasum":"17f60920283ce61a3d07f4e93ffea18a9deb85be","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-2.0.0-test.2.tgz","fileCount":23,"unpackedSize":35539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJei5heCRA9TVsSAnZWagAALZYQAIXLJK/kH1vfWh1rI5xA\nC6a2TWyNWOjvi9dF0dA87TKDbORT3zIsfcUTvVNHWXYt9C3MOHMZTbzz1YTY\ngXTTGTgodF6mGWnjCw3AJa8SuWmDkmjAAkB5iZbjmkjdlz6RP2poRy08RHVV\n+cOe49zdUqjiH7nsIANJ1lHDW4fYeKKR1pAd2ZGEsg7orIrU+4h9/9KLvA7E\nbF6YGKqcDvRJ/QfxDwux3iIOHn3VS1oglOCOiN4lpE13SRAjgFeV2T0TK0hm\nwWjeoUjV5Btpy2w6CgdbratsSfkPifjSolR2u/8l3lgHdiUZD8S9h6lKK/Gt\nYxAco8AbnlGScwhB1HY34COW6eAyjTnyX1m7x/PFTXV2WfiUMt4C0oLs8VMK\nOBx+LArTv0hxH2RxJktjkMitWYhhmjyTpV/t0c9OT6pPePLsAbpDTl3DfVSD\nal4ogBeVeM8fVDkh15V/vWmy9GpuxosbV1q0LGtlBHNANrVz3/5VVvL2E43L\nQk5TPUQmWx4wfcKSAD6vKvTGIignrRP4H2KMDrcVgIeTnK9i3zJW3tGmxEEW\n3+ZqNyJOEFm1sGqIpQZ38D+LeQ7Q9CJy/ufZ1hxMVnGuApy6BQcpgXLEILZA\nROO2gapxZigpevL6NziJfSUKPtbNoH0IWZsjw16BpgXakoW9fi4My17j4oSz\nMHDb\r\n=ulpN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8U2ocnhqoVqtplH8imq0ecGDf8axM6v/ClxU/HxzzowIgEQlA8uEmGdbQOZagAo1f9hv0VUleNRZaV9bs0h7tP4Q="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_2.0.0-test.2_1586206814219_0.7516960740478382"},"_hasShrinkwrap":false},"2.0.0-test.3":{"name":"nestjs-objection","version":"2.0.0-test.3","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:test":"npm run build","publish:test":"npm publish --access public --tag test","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","@nestjs/testing":"^7.0.3","@types/jest":"25.1.4","@types/node":"^13.9.2","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.24.0","@typescript-eslint/parser":"^2.24.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"^25.1.0","knex":"^0.20.11","objection":"^2.1.3","pg":"^8.0.0","prettier":"^1.19.1","reflect-metadata":"^0.1.13","release-it":"^13.1.1","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.1","ts-loader":"^6.2.1","ts-node":"^8.7.0","tsconfig-paths":"^3.9.0","typescript":"^3.8.3"},"readme":"# NestJS Objection\n\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/v/nestjs-objection.svg\" alt=\"NPM Version\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/dm/nestjs-objection.svg\" alt=\"NPM Downloads\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/l/nestjs-objection.svg\" alt=\"Package License\" /></a>\n\n## Table of Contents\n\n- [Description](#description)\n- [Installation](#installation)\n- [Features](#features)\n- [Examples](#examples)\n- [Typescript](#typescript)\n- [License](#license)\n\n## Description\nIntegrates Objection.js and Knex with Nest\n\n## Installation\n\n```bash\n$ npm install nestjs-objection knex objection\n```\n\nYou can also use the interactive CLI\n\n```sh\nnpx nestjs-modules\n```\n\n## Features\n\n- Decorators      ```@InjectModel, @Table, @Column, @Relation ```\n- Synchronization ```synchronize(model, force?)```\n- SoftDelete      ```@Table({ softDelete: true })```\n\n#### Table options\n\n| Name         | Type               | Required | Default           |\n| ------------ | ------------------ | -------- | ----------------- |\n| `tableName`  | `string`           | `true`   | `className`       |\n| `softDelete` | `boolean / string` | `false`  | `false`           |\n\n#### Column options\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `type`          | `columnTypes`   | `true`   | `---`             |\n| `default`       | `any`           | `false`  | `---`             |\n| `columnName`    | `string`        | `false`  | `false`           |\n| `nullable`      | `boolean`       | `false`  | `false`           |\n| `notNullable`   | `boolean`       | `false`  | `false`           |\n| `unique`        | `boolean`       | `false`  | `false`           |\n| `unsigned`      | `boolean`       | `false`  | `false`           |\n| `primary`       | `boolean`       | `false`  | `false`           |\n\n#### synchronize(model, force?)\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `model`         | `Model`         | `true`   | `---`             |\n| `force`         | `boolean`       | `false`  | `false`           |\n\n#### columnTypes\n\n| ---             | ---             | ---            | ---               |\n| --------------- | --------------- | -------------- | ----------------- |\n| `increments`    | `bigIncrements` | `integer`      | `bigInteger`      |\n| `text`          | `string`        | `float`        | `decimal`         |\n| `boolean`       | `date`          | `datetime`     | `time`            |\n| `timestamp`     | `timestamps`    | `binary`       | `json`            |\n| `jsonb`         | `uuid`          |                |                   |\n\n## Examples\n```bash\n$ npm install nestjs-objection knex objection sqlite3\n```\n\n#### Models\n\n```ts\n// app.models.ts\nimport { \n  Model, Column, Relation, Table, relationTypes, columnTypes, \n} from 'nestjs-objection';\n\n@Table({ tableName: 'posts' })\nexport class Post extends Model {\n  @Column({ type: columnTypes.string })\n  title: string;\n\n  @Column({ type: columnTypes.json })\n  json: { [key: string]: any };\n\n  @Column({ type: columnTypes.integer })\n  userId: number;\n}\n\n@Table({ tableName: 'users' })\nexport class User extends Model {\n  @Column({ type: columnTypes.string })\n  name: string;\n\n  @Relation({ \n    modelClass: Post, \n    relation: relationTypes.HasManyRelation, \n    join: { from: 'users.id', to: 'posts.userId' } \n  })\n  posts: Post[];\n}\n```\n\n#### ObjectionModule.forRoot(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRoot({\n      Model,\n      config: {\n        client: \"sqlite3\",\n        useNullAsDefault: true,\n        connection: ':memory:',\n      }\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### ObjectionModule.forRootAsync(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRootAsync({\n      useFactory: () => ({\n        Model,\n        config: {\n          client: \"sqlite3\",\n          useNullAsDefault: true,\n          connection: ':memory:',\n        },\n      }),\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### InjectModel(Model, connection?)\n\n```ts\n// app.controller.ts\nimport { Controller, Get } from '@nestjs/common';\nimport { \n  InjectModel, \n  synchronize, \n  InjectConnection, \n  Connection, \n} from 'nestjs-objection';\nimport { User, Post } from './app.models';\n\n@Controller()\nexport class AppController {\n  constructor(\n    @InjectModel(User) private readonly userModel: typeof User,\n    @InjectModel(Post) private readonly postModel: typeof Post,\n    @InjectConnection() private readonly connection: Connection,\n  ) {}\n\n  @Get()\n  async getHello() {\n    await synchronize(User);\n    await synchronize(Post);\n    await this.userModel.query().insert({ name: 'Name' });\n    await this.postModel.query().insert({ title: 'Title', userId: 1 });\n\n    const users = await this.userModel\n      .query()\n      .select(['users.name'])\n      .withGraphJoined('posts')\n      .modifyGraph('posts', q => q.select(['posts.title']));\n\n    const posts = await this.connection.table('posts');\n\n    return { users, posts };\n  }\n}\n```\n\n#### SoftDeleteModel\n\n```ts\nimport { SoftDeleteModel, columnTypes } from 'nestjs-objection';\n\n@Table({ tableName: 'users', softDelete: true })\nexport class User extends SoftDeleteModel {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.datetime })\n  deletedAt: Date;\n}\n```\n\n```ts\nObjectionModule.forRoot({\n  Model: SoftDeleteModel,\n  config: { /* ... */ }\n})\n```\n\n```ts\nthis.userModel.query().where({ id: 1 }).delete(); // or alias softDelete()\nthis.userModel.query().where({ id: 1 }).withDeleted();\nthis.userModel.query().where({ id: 1 }).onlyDeleted();\nthis.userModel.query().where({ id: 1 }).forceDelete();\nthis.userModel.query().where({ id: 1 }).restore();\n```\n\n## Typescript\n\n```ts\n// src/index.d.ts\ndeclare module 'objection' {\n  interface WhereMethod<QB extends AnyQueryBuilder> {\n    <T>(columns: Partial<T>): QB;\n    <T>(column: Partial<keyof T>, op: string, value: any): QB;\n  }\n  interface OrderByMethod<QB extends AnyQueryBuilder> {\n    <T>(column: keyof T, order?: 'asc' | 'desc'): QB;\n    <T>(columns: (Array<{ column: keyof T; order?: 'asc' | 'desc' }>)): QB;\n  }\n  interface SelectMethod<QB extends AnyQueryBuilder> {\n    <T>(...columnNames: Array<Partial<keyof T>>): QB;\n    <T>(columnNames: Array<Partial<keyof T>>): QB;\n  }\n  interface QueryBuilder<M extends Model, R = M[]> extends Promise<R> {\n    forceDelete(): this;\n    withDeleted(): this;\n    onlyDeleted(): this;\n    softDelete(): this;\n    restore(): this;\n  }\n}\n```\n\n```ts\n// with type-safe\nconst users = await this.userModel\n  .query()\n  .select<User>(['name'])\n  .where<User>({ name: 'Name' })\n  .orderBy<User>('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select<Post>(['title']));\n\n// without type-safe\nconst users = await this.userModel\n  .query()\n  .select(['name'])\n  .where({ name: 'Name' })\n  .orderBy('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select(['title']));\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"3ff7eb90010012f8ececad0e062d437d56ee5bf6","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@2.0.0-test.3","_nodeVersion":"12.15.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-MIzygNy3SR+iNgTDG3GXyvahYs4fo8BVYHU2g54zcv46WnvU5Z44ebIprWI8SQL7XnWkM71NqQ41uW/YvRbWpw==","shasum":"28f4b2f353b041bd7f70077200198e1c9c721091","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-2.0.0-test.3.tgz","fileCount":23,"unpackedSize":36228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejLTfCRA9TVsSAnZWagAAZg8P/jwX4kWnysz9bhaIpfwR\nYQvEjtPprVRZH/IIARGXmfsfBoKC/BVVwPYFaub29wxs/Px3eNo3vK4CMZ/k\nTdYLhscCM0iq4k2CCWLmghkciUnVi7jSBWmnVHt85K8uJTzm81IrTfkro0sY\no6OGObpwmuTINIxPyVKeTBZq6XvYZyJfQYq9SybgWgzaA4WzX5M/TjbESDn5\nr3vJl3tRAM9fGmtLa9UXpWIULdx9pfN8Xp+1Wtr6qzFjFtNWaj5+OSBeyJ1t\nDsvfOjj6vFbk8GdyeCSrLbISuMvIFnfRnvxrczq2yvPZn89W/aAxoq6vs/Qy\n7MpZe3EY7e1qDi7p3AaO+EzEnnFv02JzPG3h4HyJ0IxRJhb2LPxiT/cYHEGC\n114U0VGcbRl9hT1g5zggUwOUSYjNb+yDEk1JFPt3YhEo4irkAXIDm1KYBG77\nd2ulukhj2Xn6HzrknaPSCQtpAc9jGeXq7TN2C0JyY+BBJBpuCAH1bjecELKh\nA9VBcySixpsiBSzPkG1ksSRSmwTV7ZkfEeFhnO950qNYrrHyLxAYsXH8EBXh\nx7+AMjDfHB1oLewjsk57pfVC7lqQSfI83tKfUngH75jKGqzVDacvip1QhbPI\npnWyVm/bAFNUxAxfbu3y97DvRHgd1rTDsvnssNe2b20IN3Yam9T21OqB//Ye\n5iha\r\n=bZQc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG/aijCukFvXRHQtJEhCM8qn4YN/SWi503CjcGMxtaYnAiBxAjjQayXwRHvL3lwhQAqy/8B2TTxfaRWXrIedgux3vQ=="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_2.0.0-test.3_1586279646955_0.2543951679717875"},"_hasShrinkwrap":false},"2.0.0-test.4":{"name":"nestjs-objection","version":"2.0.0-test.4","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:test":"npm run build","publish:test":"npm publish --access public --tag test","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","@nestjs/testing":"^7.0.3","@types/jest":"25.1.4","@types/node":"^13.9.2","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.24.0","@typescript-eslint/parser":"^2.24.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"^25.1.0","knex":"^0.20.11","objection":"^2.1.3","pg":"^8.0.0","prettier":"^1.19.1","reflect-metadata":"^0.1.13","release-it":"^13.1.1","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.1","ts-loader":"^6.2.1","ts-node":"^8.7.0","tsconfig-paths":"^3.9.0","typescript":"^3.8.3"},"readme":"# NestJS Objection\n\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/v/nestjs-objection.svg\" alt=\"NPM Version\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/dm/nestjs-objection.svg\" alt=\"NPM Downloads\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/l/nestjs-objection.svg\" alt=\"Package License\" /></a>\n\n## Table of Contents\n\n- [Description](#description)\n- [Installation](#installation)\n- [Features](#features)\n- [Examples](#examples)\n- [Typescript](#typescript)\n- [License](#license)\n\n## Description\nIntegrates Objection.js and Knex with Nest\n\n## Installation\n\n```bash\n$ npm install nestjs-objection knex objection\n```\n\nYou can also use the interactive CLI\n\n```sh\nnpx nestjs-modules\n```\n\n## Features\n\n- Decorators      ```@InjectModel, @Table, @Column, @Relation ```\n- Synchronization ```synchronize(model, force?)```\n- SoftDelete      ```@Table({ softDelete: true })```\n\n#### Table options\n\n| Name         | Type               | Required | Default           |\n| ------------ | ------------------ | -------- | ----------------- |\n| `tableName`  | `string`           | `true`   | `className`       |\n| `softDelete` | `boolean / string` | `false`  | `false`           |\n\n#### Column options\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `type`          | `columnTypes`   | `true`   | `---`             |\n| `default`       | `any`           | `false`  | `---`             |\n| `columnName`    | `string`        | `false`  | `false`           |\n| `nullable`      | `boolean`       | `false`  | `false`           |\n| `notNullable`   | `boolean`       | `false`  | `false`           |\n| `unique`        | `boolean`       | `false`  | `false`           |\n| `unsigned`      | `boolean`       | `false`  | `false`           |\n| `primary`       | `boolean`       | `false`  | `false`           |\n\n#### synchronize(model, force?)\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `model`         | `Model`         | `true`   | `---`             |\n| `force`         | `boolean`       | `false`  | `false`           |\n\n#### softDelete\n\n| Method           | Type           | Options        | Return            |\n| --------------- | --------------- | -------------- | ----------------- |\n| `softDelete`    | `function`      | `---`          | `QueryBuilder`    |\n| `withDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `onlyDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `restore`       | `function`      | `---`          | `QueryBuilder`    |\n\n#### columnTypes\n\n| ---             | ---             | ---            | ---               |\n| --------------- | --------------- | -------------- | ----------------- |\n| `increments`    | `bigIncrements` | `integer`      | `bigInteger`      |\n| `text`          | `string`        | `float`        | `decimal`         |\n| `boolean`       | `date`          | `datetime`     | `time`            |\n| `timestamp`     | `timestamps`    | `binary`       | `json`            |\n| `jsonb`         | `uuid`          |                |                   |\n\n## Examples\n```bash\n$ npm install nestjs-objection knex objection sqlite3\n```\n\n#### Models\n\n```ts\n// app.models.ts\nimport { \n  Model, Column, Relation, Table, relationTypes, columnTypes, \n} from 'nestjs-objection';\n\n@Table({ tableName: 'posts' })\nexport class Post extends Model {\n  @Column({ type: columnTypes.string })\n  title: string;\n\n  @Column({ type: columnTypes.json })\n  json: { [key: string]: any };\n\n  @Column({ type: columnTypes.integer })\n  userId: number;\n}\n\n@Table({ tableName: 'users' })\nexport class User extends Model {\n  @Column({ type: columnTypes.string })\n  name: string;\n\n  @Relation({ \n    modelClass: Post, \n    relation: relationTypes.HasManyRelation, \n    join: { from: 'users.id', to: 'posts.userId' } \n  })\n  posts: Post[];\n}\n```\n\n#### ObjectionModule.forRoot(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRoot({\n      Model,\n      config: {\n        client: \"sqlite3\",\n        useNullAsDefault: true,\n        connection: ':memory:',\n      }\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### ObjectionModule.forRootAsync(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRootAsync({\n      useFactory: () => ({\n        Model,\n        config: {\n          client: \"sqlite3\",\n          useNullAsDefault: true,\n          connection: ':memory:',\n        },\n      }),\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### InjectModel(Model, connection?)\n\n```ts\n// app.controller.ts\nimport { Controller, Get } from '@nestjs/common';\nimport { \n  InjectModel, \n  synchronize, \n  InjectConnection, \n  Connection, \n} from 'nestjs-objection';\nimport { User, Post } from './app.models';\n\n@Controller()\nexport class AppController {\n  constructor(\n    @InjectModel(User) private readonly userModel: typeof User,\n    @InjectModel(Post) private readonly postModel: typeof Post,\n    @InjectConnection() private readonly connection: Connection,\n  ) {}\n\n  @Get()\n  async getHello() {\n    await synchronize(User);\n    await synchronize(Post);\n    await this.userModel.query().insert({ name: 'Name' });\n    await this.postModel.query().insert({ title: 'Title', userId: 1 });\n\n    const users = await this.userModel\n      .query()\n      .select(['users.name'])\n      .withGraphJoined('posts')\n      .modifyGraph('posts', q => q.select(['posts.title']));\n\n    const posts = await this.connection.table('posts');\n\n    return { users, posts };\n  }\n}\n```\n\n#### SoftDeleteModel\n\n```ts\nimport { SoftDeleteModel, columnTypes } from 'nestjs-objection';\n\n@Table({ tableName: 'users', softDelete: true })\nexport class User extends SoftDeleteModel {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.datetime })\n  deletedAt: Date;\n}\n```\n\n```ts\nObjectionModule.forRoot({\n  Model: SoftDeleteModel,\n  config: { /* ... */ }\n})\n```\n\n```ts\nthis.userModel.query().where({ id: 1 }).delete(); // or softDelete()\nthis.userModel.query().where({ id: 1 }).withDeleted();\nthis.userModel.query().where({ id: 1 }).onlyDeleted();\nthis.userModel.query().where({ id: 1 }).forceDelete();\nthis.userModel.query().where({ id: 1 }).restore();\n```\n\n## Typescript\n\n```ts\n// src/index.d.ts\ndeclare module 'objection' {\n  interface WhereMethod<QB extends AnyQueryBuilder> {\n    <T>(columns: Partial<T>): QB;\n    <T>(column: Partial<keyof T>, op: string, value: any): QB;\n  }\n  interface OrderByMethod<QB extends AnyQueryBuilder> {\n    <T>(column: keyof T, order?: 'asc' | 'desc'): QB;\n    <T>(columns: (Array<{ column: keyof T; order?: 'asc' | 'desc' }>)): QB;\n  }\n  interface SelectMethod<QB extends AnyQueryBuilder> {\n    <T>(...columnNames: Array<Partial<keyof T>>): QB;\n    <T>(columnNames: Array<Partial<keyof T>>): QB;\n  }\n  interface QueryBuilder<M extends Model, R = M[]> extends Promise<R> {\n    forceDelete(): this;\n    withDeleted(): this;\n    onlyDeleted(): this;\n    softDelete(): this;\n    restore(): this;\n  }\n}\n```\n\n```ts\n// with type-safe\nconst users = await this.userModel\n  .query()\n  .select<User>(['name'])\n  .where<User>({ name: 'Name' })\n  .orderBy<User>('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select<Post>(['title']));\n\n// without type-safe\nconst users = await this.userModel\n  .query()\n  .select(['name'])\n  .where({ name: 'Name' })\n  .orderBy('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select(['title']));\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"d0ed55aedaa7189b46518817a0ad26591540175a","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@2.0.0-test.4","_nodeVersion":"12.15.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Op7TH398YVC1wnsUWvKwecUxbKlZ6akm6o/8xLZ6SE9YVjVwlG+Xw4lo/1BDerKRpiN02c618njf7T0x0bahsg==","shasum":"2d7990899ff6def13b744d8585345663067c4482","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-2.0.0-test.4.tgz","fileCount":23,"unpackedSize":36703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejMN1CRA9TVsSAnZWagAADFoP/1SpIK31YZEwgOidQ0Dt\neNgAfiWe+HoG8iW3YqRnu3iLgCQTZp1GBTVQqixMGVjY67gG2/ecpstXqyrn\nAAeAhsSV+FsMB3OQ01gEbR2CpXNtGPAjCUpGAsVbKx01j84bzUP8UAXTsFjf\n6y8FY20nl9m16N8Djg8H41DAjzKQy3atwWUSYSPYON7PTqWmoGfSMNmAyjNH\nqjqaFrQZq8onHKw0nnahc9Jw0/KtDX4lHPwTVjTHelBY1CoOXObePwfpq9wt\nNZRhSRXDJUxGIPfK5aww8PzNU4pVoHU4Dq5uq6s88bt4TafKM8A6XRc5xj6y\n5L9vdYS8D3/EYaM2gfiLQqbz0wH0POvEoIX5rIgFRY6MOvYkHeP/rxvOokZj\nRdLCTH97ez/kjGnQ12QervIvMFRru/a6WH3KnWiq8LtRllwMiEF2jm9sCq8W\nwien436XMIe3qNFqcGfrFpv2A8RY3KHn95kehlph/SvZsq+65k+wtQ/i+zkc\nsuwyrHtJH6Mg0W2EGI8h/9YL5O4v7vlqLc5R6iqmUZgS1rN58823YgWYOUYi\nElX1itaWuQu/HseJkwL3HNAVPEcpefwW2KT9LISuQ9qhw+7ufOBzacoMsNzq\nFZyATt2bDe5dckW/PI11degNjwDB2ckvMyjvIE7xTCAq9A3w3czxmNa4zXeo\njPA/\r\n=mLht\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAKQ8lN6mNjfPYFnJgyYUvwlZmavcsOhvKdQrbJPwW/UAiAWjf7Ogl3H+y2xUxt7nLgFADPzg8ijUQsuPPICsx/1eA=="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_2.0.0-test.4_1586283381134_0.7810696767311065"},"_hasShrinkwrap":false},"2.0.0-test.5":{"name":"nestjs-objection","version":"2.0.0-test.5","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:test":"npm run build","publish:test":"npm publish --access public --tag test","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","@nestjs/testing":"^7.0.3","@types/jest":"25.1.4","@types/node":"^13.9.2","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.24.0","@typescript-eslint/parser":"^2.24.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"^25.1.0","knex":"^0.20.11","objection":"^2.1.3","pg":"^8.0.0","prettier":"^1.19.1","reflect-metadata":"^0.1.13","release-it":"^13.1.1","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.1","ts-loader":"^6.2.1","ts-node":"^8.7.0","tsconfig-paths":"^3.9.0","typescript":"^3.8.3"},"readme":"# NestJS Objection\n\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/v/nestjs-objection.svg\" alt=\"NPM Version\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/dm/nestjs-objection.svg\" alt=\"NPM Downloads\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/l/nestjs-objection.svg\" alt=\"Package License\" /></a>\n\n## Table of Contents\n\n- [Description](#description)\n- [Installation](#installation)\n- [Features](#features)\n- [Examples](#examples)\n- [Typescript](#typescript)\n- [License](#license)\n\n## Description\n\nIntegrates Objection.js and Knex with Nest\n\n## Installation\n\n```bash\n$ npm install nestjs-objection knex objection\n```\n\nYou can also use the interactive CLI\n\n```sh\nnpx nestjs-modules\n```\n\n## Features\n\n- Decorators      ```@InjectModel, @Table, @Column, @Relation ```\n- Synchronization ```synchronize(model, force?)```\n- SoftDelete      ```@Table({ softDelete: true })```\n\n#### Table options\n\n| Name         | Type               | Required | Default           |\n| ------------ | ------------------ | -------- | ----------------- |\n| `tableName`  | `string`           | `true`   | `className`       |\n| `softDelete` | `boolean / string` | `false`  | `false`           |\n\n#### Column options\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `type`          | `columnTypes`   | `true`   | `---`             |\n| `default`       | `any`           | `false`  | `---`             |\n| `columnName`    | `string`        | `false`  | `false`           |\n| `nullable`      | `boolean`       | `false`  | `false`           |\n| `notNullable`   | `boolean`       | `false`  | `false`           |\n| `unique`        | `boolean`       | `false`  | `false`           |\n| `unsigned`      | `boolean`       | `false`  | `false`           |\n| `primary`       | `boolean`       | `false`  | `false`           |\n\n#### synchronize(model, force?)\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `model`         | `Model`         | `true`   | `---`             |\n| `force`         | `boolean`       | `false`  | `false`           |\n\n#### softDelete\n\n| Method           | Type           | Options        | Return            |\n| --------------- | --------------- | -------------- | ----------------- |\n| `delete`        | `function`      | `---`          | `QueryBuilder`    |\n| `softDelete`    | `function`      | `---`          | `QueryBuilder`    |\n| `forceDelete`   | `function`      | `---`          | `QueryBuilder`    |\n| `withDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `onlyDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `restore`       | `function`      | `---`          | `QueryBuilder`    |\n\n#### columnTypes\n\n| ---             | ---             | ---            | ---               |\n| --------------- | --------------- | -------------- | ----------------- |\n| `increments`    | `bigIncrements` | `integer`      | `bigInteger`      |\n| `text`          | `string`        | `float`        | `decimal`         |\n| `boolean`       | `date`          | `datetime`     | `time`            |\n| `timestamp`     | `timestamps`    | `binary`       | `json`            |\n| `jsonb`         | `uuid`          |                |                   |\n\n## Examples\n\n```bash\n$ npm install nestjs-objection knex objection sqlite3\n```\n\n#### Models\n\n```ts\n// app.models.ts\nimport { \n  Model, Column, Relation, Table, relationTypes, columnTypes, \n} from 'nestjs-objection';\n\n@Table({ tableName: 'posts' })\nexport class Post extends Model {\n  @Column({ type: columnTypes.string })\n  title: string;\n\n  @Column({ type: columnTypes.json })\n  json: { [key: string]: any };\n\n  @Column({ type: columnTypes.integer })\n  userId: number;\n}\n\n@Table({ tableName: 'users' })\nexport class User extends Model {\n  @Column({ type: columnTypes.string })\n  name: string;\n\n  @Relation({ \n    modelClass: Post, \n    relation: relationTypes.HasManyRelation, \n    join: { from: 'users.id', to: 'posts.userId' } \n  })\n  posts: Post[];\n}\n```\n\n#### ObjectionModule.forRoot(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRoot({\n      Model,\n      config: {\n        client: \"sqlite3\",\n        useNullAsDefault: true,\n        connection: ':memory:',\n      }\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### ObjectionModule.forRootAsync(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRootAsync({\n      useFactory: () => ({\n        Model,\n        config: {\n          client: \"sqlite3\",\n          useNullAsDefault: true,\n          connection: ':memory:',\n        },\n      }),\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### InjectModel(Model, connection?)\n\n```ts\n// app.controller.ts\nimport { Controller, Get } from '@nestjs/common';\nimport { \n  InjectModel, \n  synchronize, \n  InjectConnection, \n  Connection, \n} from 'nestjs-objection';\nimport { User, Post } from './app.models';\n\n@Controller()\nexport class AppController {\n  constructor(\n    @InjectModel(User) private readonly userModel: typeof User,\n    @InjectModel(Post) private readonly postModel: typeof Post,\n    @InjectConnection() private readonly connection: Connection,\n  ) {}\n\n  @Get()\n  async getHello() {\n    await synchronize(User);\n    await synchronize(Post);\n    await this.userModel.query().insert({ name: 'Name' });\n    await this.postModel.query().insert({ title: 'Title', userId: 1 });\n\n    const users = await this.userModel\n      .query()\n      .select(['users.name'])\n      .withGraphJoined('posts')\n      .modifyGraph('posts', q => q.select(['posts.title']));\n\n    const posts = await this.connection.table('posts');\n\n    return { users, posts };\n  }\n}\n```\n\n#### SoftDeleteModel\n\n```ts\nimport { SoftDeleteModel, columnTypes } from 'nestjs-objection';\n\n@Table({ tableName: 'users', softDelete: true })\nexport class User extends SoftDeleteModel {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.datetime })\n  deletedAt: Date;\n}\n```\n\n```ts\nObjectionModule.forRoot({\n  Model: SoftDeleteModel,\n  config: { /* ... */ }\n})\n```\n\n```ts\nthis.userModel.query().where({ id: 1 }).delete(); // or softDelete()\nthis.userModel.query().where({ id: 1 }).withDeleted();\nthis.userModel.query().where({ id: 1 }).onlyDeleted();\nthis.userModel.query().where({ id: 1 }).forceDelete();\nthis.userModel.query().where({ id: 1 }).restore();\n```\n\n## Typescript\n\n```ts\n// src/index.d.ts\ndeclare module 'objection' {\n  interface WhereMethod<QB extends AnyQueryBuilder> {\n    <T>(columns: Partial<T>): QB;\n    <T>(column: Partial<keyof T>, op: string, value: any): QB;\n  }\n  interface OrderByMethod<QB extends AnyQueryBuilder> {\n    <T>(column: keyof T, order?: 'asc' | 'desc'): QB;\n    <T>(columns: (Array<{ column: keyof T; order?: 'asc' | 'desc' }>)): QB;\n  }\n  interface SelectMethod<QB extends AnyQueryBuilder> {\n    <T>(...columnNames: Array<Partial<keyof T>>): QB;\n    <T>(columnNames: Array<Partial<keyof T>>): QB;\n  }\n  interface QueryBuilder<M extends Model, R = M[]> extends Promise<R> {\n    forceDelete(): this;\n    withDeleted(): this;\n    onlyDeleted(): this;\n    softDelete(): this;\n    restore(): this;\n  }\n}\n```\n\n```ts\n// with type-safe\nconst users = await this.userModel\n  .query()\n  .select<User>(['name'])\n  .where<User>({ name: 'Name' })\n  .orderBy<User>('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select<Post>(['title']));\n\n// without type-safe\nconst users = await this.userModel\n  .query()\n  .select(['name'])\n  .where({ name: 'Name' })\n  .orderBy('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select(['title']));\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"d097ec82a3196483330bac5a0ea88275a54c030e","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@2.0.0-test.5","_nodeVersion":"12.15.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-w7Ir651To+PrM6jIEQIfowb/FN3gF6LXF5f/pcdQNn5Hxx9bYD3lmHW+BKXOSSi33sRrZmmitUFa+AcQbDOM2A==","shasum":"41529e3a84cb4ec9a01f10c05bb916bead6b4e95","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-2.0.0-test.5.tgz","fileCount":23,"unpackedSize":36874,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejSHCCRA9TVsSAnZWagAA6zQP/RpmsR9oZO5J1+QkRchS\nVAc5Wb7ejOrVfS6LvcwCFG7rpRVhyQn/HHRM287CoV1eLVmxllyuWY9k2g2j\nEakrkwjjF7Um8Nt83Gt1/gUQ195aLCvwi5hsHtFEyXlnvPNgEiMtRa3G4Jgb\n00C1wK/QHqOrtZpMVyJinwSv6cgrQOGap3ZfXy1CA26+qg08wlpireKD/RlA\nYWiJg5+hfPBB5yMbG098/FuKFD67YDpmMgHK1VyXDAavLBin08FyVC2a6Xeb\ngIVJ11eFuq8i+RM0qQ9paPGDCRaKdOPiv+KdYCOFUgwhsRtCOWr85tDUi8dz\ncEz51q/RcEJHuYQMWKssgEwIt+/Q+qB4VpKR1B19hiGzK56Jlw+PTHHL3L0P\ndBMeP1WkVIGQNusuxKbcECtk+mONtoHBFJiDR7E5rku/A/5sGaf3cLrmOuzS\nrrnNC2rl1oo9M0pYcB9Cg3pC2t37lLc9yq1ffx/eaoelJZ5AsisK8zt2bdQN\n5gW/CfCEiDsilVqpG8HjYA75d7yOX/kfrXmyi6tVIHLFHCHinBzKC+ncWWnH\na//CQkCXbrJ7IH+DZm+ceHhA8MxmK5augie73j3tf9Lqf2ZPgOW/inrdNq4K\n1nKUo6Z17EzDKf94gRsthe1DxGVAdkO1Ot3AaT5L3k1lRnIMJMSBPxDJ0B1p\nQ4C4\r\n=slag\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFB35ZRXuKxuE/4wHgrpg3sWRCSNZSHtdKeJMwHIlxRqAiEAhr/6IirbKyLuJFBphMSuc/v2yIvdMWarwNc3HrwPfd8="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_2.0.0-test.5_1586307522007_0.4907383657707467"},"_hasShrinkwrap":false},"2.0.0-test.6":{"name":"nestjs-objection","version":"2.0.0-test.6","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:test":"npm run build","publish:test":"npm publish --access public --tag test","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","@nestjs/testing":"^7.0.3","@types/jest":"25.1.4","@types/node":"^13.9.2","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.24.0","@typescript-eslint/parser":"^2.24.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"^25.1.0","knex":"^0.20.11","objection":"^2.1.3","pg":"^8.0.0","prettier":"^1.19.1","reflect-metadata":"^0.1.13","release-it":"^13.1.1","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.1","ts-loader":"^6.2.1","ts-node":"^8.7.0","tsconfig-paths":"^3.9.0","typescript":"^3.8.3"},"readme":"# NestJS Objection\n\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/v/nestjs-objection.svg\" alt=\"NPM Version\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/dm/nestjs-objection.svg\" alt=\"NPM Downloads\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/l/nestjs-objection.svg\" alt=\"Package License\" /></a>\n\n## Table of Contents\n\n- [Description](#description)\n- [Installation](#installation)\n- [Features](#features)\n- [Examples](#examples)\n- [Typescript](#typescript)\n- [License](#license)\n\n## Description\n\nIntegrates Objection.js and Knex with Nest\n\n## Installation\n\n```bash\n$ npm install nestjs-objection knex objection\n```\n\nYou can also use the interactive CLI\n\n```sh\nnpx nestjs-modules\n```\n\n## Features\n\n- Decorators      ```@InjectModel, @Table, @Column, @Relation ```\n- Synchronization ```synchronize(model, force?)```\n- SoftDelete      ```@Table({ softDelete: true })```\n\n#### Table options\n\n| Name         | Type               | Required | Default           |\n| ------------ | ------------------ | -------- | ----------------- |\n| `tableName`  | `string`           | `true`   | `className`       |\n| `softDelete` | `boolean / string` | `false`  | `false`           |\n\n#### Column options\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `type`          | `columnTypes`   | `true`   | `---`             |\n| `default`       | `any`           | `false`  | `---`             |\n| `columnName`    | `string`        | `false`  | `false`           |\n| `nullable`      | `boolean`       | `false`  | `false`           |\n| `notNullable`   | `boolean`       | `false`  | `false`           |\n| `unique`        | `boolean`       | `false`  | `false`           |\n| `unsigned`      | `boolean`       | `false`  | `false`           |\n| `primary`       | `boolean`       | `false`  | `false`           |\n\n#### synchronize(model, force?)\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `model`         | `Model`         | `true`   | `---`             |\n| `force`         | `boolean`       | `false`  | `false`           |\n\n#### softDelete\n\n| Method           | Type           | Options        | Return            |\n| --------------- | --------------- | -------------- | ----------------- |\n| `delete`        | `function`      | `---`          | `QueryBuilder`    |\n| `softDelete`    | `function`      | `---`          | `QueryBuilder`    |\n| `forceDelete`   | `function`      | `---`          | `QueryBuilder`    |\n| `withDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `onlyDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `restore`       | `function`      | `---`          | `QueryBuilder`    |\n\n#### columnTypes\n\n| ---             | ---             | ---            | ---               |\n| --------------- | --------------- | -------------- | ----------------- |\n| `increments`    | `bigIncrements` | `integer`      | `bigInteger`      |\n| `text`          | `string`        | `float`        | `decimal`         |\n| `boolean`       | `date`          | `datetime`     | `time`            |\n| `timestamp`     | `timestamps`    | `binary`       | `json`            |\n| `jsonb`         | `uuid`          |                |                   |\n\n## Examples\n\n```bash\n$ npm install nestjs-objection knex objection sqlite3\n```\n\n#### Models\n\n```ts\n// app.models.ts\nimport { \n  Model, Column, Relation, Table, relationTypes, columnTypes, \n} from 'nestjs-objection';\n\n@Table({ tableName: 'posts' })\nexport class Post extends Model {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.integer })\n  userId: number;\n  @Column({ type: columnTypes.string })\n  title: string;\n  @Column({ type: columnTypes.json })\n  json: object;\n}\n\n@Table({ tableName: 'users' })\nexport class User extends Model {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.string })\n  name: string;\n  @Relation({ \n    modelClass: Post, \n    relation: relationTypes.HasManyRelation, \n    join: { from: 'users.id', to: 'posts.userId' } \n  })\n  posts: Post[];\n}\n```\n\n#### ObjectionModule.forRoot(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRoot({\n      Model,\n      config: {\n        client: \"sqlite3\",\n        useNullAsDefault: true,\n        connection: ':memory:',\n      }\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### ObjectionModule.forRootAsync(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRootAsync({\n      useFactory: () => ({\n        Model,\n        config: {\n          client: \"sqlite3\",\n          useNullAsDefault: true,\n          connection: ':memory:',\n        },\n      }),\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### InjectModel(Model, connection?)\n\n```ts\n// app.controller.ts\nimport { Controller, Get } from '@nestjs/common';\nimport { \n  InjectModel, \n  synchronize, \n  InjectConnection, \n  Connection, \n} from 'nestjs-objection';\nimport { User, Post } from './app.models';\n\n@Controller()\nexport class AppController {\n  constructor(\n    @InjectModel(User) private readonly userModel: typeof User,\n    @InjectModel(Post) private readonly postModel: typeof Post,\n    @InjectConnection() private readonly connection: Connection,\n  ) {}\n\n  @Get()\n  async getHello() {\n    await synchronize(User);\n    await synchronize(Post);\n    await this.userModel.query().insert({ name: 'Name' });\n    await this.postModel.query().insert({ title: 'Title', userId: 1 });\n\n    const users = await this.userModel\n      .query()\n      .select(['users.name'])\n      .withGraphJoined('posts')\n      .modifyGraph('posts', q => q.select(['posts.title']));\n\n    const posts = await this.connection.table('posts');\n\n    return { users, posts };\n  }\n}\n```\n\n#### SoftDeleteModel\n\n```ts\nimport { SoftDeleteModel, columnTypes } from 'nestjs-objection';\n\n@Table({ tableName: 'users', softDelete: true })\nexport class User extends SoftDeleteModel {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.datetime })\n  deletedAt: Date;\n}\n```\n\n```ts\nObjectionModule.forRoot({\n  Model: SoftDeleteModel,\n  config: { /* ... */ }\n})\n```\n\n```ts\nthis.userModel.query().where({ id: 1 }).delete(); // or softDelete()\nthis.userModel.query().where({ id: 1 }).withDeleted();\nthis.userModel.query().where({ id: 1 }).onlyDeleted();\nthis.userModel.query().where({ id: 1 }).forceDelete();\nthis.userModel.query().where({ id: 1 }).restore();\n```\n\n## Typescript\n\n```ts\n// src/index.d.ts\ndeclare module 'objection' {\n  interface WhereMethod<QB extends AnyQueryBuilder> {\n    <T>(columns: Partial<T>): QB;\n    <T>(column: Partial<keyof T>, op: string, value: any): QB;\n  }\n  interface OrderByMethod<QB extends AnyQueryBuilder> {\n    <T>(column: keyof T, order?: 'asc' | 'desc'): QB;\n    <T>(columns: (Array<{ column: keyof T; order?: 'asc' | 'desc' }>)): QB;\n  }\n  interface SelectMethod<QB extends AnyQueryBuilder> {\n    <T>(...columnNames: Array<Partial<keyof T>>): QB;\n    <T>(columnNames: Array<Partial<keyof T>>): QB;\n  }\n  interface QueryBuilder<M extends Model, R = M[]> extends Promise<R> {\n    forceDelete(): this;\n    withDeleted(): this;\n    onlyDeleted(): this;\n    softDelete(): this;\n    restore(): this;\n  }\n}\n```\n\n```ts\n// with type-safe\nconst users = await this.userModel\n  .query()\n  .select<User>(['name'])\n  .where<User>({ name: 'Name' })\n  .orderBy<User>('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select<Post>(['title']));\n\n// without type-safe\nconst users = await this.userModel\n  .query()\n  .select(['name'])\n  .where({ name: 'Name' })\n  .orderBy('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select(['title']));\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"d1d1fb9f1e3cf88a4301fd786de3e6666493f4c1","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@2.0.0-test.6","_nodeVersion":"12.15.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-LE8DOah7vFDD5zR3hpu8lXOLogFtW4YrdDe6RCJkGF2Og7csTYRPOn5NMwebZQ8wOODs+dl+R/JicuMb2V0J5Q==","shasum":"3365df90af9dbaa93b4b3ef1c11fdfa2fb225812","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-2.0.0-test.6.tgz","fileCount":23,"unpackedSize":37080,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejb22CRA9TVsSAnZWagAAnQEP+gJ/es/5Ap1TOWQI1Cg3\nQZyR4rnZBTBi7C0BCTxLDF4ks2bO3xyh8n/raHCJdlSoqxkls9jfvWZURxPK\nz/VFrBo3h/Mm7ULxRu1p/4vOPcRP7gFcBKhwy3QehBUHai6fV7ea69iRQS8k\n9uOEjwKAuujhRSlvSsZ6XGHKZ12GcTe/5PPIKGy3+7kabPx8SDK5LffG5y/+\nGF/5PfAwLCFGGoVCeQd/UCQYiswLEW482ysauTHP5MDD1pw0CDLFFJnp0KMM\n7jVIzW1sYicor2evNMQ0KxjmI5q6E90m7VinHAATXFh4Z1sl9aPIX0U2PKJy\nE3eVFHyHl127MHdpc+37yigRGqwpCw4FhXjcnBSmjy8+aLAdSYFKTjPi3+tG\n5pKPZy/YOVVkAkhATy4tuwKIC1GRs3fVW15u/Y6x+E40oNG34xjMUpAmeN6m\nKnpyk7poAuoLPN3BjL+nQVUScwBc93p0gQqp22Po+QtnSa/XcomyMIrGTw7/\nVgf+G631SEw2t5eLtGHzRDdL7SNhozwwpe9RD/xC3iAtgN2hVlHkqZj1w09n\nKDN4BPrdJ6eSLcUsdf2vU3exp9MvQUWC9qNmsb9Kj7uLGiU6h0hy6DsX6Ir/\nIfpdDe4l6BImJnHQT2M3H2gMZlLpPD4SoNfl2glMae4djgAVAz4EqpFxx7Pe\nMeBL\r\n=XvRe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHM5UG9IYus9JkowhsN8C6dqIKjUUm5VWzP8U+TeyVbuAiEArhetjl2lifelv38w1RI+yUrvcwAYBs+HJ8pChAWGHDk="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_2.0.0-test.6_1586347445756_0.4384438822166272"},"_hasShrinkwrap":false},"2.0.1":{"name":"nestjs-objection","version":"2.0.1","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:test":"npm run build","publish:test":"npm publish --access public --tag test","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","@nestjs/testing":"^7.0.3","@types/jest":"25.1.4","@types/node":"^13.9.2","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.24.0","@typescript-eslint/parser":"^2.24.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"^25.1.0","knex":"^0.20.11","objection":"^2.1.3","pg":"^8.0.0","prettier":"^1.19.1","reflect-metadata":"^0.1.13","release-it":"^13.1.1","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.1","ts-loader":"^6.2.1","ts-node":"^8.7.0","tsconfig-paths":"^3.9.0","typescript":"^3.8.3"},"gitHead":"02f015522cf029c7456c03fca2521132788e3e60","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@2.0.1","_nodeVersion":"12.15.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ngkO6bwhuM5rFiVCFERp8RrpTU8G3iA2JlHEWdTqZ4wjpCBgvgcer3i/m/SBEMpf7B3ZGR9nN6HFt/DkfhAvZQ==","shasum":"6870cf683cba0aacc8b1851854e6c6194fd349d5","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-2.0.1.tgz","fileCount":23,"unpackedSize":37073,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejrsxCRA9TVsSAnZWagAA0O4P/RIp5/8Xie+tEN/g8Eze\nIqePMPR6wnFaxbqcHEv9cRDVfBhJkmyiTmcbuUZL1e+mZoxxU3vyV1U5EWey\ncnqJ+LdzRdWqCGm6kkBeCuIEDYfl98unizOvxZ8uCUNzDzVwIzyZHPxsfFEg\n1rYa0UllJraLPEckuQHwv1GLbAL8NPXaMc5v71AigqRx+WPivv9zu8Utysqk\nezE2ACO+9yo606e5vGrgnaIesuW6YReG4RRsMalcjN01NsSf9Kua1Vy/gLsC\nVp5Xq3dCK5L/lEv8BtHmTtISvcFPdBazNqxlR6gUsPSiH91JohPOksWf1GJC\nqUKw8wm79m97yIBtbXrfPcWQSNLLUApLnETAUhkFS4jeF62elaC9omyAK8aa\nxm3QhWJpa7pBw6dAzgqQXW7tQOsXrZICgHm+CHxKSk6ywmcxLzjFH+vEKtbY\n8Dwe3EfXau6ccVbjQ127Tm43tvUqey5Ve7UorlbD0phxvZNzqy7yo//xd456\nqGlrGBTXiNIALXp15wUdanN+bqIzGusNSFBxezTj40OGgcXNp+uwQu70tY12\nr0m9lxKjuUNzK/NR/Re+1rKAZIH0fSoAMlT4P20VR87g44k1TfkTcZd0aFY0\nq67kW6+jNLmqPoerXtkJXQ99BZ5taw0HlcHFQTBFpfpVFeqeh3F4W2wvt52g\ng1zN\r\n=fKqr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCOvGDqVTiyoNoWFTtx1Hq4uCyB6wullu8PAJSIwf42DAIgKIyEdFmlU1kQgs3zVaycZC7ddjgxkymT/5WapaiVllY="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_2.0.1_1586412337066_0.7461656423401073"},"_hasShrinkwrap":false},"2.1.0-test.1":{"name":"nestjs-objection","version":"2.1.0-test.1","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","types":"dist/index.d.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:test":"npm run build","publish:test":"npm publish --access public --tag test","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","@nestjs/testing":"^7.0.3","@types/jest":"25.1.4","@types/node":"^13.9.2","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.24.0","@typescript-eslint/parser":"^2.24.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"^25.1.0","knex":"^0.20.11","objection":"^2.1.3","pg":"^8.0.0","prettier":"^1.19.1","reflect-metadata":"^0.1.13","release-it":"^13.1.1","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.1","ts-loader":"^6.2.1","ts-node":"^8.7.0","tsconfig-paths":"^3.9.0","typescript":"^3.8.3"},"readme":"# NestJS Objection\n\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/v/nestjs-objection.svg\" alt=\"NPM Version\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/dm/nestjs-objection.svg\" alt=\"NPM Downloads\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/l/nestjs-objection.svg\" alt=\"Package License\" /></a>\n\n## Table of Contents\n\n- [Description](#description)\n- [Installation](#installation)\n- [Features](#features)\n- [Examples](#examples)\n- [Typescript](#typescript)\n- [License](#license)\n\n## Description\n\nIntegrates Objection.js and Knex with Nest\n\n## Installation\n\n```bash\n$ npm install nestjs-objection knex objection\n```\n\nYou can also use the interactive CLI\n\n```sh\nnpx nestjs-modules\n```\n\n## Features\n\n- Decorators      ```@InjectModel, @Table, @Column, @Relation ```\n- Synchronization ```synchronize(model, force?)```\n- SoftDelete      ```@Table({ softDelete: true })```\n\n#### Table options\n\n| Name         | Type               | Required | Default           |\n| ------------ | ------------------ | -------- | ----------------- |\n| `tableName`  | `string`           | `true`   | `className`       |\n| `softDelete` | `boolean / string` | `false`  | `false`           |\n\n#### Column options\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `type`          | `columnTypes`   | `true`   | `---`             |\n| `default`       | `any`           | `false`  | `---`             |\n| `columnName`    | `string`        | `false`  | `false`           |\n| `nullable`      | `boolean`       | `false`  | `false`           |\n| `notNullable`   | `boolean`       | `false`  | `false`           |\n| `unique`        | `boolean`       | `false`  | `false`           |\n| `unsigned`      | `boolean`       | `false`  | `false`           |\n| `primary`       | `boolean`       | `false`  | `false`           |\n\n#### synchronize(model, force?)\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `model`         | `Model`         | `true`   | `---`             |\n| `force`         | `boolean`       | `false`  | `false`           |\n\n#### softDelete\n\n| Method           | Type           | Options        | Return            |\n| --------------- | --------------- | -------------- | ----------------- |\n| `delete`        | `function`      | `---`          | `QueryBuilder`    |\n| `softDelete`    | `function`      | `---`          | `QueryBuilder`    |\n| `forceDelete`   | `function`      | `---`          | `QueryBuilder`    |\n| `withDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `onlyDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `restore`       | `function`      | `---`          | `QueryBuilder`    |\n\n#### columnTypes\n\n| ---             | ---             | ---            | ---               |\n| --------------- | --------------- | -------------- | ----------------- |\n| `increments`    | `bigIncrements` | `integer`      | `bigInteger`      |\n| `text`          | `string`        | `float`        | `decimal`         |\n| `boolean`       | `date`          | `datetime`     | `time`            |\n| `timestamp`     | `timestamps`    | `binary`       | `json`            |\n| `jsonb`         | `uuid`          |                |                   |\n\n## Examples\n\n```bash\n$ npm install nestjs-objection knex objection sqlite3\n```\n\n#### Models\n\n```ts\n// app.models.ts\nimport { \n  Model, Column, Relation, Table, relationTypes, columnTypes, \n} from 'nestjs-objection';\n\n@Table({ tableName: 'posts' })\nexport class Post extends Model {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.integer })\n  userId: number;\n  @Column({ type: columnTypes.string })\n  title: string;\n  @Column({ type: columnTypes.json })\n  json: object;\n}\n\n@Table({ tableName: 'users' })\nexport class User extends Model {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.string })\n  name: string;\n  @Relation({ \n    modelClass: Post, \n    relation: relationTypes.HasManyRelation, \n    join: { from: 'users.id', to: 'posts.userId' } \n  })\n  posts: Post[];\n}\n```\n\n#### ObjectionModule.forRoot(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRoot({\n      Model,\n      config: {\n        client: \"sqlite3\",\n        useNullAsDefault: true,\n        connection: ':memory:',\n      }\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### ObjectionModule.forRootAsync(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRootAsync({\n      useFactory: () => ({\n        Model,\n        config: {\n          client: \"sqlite3\",\n          useNullAsDefault: true,\n          connection: ':memory:',\n        },\n      }),\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### InjectModel(Model, connection?)\n\n```ts\n// app.controller.ts\nimport { Controller, Get } from '@nestjs/common';\nimport { \n  InjectModel, \n  synchronize, \n  InjectConnection, \n  Connection, \n} from 'nestjs-objection';\nimport { User, Post } from './app.models';\n\n@Controller()\nexport class AppController {\n  constructor(\n    @InjectModel(User) private readonly userModel: typeof User,\n    @InjectModel(Post) private readonly postModel: typeof Post,\n    @InjectConnection() private readonly connection: Connection,\n  ) {}\n\n  @Get()\n  async getHello() {\n    await synchronize(User);\n    await synchronize(Post);\n    await this.userModel.query().insert({ name: 'Name' });\n    await this.postModel.query().insert({ title: 'Title', userId: 1 });\n\n    const users = await this.userModel\n      .query()\n      .select(['users.name'])\n      .withGraphJoined('posts')\n      .modifyGraph('posts', q => q.select(['posts.title']));\n\n    const posts = await this.connection.table('posts');\n\n    return { users, posts };\n  }\n}\n```\n\n#### SoftDeleteModel\n\n```ts\nimport { SoftDeleteModel, columnTypes } from 'nestjs-objection';\n\n@Table({ tableName: 'users', softDelete: true })\nexport class User extends SoftDeleteModel {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.datetime })\n  deletedAt: Date;\n}\n```\n\n```ts\nObjectionModule.forRoot({\n  Model: SoftDeleteModel,\n  config: { /* ... */ }\n})\n```\n\n```ts\nthis.userModel.query().where({ id: 1 }).delete(); // or softDelete()\nthis.userModel.query().where({ id: 1 }).withDeleted();\nthis.userModel.query().where({ id: 1 }).onlyDeleted();\nthis.userModel.query().where({ id: 1 }).forceDelete();\nthis.userModel.query().where({ id: 1 }).restore();\n```\n\n## Typescript\n\n```ts\n// src/index.d.ts\ndeclare module 'objection' {\n  interface WhereMethod<QB extends AnyQueryBuilder> {\n    <T>(columns: Partial<T>): QB;\n    <T>(column: Partial<keyof T>, op: string, value: any): QB;\n  }\n  interface OrderByMethod<QB extends AnyQueryBuilder> {\n    <T>(column: keyof T, order?: 'asc' | 'desc'): QB;\n    <T>(columns: (Array<{ column: keyof T; order?: 'asc' | 'desc' }>)): QB;\n  }\n  interface SelectMethod<QB extends AnyQueryBuilder> {\n    <T>(...columnNames: Array<Partial<keyof T>>): QB;\n    <T>(columnNames: Array<Partial<keyof T>>): QB;\n  }\n  interface QueryBuilder<M extends Model, R = M[]> extends Promise<R> {\n    forceDelete(): this;\n    withDeleted(): this;\n    onlyDeleted(): this;\n    softDelete(): this;\n    restore(): this;\n  }\n}\n```\n\n```ts\n// with type-safe\nconst users = await this.userModel\n  .query()\n  .select<User>(['name'])\n  .where<User>({ name: 'Name' })\n  .orderBy<User>('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select<Post>(['title']));\n\n// without type-safe\nconst users = await this.userModel\n  .query()\n  .select(['name'])\n  .where({ name: 'Name' })\n  .orderBy('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select(['title']));\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"55fd82dea81c41b1aede9554a83d93fe71c01157","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@2.1.0-test.1","_nodeVersion":"12.15.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-KhyVNxD162Bz9ZNmLCXHBiQX5ANgCuGrxVmKNWAmu953S4zwVkvbtY4B6geqAksWT2BG+524am1WUW/++Xh64w==","shasum":"3077b14e5cbc3a3f70b9e33776b50d30da0e7012","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-2.1.0-test.1.tgz","fileCount":25,"unpackedSize":37804,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemAUzCRA9TVsSAnZWagAAI4IP/3e1sJsm6tQaup+giLq5\nvmS+/FSkOUQE2aRVn0w7UMb2AknVUujWVKlazkNowB56WrYGnyvG/U8ucFVE\nxdIn8vcCw4MpKMEMlH32IsU7BCZLpqfGiBHXdfhxOZOQlLtAycBwHmQXJbL+\nUtP8G0qJxMMZHeHMg9AOFnKmBjAWzvlOIpFpk2q7QVKwRUJPVUx5AcoLBN12\nwIdqc+HW5PHi5QKjgtL9ZMzAaa8Rxo8idWhHU7X/v0ZefCdDSToy0eC4sMzu\nDk7ezlKLowhtHhT4y/5kEYtYqVWSEpFnIJ50/sa0ijtNybS40qRAT4UpJYng\nvfgXOZuOARNrP0rNBjFAfrqATeoJ9ZTKIG5sxToqEApcMNN9G24l+MIlKnUJ\n2t0Ov629BQTzTFsWRv0GSHuYtLmQ4NDHMnFwMh/YBNzuOKrgJI4MzHiLzOTR\nD4DPrHFWCMQ0mHL0AWPJSL6pmVLwjxCle3QUw9ATlkw7ljPqiuVKS2EyyNda\nFHUx5s2Ksw4UfCg6Xa6RRzZSwTdJ1EZxg9c1ZeKsgadMLcmP9lJ9cSOkTKIH\nKHxGjwNg2L8ew+x2HZ87RsPWEJMuzJsX/ahYQ4/oIdfBUkhD19s6El3TEC62\n9VmTks6Qa3it+dt5qFyrXpFlWbIVKLtSJOzM1EZrSuiJuW+zaCH/l4o/GYEC\neVU5\r\n=wkK9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdlh2uwzdXH3eIsE/X9eaeigfYEOrekcUmwzNwNyxNDgIhAMB55MWfek9/+SaPpGHw/QRFVW92/TU7YtpcyKmO8XRX"}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_2.1.0-test.1_1587021107416_0.40323096667639424"},"_hasShrinkwrap":false},"2.1.0-test.2":{"name":"nestjs-objection","version":"2.1.0-test.2","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","types":"dist/index.d.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:test":"npm run build","publish:test":"npm publish --access public --tag test","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","@nestjs/testing":"^7.0.3","@types/jest":"25.1.4","@types/node":"^13.9.2","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.24.0","@typescript-eslint/parser":"^2.24.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"^25.1.0","knex":"^0.20.11","objection":"^2.1.3","pg":"^8.0.0","prettier":"^1.19.1","reflect-metadata":"^0.1.13","release-it":"^13.1.1","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.1","ts-loader":"^6.2.1","ts-node":"^8.7.0","tsconfig-paths":"^3.9.0","typescript":"^3.8.3"},"readme":"# NestJS Objection\n\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/v/nestjs-objection.svg\" alt=\"NPM Version\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/dm/nestjs-objection.svg\" alt=\"NPM Downloads\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/l/nestjs-objection.svg\" alt=\"Package License\" /></a>\n\n## Table of Contents\n\n- [Description](#description)\n- [Installation](#installation)\n- [Features](#features)\n- [Examples](#examples)\n- [Typescript](#typescript)\n- [License](#license)\n\n## Description\n\nIntegrates Objection.js and Knex with Nest\n\n## Installation\n\n```bash\n$ npm install nestjs-objection knex objection\n```\n\nYou can also use the interactive CLI\n\n```sh\nnpx nestjs-modules\n```\n\n## Features\n\n- Decorators      ```@InjectModel, @Table, @Column, @Relation ```\n- Synchronization ```synchronize(model, force?)```\n- SoftDelete      ```@Table({ softDelete: true })```\n\n#### Table options\n\n| Name         | Type               | Required | Default           |\n| ------------ | ------------------ | -------- | ----------------- |\n| `tableName`  | `string`           | `true`   | `className`       |\n| `softDelete` | `boolean / string` | `false`  | `false`           |\n\n#### Column options\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `type`          | `columnTypes`   | `true`   | `---`             |\n| `default`       | `any`           | `false`  | `---`             |\n| `columnName`    | `string`        | `false`  | `false`           |\n| `nullable`      | `boolean`       | `false`  | `false`           |\n| `notNullable`   | `boolean`       | `false`  | `false`           |\n| `unique`        | `boolean`       | `false`  | `false`           |\n| `unsigned`      | `boolean`       | `false`  | `false`           |\n| `primary`       | `boolean`       | `false`  | `false`           |\n\n#### synchronize(model, force?)\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `model`         | `Model`         | `true`   | `---`             |\n| `force`         | `boolean`       | `false`  | `false`           |\n\n#### softDelete\n\n| Method           | Type           | Options        | Return            |\n| --------------- | --------------- | -------------- | ----------------- |\n| `delete`        | `function`      | `---`          | `QueryBuilder`    |\n| `softDelete`    | `function`      | `---`          | `QueryBuilder`    |\n| `forceDelete`   | `function`      | `---`          | `QueryBuilder`    |\n| `withDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `onlyDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `restore`       | `function`      | `---`          | `QueryBuilder`    |\n\n#### columnTypes\n\n| ---             | ---             | ---            | ---               |\n| --------------- | --------------- | -------------- | ----------------- |\n| `increments`    | `bigIncrements` | `integer`      | `bigInteger`      |\n| `text`          | `string`        | `float`        | `decimal`         |\n| `boolean`       | `date`          | `datetime`     | `time`            |\n| `timestamp`     | `timestamps`    | `binary`       | `json`            |\n| `jsonb`         | `uuid`          |                |                   |\n\n## Examples\n\n```bash\n$ npm install nestjs-objection knex objection sqlite3\n```\n\n#### Models\n\n```ts\n// app.models.ts\nimport { \n  Model, Column, Relation, Table, relationTypes, columnTypes, \n} from 'nestjs-objection';\n\n@Table({ tableName: 'posts' })\nexport class Post extends Model {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.integer })\n  userId: number;\n  @Column({ type: columnTypes.string })\n  title: string;\n  @Column({ type: columnTypes.json })\n  json: object;\n}\n\n@Table({ tableName: 'users' })\nexport class User extends Model {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.string })\n  name: string;\n  @Relation({ \n    modelClass: Post, \n    relation: relationTypes.HasManyRelation, \n    join: { from: 'users.id', to: 'posts.userId' } \n  })\n  posts: Post[];\n}\n```\n\n#### ObjectionModule.forRoot(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRoot({\n      Model,\n      config: {\n        client: \"sqlite3\",\n        useNullAsDefault: true,\n        connection: ':memory:',\n      }\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### ObjectionModule.forRootAsync(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRootAsync({\n      useFactory: () => ({\n        Model,\n        config: {\n          client: \"sqlite3\",\n          useNullAsDefault: true,\n          connection: ':memory:',\n        },\n      }),\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### InjectModel(Model, connection?)\n\n```ts\n// app.controller.ts\nimport { Controller, Get } from '@nestjs/common';\nimport { \n  InjectModel, \n  synchronize, \n  InjectConnection, \n  Connection, \n} from 'nestjs-objection';\nimport { User, Post } from './app.models';\n\n@Controller()\nexport class AppController {\n  constructor(\n    @InjectModel(User) private readonly userModel: typeof User,\n    @InjectModel(Post) private readonly postModel: typeof Post,\n    @InjectConnection() private readonly connection: Connection,\n  ) {}\n\n  @Get()\n  async getHello() {\n    await synchronize(User);\n    await synchronize(Post);\n    await this.userModel.query().insert({ name: 'Name' });\n    await this.postModel.query().insert({ title: 'Title', userId: 1 });\n\n    const users = await this.userModel\n      .query()\n      .select(['users.name'])\n      .withGraphJoined('posts')\n      .modifyGraph('posts', q => q.select(['posts.title']));\n\n    const posts = await this.connection.table('posts');\n\n    return { users, posts };\n  }\n}\n```\n\n#### SoftDeleteModel\n\n```ts\nimport { SoftDeleteModel, columnTypes } from 'nestjs-objection';\n\n@Table({ tableName: 'users', softDelete: true })\nexport class User extends SoftDeleteModel {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.datetime })\n  deletedAt: Date;\n}\n```\n\n```ts\nObjectionModule.forRoot({\n  Model: SoftDeleteModel,\n  config: { /* ... */ }\n})\n```\n\n```ts\nthis.userModel.query().where({ id: 1 }).delete(); // or softDelete()\nthis.userModel.query().where({ id: 1 }).withDeleted();\nthis.userModel.query().where({ id: 1 }).onlyDeleted();\nthis.userModel.query().where({ id: 1 }).forceDelete();\nthis.userModel.query().where({ id: 1 }).restore();\n```\n\n## Typescript\n\n```ts\n// src/index.d.ts\ndeclare module 'objection' {\n  interface WhereMethod<QB extends AnyQueryBuilder> {\n    <T>(columns: Partial<T>): QB;\n    <T>(column: Partial<keyof T>, op: string, value: any): QB;\n  }\n  interface OrderByMethod<QB extends AnyQueryBuilder> {\n    <T>(column: keyof T, order?: 'asc' | 'desc'): QB;\n    <T>(columns: (Array<{ column: keyof T; order?: 'asc' | 'desc' }>)): QB;\n  }\n  interface SelectMethod<QB extends AnyQueryBuilder> {\n    <T>(...columnNames: Array<Partial<keyof T>>): QB;\n    <T>(columnNames: Array<Partial<keyof T>>): QB;\n  }\n  interface QueryBuilder<M extends Model, R = M[]> extends Promise<R> {\n    forceDelete(): this;\n    withDeleted(): this;\n    onlyDeleted(): this;\n    softDelete(): this;\n    restore(): this;\n  }\n}\n```\n\n```ts\n// with type-safe\nconst users = await this.userModel\n  .query()\n  .select<User>(['name'])\n  .where<User>({ name: 'Name' })\n  .orderBy<User>('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select<Post>(['title']));\n\n// without type-safe\nconst users = await this.userModel\n  .query()\n  .select(['name'])\n  .where({ name: 'Name' })\n  .orderBy('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select(['title']));\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"a5079d689a79642fc2404aff88a4399764785ddf","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@2.1.0-test.2","_nodeVersion":"12.15.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-/UvDDnVA9aXZNbTQ822AeGGCdSFS8RaqAkBoj8VezEYpI6HH7wxM4SQyymUyea2wy/ijORFCAc1rkqF+nXpuJQ==","shasum":"cac9dc490165c816c89b2d899b7dcc0b6a5909aa","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-2.1.0-test.2.tgz","fileCount":25,"unpackedSize":38041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemCG0CRA9TVsSAnZWagAAQJcP/2YwZz31c8vrE6rwSUNI\nwlSuLa8EypGQDjrli/t3eau4y78YGuCwig0/IyTggsSuT1qODqYDEIKvbVaM\n8bFqRfGgmYhhIFIOkpelO+JPmjtNytliTk9P8+6Or0aVxzy57H/YfNidZ4kD\nu7aP6wqHmhewl21A1j/VnUapourunyODSqVn6uIK0MRZOpHIV1xmo7h/jtLd\nBXlEKMVOkXboXfGeM61t6PRotWeLX/YrLjoCg9OaA4BPqXVgNN4/pLIbXocG\nDHHv210UociV5+1LH4/BgGiCFbJCRBhRADsUK1c8gqA0d8C/rE8n7jh+UX8/\n9RxI3pcnDpwCKmrJpo/r3FU6gq28vbAE3A0Ye4lkj4sl25dkW3i0H6LCG/Ez\nAbw3Mi+O365vlUD8wmdpJF6IqNoHtziFrPTm63G4X+HDRZ7lImvSbshZX2Tw\nLi9IXDIr+hbIegxoPJuFqKTpXw8PCen1udMG6825bTHGE3i1xPgjq6HTm9fs\nZipg0et+hyM841Cx0sGzbVRBOxASw4nHhn/TwUmpp4EK5gK+vPXQZDnNTFsc\nyXdnkjOPjKB/F/b1sL0cZrYdnEsZGPo1r3A5EBLnfo7PoFf/TFPXGC3PL74y\ngkyWfNHRScAkVFXRSYQ+OXt1E/ueUPby+q0EG+ou8bdQ3eYraUV8f4d2WLg5\n/879\r\n=Qi8/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGs9kvzaI6aJf21OnQCHV7G2I6Y/j7BtGvUDqy3Yri8ZAiEA/N9+XakW5bp8YJ6lXnzglvhn0IjkQnU7Z7B7jE4NIFg="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_2.1.0-test.2_1587028403846_0.19937495169372554"},"_hasShrinkwrap":false},"2.1.0":{"name":"nestjs-objection","version":"2.1.0","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","types":"dist/index.d.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:test":"npm run build","publish:test":"npm publish --access public --tag test","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","@nestjs/testing":"^7.0.3","@types/jest":"25.1.4","@types/node":"^13.9.2","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.24.0","@typescript-eslint/parser":"^2.24.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"^25.1.0","knex":"^0.20.11","objection":"^2.1.3","pg":"^8.0.0","prettier":"^1.19.1","reflect-metadata":"^0.1.13","release-it":"^13.1.1","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"25.2.1","ts-loader":"^6.2.1","ts-node":"^8.7.0","tsconfig-paths":"^3.9.0","typescript":"^3.8.3"},"gitHead":"b3705e842ef298f55fb655af8f8002c7dbe5cdd9","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@2.1.0","_nodeVersion":"12.15.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-JAHYmNjO2JV5x8zQgaeBLXFGyrFXJ0R6XYhXTeNsI+Gz/sRSeS1+d7TSGpZSliwW0G5W77xJbXSOaItI90Ya0w==","shasum":"788f453ec17c2973257ddb54ae1e585dc01a25da","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-2.1.0.tgz","fileCount":25,"unpackedSize":38034,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemCO0CRA9TVsSAnZWagAAKvIP/RGl53X5QvYxXo5Mhbc0\n8Xfi+Rk0lV8p1dNMvuL9fBPutfUP5gU4kVgw5A1vwQDzDD6PHruHJu0SCD2y\nOGiKma5DMJSCH0p+U8KFE5sEeyfsiZJAu7FIVwpu53dGDP01jIGEXee0Mc25\nvjXg+DO987YjaAOPcJFCE/x9TOijfxzSPEyGzX7SLvHYlcSDQXY5rZcVAla6\n1Uxs2sNLibMZo+ar6hBhcsOpDBPN3bVzPx44va2MMNfYOjoAY9uaOPyJ6/P6\nYDg9PcnmLX69vsl1yyjdqET5tKJDA9E0V1QehR6e5D+Zom/HLYIkINqFseni\nFG0vIm4cI3nsFebq3xHwA8+/yQFUJf/lAZc9j9DmUTj4X5e70K13p/Z5gGOr\nfttsNFVtmCpbwxVLMS42xKqFNmKgUWQgXtDmatuUNp54moGCXndiOb1fwx50\nU35EeBZHsM6Dwi1lpTZ4M2A9fzEYvF9jme+gZRG3pSsaEgQJl1irNFggcz1+\nAfAsvUc7LYtLBqqz+NDbfWTEmQQVjVCbc0YcPf1UpolOLgdmr5kdI4NMxSev\nw39a/JNQdrVyCOOc6k/4JEiMMZ99825L1rP+6+v8gVdICe1cyml1wUBW+bqU\nzqd1oVDsKV0Mzr/YO9w68m0LxldI7siVRU/wtE1Bj+1F9whQzwG5mGnJpWWM\n2BLK\r\n=f13H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEcYvXBR/hQ0me6o1r3PXKMocqZnMRG13+o/xgMvfxzGAiEAt7lvvxW1ZljEkicIksMsBzLnqXRj/M2iQMh2vmShH/w="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_2.1.0_1587028915486_0.8095459512190366"},"_hasShrinkwrap":false},"2.2.0-test.1":{"name":"nestjs-objection","version":"2.2.0-test.1","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","types":"dist/index.d.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:test":"npm run build","publish:test":"npm publish --access public --tag test","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","@nestjs/testing":"^7.0.3","@types/jest":"^26.0.5","@types/node":"^13.9.2","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.24.0","@typescript-eslint/parser":"^2.24.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"^26.1.0","knex":"^0.20.11","objection":"^2.1.3","pg":"^8.0.0","prettier":"^1.19.1","reflect-metadata":"^0.1.13","release-it":"^13.1.1","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"^26.1.3","ts-loader":"^6.2.1","ts-node":"^8.7.0","tsconfig-paths":"^3.9.0","typescript":"^3.8.3"},"readme":"# NestJS Objection\n\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/v/nestjs-objection.svg\" alt=\"NPM Version\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/dm/nestjs-objection.svg\" alt=\"NPM Downloads\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/l/nestjs-objection.svg\" alt=\"Package License\" /></a>\n\n## Table of Contents\n\n- [Description](#description)\n- [Installation](#installation)\n- [Features](#features)\n- [Examples](#examples)\n- [Typescript](#typescript)\n- [License](#license)\n\n## Description\n\nIntegrates Objection.js and Knex with Nest\n\n## Installation\n\n```bash\n$ npm install nestjs-objection knex objection\n```\n\nYou can also use the interactive CLI\n\n```sh\nnpx nestjs-modules\n```\n\n## Features\n\n- Decorators      ```@InjectModel, @Table, @Column, @Relation ```\n- Synchronization ```synchronize(model, force?)```\n- SoftDelete      ```@Table({ softDelete: true })```\n\n#### Table options\n\n| Name         | Type               | Required | Default           |\n| ------------ | ------------------ | -------- | ----------------- |\n| `tableName`  | `string`           | `true`   | `className`       |\n| `softDelete` | `boolean / string` | `false`  | `false`           |\n\n#### Column options\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `type`          | `columnTypes`   | `true`   | `---`             |\n| `default`       | `any`           | `false`  | `---`             |\n| `columnName`    | `string`        | `false`  | `false`           |\n| `nullable`      | `boolean`       | `false`  | `false`           |\n| `notNullable`   | `boolean`       | `false`  | `false`           |\n| `unique`        | `boolean`       | `false`  | `false`           |\n| `unsigned`      | `boolean`       | `false`  | `false`           |\n| `primary`       | `boolean`       | `false`  | `false`           |\n\n#### synchronize(model, force?)\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `model`         | `Model`         | `true`   | `---`             |\n| `force`         | `boolean`       | `false`  | `false`           |\n\n#### softDelete\n\n| Method           | Type           | Options        | Return            |\n| --------------- | --------------- | -------------- | ----------------- |\n| `delete`        | `function`      | `---`          | `QueryBuilder`    |\n| `softDelete`    | `function`      | `---`          | `QueryBuilder`    |\n| `forceDelete`   | `function`      | `---`          | `QueryBuilder`    |\n| `withDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `onlyDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `restore`       | `function`      | `---`          | `QueryBuilder`    |\n\n#### columnTypes\n\n| ---             | ---             | ---            | ---               |\n| --------------- | --------------- | -------------- | ----------------- |\n| `increments`    | `bigIncrements` | `integer`      | `bigInteger`      |\n| `text`          | `string`        | `float`        | `decimal`         |\n| `boolean`       | `date`          | `datetime`     | `time`            |\n| `timestamp`     | `timestamps`    | `binary`       | `json`            |\n| `jsonb`         | `uuid`          |                |                   |\n\n## Examples\n\n```bash\n$ npm install nestjs-objection knex objection sqlite3\n```\n\n#### Models\n\n```ts\n// app.models.ts\nimport { \n  Model, Column, Relation, Table, relationTypes, columnTypes, \n} from 'nestjs-objection';\n\n@Table({ tableName: 'posts' })\nexport class Post extends Model {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.integer })\n  userId: number;\n  @Column({ type: columnTypes.string })\n  title: string;\n  @Column({ type: columnTypes.json })\n  json: object;\n}\n\n@Table({ tableName: 'users' })\nexport class User extends Model {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.string })\n  name: string;\n  @Relation({ \n    modelClass: Post, \n    relation: relationTypes.HasManyRelation, \n    join: { from: 'users.id', to: 'posts.userId' } \n  })\n  posts: Post[];\n}\n```\n\n#### ObjectionModule.forRoot(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRoot({\n      Model,\n      config: {\n        client: \"sqlite3\",\n        useNullAsDefault: true,\n        connection: ':memory:',\n      }\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### ObjectionModule.forRootAsync(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRootAsync({\n      useFactory: () => ({\n        Model,\n        config: {\n          client: \"sqlite3\",\n          useNullAsDefault: true,\n          connection: ':memory:',\n        },\n      }),\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### InjectModel(Model, connection?)\n\n```ts\n// app.controller.ts\nimport { Controller, Get } from '@nestjs/common';\nimport { \n  InjectModel, \n  synchronize, \n  InjectConnection, \n  Connection, \n} from 'nestjs-objection';\nimport { User, Post } from './app.models';\n\n@Controller()\nexport class AppController {\n  constructor(\n    @InjectModel(User) private readonly userModel: typeof User,\n    @InjectModel(Post) private readonly postModel: typeof Post,\n    @InjectConnection() private readonly connection: Connection,\n  ) {}\n\n  @Get()\n  async getHello() {\n    await synchronize(User);\n    await synchronize(Post);\n    await this.userModel.query().insert({ name: 'Name' });\n    await this.postModel.query().insert({ title: 'Title', userId: 1 });\n\n    const users = await this.userModel\n      .query()\n      .select(['users.name'])\n      .withGraphJoined('posts')\n      .modifyGraph('posts', q => q.select(['posts.title']));\n\n    const posts = await this.connection.table('posts');\n\n    return { users, posts };\n  }\n}\n```\n\n#### SoftDeleteModel\n\n```ts\nimport { SoftDeleteModel, columnTypes } from 'nestjs-objection';\n\n@Table({ tableName: 'users', softDelete: true })\nexport class User extends SoftDeleteModel {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.datetime })\n  deletedAt: Date;\n}\n```\n\n```ts\nObjectionModule.forRoot({\n  Model: SoftDeleteModel,\n  config: { /* ... */ }\n})\n```\n\n```ts\nthis.userModel.query().where({ id: 1 }).delete(); // or softDelete()\nthis.userModel.query().where({ id: 1 }).withDeleted();\nthis.userModel.query().where({ id: 1 }).onlyDeleted();\nthis.userModel.query().where({ id: 1 }).forceDelete();\nthis.userModel.query().where({ id: 1 }).restore();\n```\n\n## Typescript\n\n```ts\n// src/index.d.ts\ndeclare module 'objection' {\n  interface WhereMethod<QB extends AnyQueryBuilder> {\n    <T>(columns: Partial<T>): QB;\n    <T>(column: Partial<keyof T>, op: string, value: any): QB;\n  }\n  interface OrderByMethod<QB extends AnyQueryBuilder> {\n    <T>(column: keyof T, order?: 'asc' | 'desc'): QB;\n    <T>(columns: (Array<{ column: keyof T; order?: 'asc' | 'desc' }>)): QB;\n  }\n  interface SelectMethod<QB extends AnyQueryBuilder> {\n    <T>(...columnNames: Array<Partial<keyof T>>): QB;\n    <T>(columnNames: Array<Partial<keyof T>>): QB;\n  }\n  interface QueryBuilder<M extends Model, R = M[]> extends Promise<R> {\n    forceDelete(): this;\n    withDeleted(): this;\n    onlyDeleted(): this;\n    softDelete(): this;\n    restore(): this;\n  }\n}\n```\n\n```ts\n// with type-safe\nconst users = await this.userModel\n  .query()\n  .select<User>(['name'])\n  .where<User>({ name: 'Name' })\n  .orderBy<User>('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select<Post>(['title']));\n\n// without type-safe\nconst users = await this.userModel\n  .query()\n  .select(['name'])\n  .where({ name: 'Name' })\n  .orderBy('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select(['title']));\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"2ed1ec1db641e401c8f0cd7bb3ab75265e53ecd9","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@2.2.0-test.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Kt4ROiZU/aqkLFZwDDOJ9CIvyFmx+HvP0T7hVPAu2HhnOfHLTXRhG7EPONZoivvZbGgw6t1C3jU4Un1b6NofHA==","shasum":"a76eb12bc3929bf1c451efd6f7228d11543228cd","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-2.2.0-test.1.tgz","fileCount":25,"unpackedSize":39567,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM+YCCRA9TVsSAnZWagAAnPwP/RvCkJkjw49axC8GuUxO\nLTPHpcAyB90U0dVSCl3hOj9BKNRVAV83nQaO6Zg1HKdPOBM7Br4EHRLnQvlZ\naNyram71D/N1srx48bSaRtxDkBBte1o6jLNaHaW2zStm26hmFvzTO5cauqkT\nAXTGtKkuESr018wfFu5T3nP3jGYy9lBAobuIc8VgGg9DqSA4wX1yWVkUaQxy\nwt/fhuZ7bU+ASMk5eUI3DFywdfZbMjHg1uIwN/MiBc5YNWz9bRkPKPCTPxyj\nqk1R7kyvQTF5bVfukKbGCTG1dTaciYoTi8RwO4trO+L35IOPWzkR43I6Os/I\nhSK9njAEHSKND1a69+HyBpvY2Y9ZoHgosq7pe5toz7cAoxR+lDQSWKEF2u+w\nWd92+NGS4QbzN3SboEYh3Jd6PzXHE8ZJ908M4pCIRllDkj7psApzGVlUdYO1\ndFtK7Dtiv5GMx5VqWLPtiyKohfvttJRkXDPYe9tYqGSSSutD8JbNoLt+8xjR\nI4Y+9bT6acpH3Y0mIhUcCHnraxbZZZFlFkhsTHI51PkYzT5KPliiM2OpNvqr\nB2eL3Pe3aFgs/GHg+wTZFVw8oxboDIpqT2tiPpTM+oisUgo3G3nfBNOrswMu\npYNlklzkstK2JJhgeH7/dez0dq1SQTItQKDkIFTVcT5AZl1tmaI7Luz1tpxL\nOvsq\r\n=z3ed\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFzUkAjrK5w58sMGXif7w9rEVBpNiWmFoujscwO6sdVcAiBLMmomRZCqFz/6/g5ycJ5g3/zEoIQLu5Ef0MggAFOzfw=="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_2.2.0-test.1_1597236738226_0.4282624731362701"},"_hasShrinkwrap":false},"2.2.0":{"name":"nestjs-objection","version":"2.2.0","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","types":"dist/index.d.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:test":"npm run build","publish:test":"npm publish --access public --tag test","prerelease":"npm run build","release":"release-it"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.16.5","objection":">=2.1.0"},"devDependencies":{"@nestjs/common":"^7.0.3","@nestjs/core":"^7.0.3","@nestjs/testing":"^7.0.3","@types/jest":"^26.0.5","@types/node":"^13.9.2","@types/supertest":"^2.0.8","@typescript-eslint/eslint-plugin":"^2.24.0","@typescript-eslint/parser":"^2.24.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-plugin-import":"^2.20.1","jest":"^26.1.0","knex":"^0.20.11","objection":"^2.1.3","pg":"^8.0.0","prettier":"^1.19.1","reflect-metadata":"^0.1.13","release-it":"^13.1.1","sqlite3":"^4.1.1","supertest":"^4.0.2","ts-jest":"^26.1.3","ts-loader":"^6.2.1","ts-node":"^8.7.0","tsconfig-paths":"^3.9.0","typescript":"^3.8.3"},"gitHead":"560d6ff1ea8776134b2470399ea402a248b05391","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@2.2.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-YikgWC6PGSujun2X+a672tUz3WPFZHF0IDpb9pZRVBIxXv+i6WyQBxAbG/sJnkU69sQwI82XnDb7fq6rnfUTrQ==","shasum":"b53f79a7d4fb560f85671d3e45340e3a871d1024","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-2.2.0.tgz","fileCount":25,"unpackedSize":39560,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNCPCCRA9TVsSAnZWagAAwBUQAIa32S76hCW3rnLGvDkB\nJEDub04wKB7gunPti5+R60Fo3a9ePCbOT/i6fWEcNbjrz8zmFmZyQbxGUDhV\n0fXDEvMXG+EdJ+G+ozOyXWLpSzMHGHJAmgGPRQaN+1tIKnBa0ZicwmrHZ6n/\nK0Wp7aMIcuJZAICloUfUcahxSz9W1K9JlaH5ZLDuGSqT50YmFoKr1BcWhYSt\nDpgLhdqZIzoJKq164J6hBE0/roko9/uD3yKfhZnDbA70cGX5mHUvOkel494k\nWxeD70yDVvzUmvH93TIenwbcJ50NyoRTJho8hj9ABYAU4F9rbiIG6ompNnVX\nlm0fbBennwTbUhxDg/uXsCK5pdMyNysbkcQWrRAk0eKNmYaDbWQqglGMxdeP\nAPkbZShFy5YqxP3l+6itgyMsT+dscGG2bklpE1yjT1tWrgMdxZZcrInNNfS+\nW2Bx+rna5+8mIdONPaf7zbdjrdXVYi0URMYoqOLnv+PFu0IHl2kqEIr35X9Q\nBLJnYiRRa5RfFnIEa/QpmbNcRZU8BHNLtqye0o+oo+JQo3Zom/21la7hPsd2\n23/mvSbAglHsgC9D1/xOWsBFvfRqV9nOjD9wa2JNYht+Abw73vvvNZMxfQmT\n/DVpTu6l/lCOw7SlYEvvq7MZdryJMTgo9uthUT/WF3noafFS6xXagVw2edld\nCPm6\r\n=m8vi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAzX2FfGg4tpP68yIwb3qP2K+eenC2Clf+bsRJjiqsQTAiEAhtWcI4o9hXTWnmIdTBYoLI0ZjKwIItjamP3d3sLxdGY="}]},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_2.2.0_1597252546224_0.3322221528558902"},"_hasShrinkwrap":false},"3.0.0-test.1":{"name":"nestjs-objection","version":"3.0.0-test.1","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","types":"dist/index.d.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:test":"npm run build","publish:test":"npm publish --access public --tag test"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.95.0","objection":">=3.0.0"},"devDependencies":{"@nestjs/common":"^8.2.3","@nestjs/core":"^8.2.3","@nestjs/testing":"^8.2.3","@types/jest":"^27.0.3","@types/node":"^16.11.11","@types/supertest":"^2.0.11","@typescript-eslint/eslint-plugin":"^5.5.0","@typescript-eslint/parser":"^5.5.0","eslint":"^8.3.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","jest":"^27.4.3","knex":"0.95.14","objection":"^3.0.0","pg":"^8.7.1","prettier":"^2.5.0","reflect-metadata":"^0.1.13","rxjs":"^7.4.0","sqlite3":"^5.0.2","supertest":"^6.1.6","ts-jest":"^27.0.7","ts-loader":"^9.2.6","ts-node":"^10.4.0","tsconfig-paths":"^3.12.0","typescript":"^4.5.2"},"dependencies":{},"readme":"# NestJS Objection\n\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/v/nestjs-objection.svg\" alt=\"NPM Version\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/dm/nestjs-objection.svg\" alt=\"NPM Downloads\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/l/nestjs-objection.svg\" alt=\"Package License\" /></a>\n\n## Table of Contents\n\n- [Description](#description)\n- [Installation](#installation)\n- [Features](#features)\n- [Examples](#examples)\n- [Typescript](#typescript)\n- [License](#license)\n\n## Description\n\nIntegrates Objection.js and Knex with Nest\n\n## Installation\n\n```bash\n$ npm install nestjs-objection knex objection\n```\n\nYou can also use the interactive CLI\n\n```sh\nnpx nestjs-modules\n```\n\n## Features\n\n- Decorators      ```@InjectModel, @Table, @Column, @Relation ```\n- Synchronization ```synchronize(model, force?)```\n- SoftDelete      ```@Table({ softDelete: true })```\n\n#### Table options\n\n| Name         | Type               | Required | Default           |\n| ------------ | ------------------ | -------- | ----------------- |\n| `tableName`  | `string`           | `true`   | `className`       |\n| `softDelete` | `boolean / string` | `false`  | `false`           |\n\n#### Column options\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `type`          | `columnTypes`   | `true`   | `---`             |\n| `default`       | `any`           | `false`  | `---`             |\n| `columnName`    | `string`        | `false`  | `false`           |\n| `nullable`      | `boolean`       | `false`  | `false`           |\n| `notNullable`   | `boolean`       | `false`  | `false`           |\n| `unique`        | `boolean`       | `false`  | `false`           |\n| `unsigned`      | `boolean`       | `false`  | `false`           |\n| `primary`       | `boolean`       | `false`  | `false`           |\n\n#### synchronize(model, force?)\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `model`         | `Model`         | `true`   | `---`             |\n| `force`         | `boolean`       | `false`  | `false`           |\n\n#### softDelete\n\n| Method           | Type           | Options        | Return            |\n| --------------- | --------------- | -------------- | ----------------- |\n| `delete`        | `function`      | `---`          | `QueryBuilder`    |\n| `softDelete`    | `function`      | `---`          | `QueryBuilder`    |\n| `forceDelete`   | `function`      | `---`          | `QueryBuilder`    |\n| `withDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `onlyDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `restore`       | `function`      | `---`          | `QueryBuilder`    |\n\n#### columnTypes\n\n| ---             | ---             | ---            | ---               |\n| --------------- | --------------- | -------------- | ----------------- |\n| `increments`    | `bigIncrements` | `integer`      | `bigInteger`      |\n| `text`          | `string`        | `float`        | `decimal`         |\n| `boolean`       | `date`          | `datetime`     | `time`            |\n| `timestamp`     | `timestamps`    | `binary`       | `json`            |\n| `jsonb`         | `uuid`          |                |                   |\n\n## Examples\n\n```bash\n$ npm install nestjs-objection knex objection sqlite3\n```\n\n#### Models\n\n```ts\n// app.models.ts\nimport { \n  Model, Column, Relation, Table, relationTypes, columnTypes, \n} from 'nestjs-objection';\n\n@Table({ tableName: 'posts' })\nexport class Post extends Model {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.integer })\n  userId: number;\n  @Column({ type: columnTypes.string })\n  title: string;\n  @Column({ type: columnTypes.json })\n  json: object;\n}\n\n@Table({ tableName: 'users' })\nexport class User extends Model {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.string })\n  name: string;\n  @Relation({ \n    modelClass: Post, \n    relation: relationTypes.HasManyRelation, \n    join: { from: 'users.id', to: 'posts.userId' } \n  })\n  posts: Post[];\n}\n```\n\n#### ObjectionModule.forRoot(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRoot({\n      Model,\n      config: {\n        client: \"sqlite3\",\n        useNullAsDefault: true,\n        connection: ':memory:',\n      }\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### ObjectionModule.forRootAsync(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRootAsync({\n      useFactory: () => ({\n        Model,\n        config: {\n          client: \"sqlite3\",\n          useNullAsDefault: true,\n          connection: ':memory:',\n        },\n      }),\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### InjectModel(Model, connection?)\n\n```ts\n// app.controller.ts\nimport { Controller, Get } from '@nestjs/common';\nimport { \n  InjectModel, \n  synchronize, \n  InjectConnection, \n  Connection, \n} from 'nestjs-objection';\nimport { User, Post } from './app.models';\n\n@Controller()\nexport class AppController {\n  constructor(\n    @InjectModel(User) private readonly userModel: typeof User,\n    @InjectModel(Post) private readonly postModel: typeof Post,\n    @InjectConnection() private readonly connection: Connection,\n  ) {}\n\n  @Get()\n  async getHello() {\n    await synchronize(User);\n    await synchronize(Post);\n    await this.userModel.query().insert({ name: 'Name' });\n    await this.postModel.query().insert({ title: 'Title', userId: 1 });\n\n    const users = await this.userModel\n      .query()\n      .select(['users.name'])\n      .withGraphJoined('posts')\n      .modifyGraph('posts', q => q.select(['posts.title']));\n\n    const posts = await this.connection.table('posts');\n\n    return { users, posts };\n  }\n}\n```\n\n#### SoftDeleteModel\n\n```ts\nimport { SoftDeleteModel, columnTypes } from 'nestjs-objection';\n\n@Table({ tableName: 'users', softDelete: true })\nexport class User extends SoftDeleteModel {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.datetime })\n  deletedAt: Date;\n}\n```\n\n```ts\nObjectionModule.forRoot({\n  Model: SoftDeleteModel,\n  config: { /* ... */ }\n})\n```\n\n```ts\nthis.userModel.query().where({ id: 1 }).delete(); // or softDelete()\nthis.userModel.query().where({ id: 1 }).withDeleted();\nthis.userModel.query().where({ id: 1 }).onlyDeleted();\nthis.userModel.query().where({ id: 1 }).forceDelete();\nthis.userModel.query().where({ id: 1 }).restore();\n```\n\n## Typescript\n\n```ts\n// src/index.d.ts\ndeclare module 'objection' {\n  interface WhereMethod<QB extends AnyQueryBuilder> {\n    <T>(columns: Partial<T>): QB;\n    <T>(column: Partial<keyof T>, op: string, value: any): QB;\n  }\n  interface OrderByMethod<QB extends AnyQueryBuilder> {\n    <T>(column: keyof T, order?: 'asc' | 'desc'): QB;\n    <T>(columns: (Array<{ column: keyof T; order?: 'asc' | 'desc' }>)): QB;\n  }\n  interface SelectMethod<QB extends AnyQueryBuilder> {\n    <T>(...columnNames: Array<Partial<keyof T>>): QB;\n    <T>(columnNames: Array<Partial<keyof T>>): QB;\n  }\n  interface QueryBuilder<M extends Model, R = M[]> extends Promise<R> {\n    forceDelete(): this;\n    withDeleted(): this;\n    onlyDeleted(): this;\n    softDelete(): this;\n    restore(): this;\n  }\n}\n```\n\n```ts\n// with type-safe\nconst users = await this.userModel\n  .query()\n  .select<User>(['name'])\n  .where<User>({ name: 'Name' })\n  .orderBy<User>('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select<Post>(['title']));\n\n// without type-safe\nconst users = await this.userModel\n  .query()\n  .select(['name'])\n  .where({ name: 'Name' })\n  .orderBy('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select(['title']));\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"78e869f8aa28815210de9b00ebcffbc07d824c26","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@3.0.0-test.1","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-g6WhhJwcnQuhNLOGbHsPBPTcUgEUEGyIBAef65mmHC9zz/sKO+G8I8exl3tUg9xJOl7WN5IU5R1Q1unyuN0lSw==","shasum":"ab2aaab60c7750affd30df081bdeef0be489a374","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-3.0.0-test.1.tgz","fileCount":25,"unpackedSize":39441,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqVIQCRA9TVsSAnZWagAAAzcP/1K+PbXnk+bik/IctmVD\ngrX2s8In8jA3MhkF8+jMfi50Gj5IDHmpejpjU5ZfgPrvgO0qy8gJ8Z4K4BRi\n3W1NA19CaezLsA3OUQzjIdtwCoV2bz3p0AVNBtrBU1Ig2QswRgnW3OJH0/ov\nMOkpWIbfkrumQB3tmW0TN7bVTFIUX5JIlkpgs/6OIpgyqQc7EOu2wsQWNxta\ntHJBRLNbhFsIKGYDW7hmbxsXAMeos1rkWr5jm/3fH7FLKBVVdNoHp9T/clNS\nuh7B76GQPSX36WH7bz/GpoE9Ebje2dYZKVBfPt9bU8iIlUahzxT42oNVr4At\nZ4FWzvJgeB9e0gi47L9Ha/CWC5JZaN762bu+KbHvvVWRIY3RNPGsX8PobMfA\nyph9XY10t5uUEX7LsJBeIOMZbDr4t6rF5xUQ6HTsEUIk974bhNPkA0W6W6R0\nHxUSNChOR1tOuSvWTeoYsXatAkW6ATac5UXSwdWVsVsXz7oFoGsiySQ8y4PC\ncF9MMamVGOvbJx1G0FUgVmWfuPcKyU0zOFIlUH44eFw1iJEy4HY+wEuXpmRi\nPYIoB0n32jN95y5H2FDpv1RI5PWREKr5079PiAr6QhscFF8mN0oeC/WhiDCO\n1ZQM0e8swI7K9eZni1JZXglVXTHAflMZIDvmrDLcgLmUmxnwcpHq3+wK9cdR\nHu+W\r\n=ZNkT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGbOHo0PgjChKGPRePe5hfHDDzD3NxW6MT/OM5ukdOwtAiA0prWbJHAAYrmf7hTOpk2+rZ4l78auZaAy8MA9VGqTEA=="}]},"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_3.0.0-test.1_1638486544260_0.7617332092684659"},"_hasShrinkwrap":false},"3.0.0-test.2":{"name":"nestjs-objection","version":"3.0.0-test.2","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","types":"dist/index.d.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:test":"npm run build","publish:test":"npm publish --access public --tag test"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.95.0","objection":">=3.0.0"},"devDependencies":{"@nestjs/common":"^8.2.3","@nestjs/core":"^8.2.3","@nestjs/testing":"^8.2.3","@types/jest":"^27.0.3","@types/node":"^16.11.11","@types/supertest":"^2.0.11","@typescript-eslint/eslint-plugin":"^5.5.0","@typescript-eslint/parser":"^5.5.0","eslint":"^8.3.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","jest":"^27.4.3","knex":"0.95.14","objection":"^3.0.0","pg":"^8.7.1","prettier":"^2.5.0","reflect-metadata":"^0.1.13","rxjs":"^7.4.0","sqlite3":"^5.0.2","supertest":"^6.1.6","ts-jest":"^27.0.7","ts-loader":"^9.2.6","ts-node":"^10.4.0","tsconfig-paths":"^3.12.0","typescript":"^4.5.2"},"dependencies":{},"readme":"# NestJS Objection\n\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/v/nestjs-objection.svg\" alt=\"NPM Version\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/dm/nestjs-objection.svg\" alt=\"NPM Downloads\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/l/nestjs-objection.svg\" alt=\"Package License\" /></a>\n\n## Table of Contents\n\n- [Description](#description)\n- [Installation](#installation)\n- [Features](#features)\n- [Examples](#examples)\n- [Typescript](#typescript)\n- [License](#license)\n\n## Description\n\nIntegrates Objection.js and Knex with Nest\n\n## Installation\n\n```bash\n$ npm install nestjs-objection knex objection\n```\n\nYou can also use the interactive CLI\n\n```sh\nnpx nestjs-modules\n```\n\n## Features\n\n- Decorators      ```@InjectModel, @Table, @Column, @Relation ```\n- Synchronization ```synchronize(model, force?)```\n- SoftDelete      ```@Table({ softDelete: true })```\n\n#### Table options\n\n| Name         | Type               | Required | Default           |\n| ------------ | ------------------ | -------- | ----------------- |\n| `tableName`  | `string`           | `true`   | `className`       |\n| `softDelete` | `boolean / string` | `false`  | `false`           |\n\n#### Column options\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `type`          | `columnTypes`   | `true`   | `---`             |\n| `default`       | `any`           | `false`  | `---`             |\n| `columnName`    | `string`        | `false`  | `false`           |\n| `nullable`      | `boolean`       | `false`  | `false`           |\n| `notNullable`   | `boolean`       | `false`  | `false`           |\n| `unique`        | `boolean`       | `false`  | `false`           |\n| `unsigned`      | `boolean`       | `false`  | `false`           |\n| `primary`       | `boolean`       | `false`  | `false`           |\n\n#### synchronize(model, force?)\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `model`         | `Model`         | `true`   | `---`             |\n| `force`         | `boolean`       | `false`  | `false`           |\n\n#### softDelete\n\n| Method           | Type           | Options        | Return            |\n| --------------- | --------------- | -------------- | ----------------- |\n| `delete`        | `function`      | `---`          | `QueryBuilder`    |\n| `softDelete`    | `function`      | `---`          | `QueryBuilder`    |\n| `forceDelete`   | `function`      | `---`          | `QueryBuilder`    |\n| `withDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `onlyDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `restore`       | `function`      | `---`          | `QueryBuilder`    |\n\n#### columnTypes\n\n| ---             | ---             | ---            | ---               |\n| --------------- | --------------- | -------------- | ----------------- |\n| `increments`    | `bigIncrements` | `integer`      | `bigInteger`      |\n| `text`          | `string`        | `float`        | `decimal`         |\n| `boolean`       | `date`          | `datetime`     | `time`            |\n| `timestamp`     | `timestamps`    | `binary`       | `json`            |\n| `jsonb`         | `uuid`          |                |                   |\n\n## Examples\n\n```bash\n$ npm install nestjs-objection knex objection sqlite3\n```\n\n#### Models\n\n```ts\n// app.models.ts\nimport { \n  Model, Column, Relation, Table, relationTypes, columnTypes, \n} from 'nestjs-objection';\n\n@Table({ tableName: 'posts' })\nexport class Post extends Model {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.integer })\n  userId: number;\n  @Column({ type: columnTypes.string })\n  title: string;\n  @Column({ type: columnTypes.json })\n  json: object;\n}\n\n@Table({ tableName: 'users' })\nexport class User extends Model {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.string })\n  name: string;\n  @Relation({ \n    modelClass: Post, \n    relation: relationTypes.HasManyRelation, \n    join: { from: 'users.id', to: 'posts.userId' } \n  })\n  posts: Post[];\n}\n```\n\n#### ObjectionModule.forRoot(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRoot({\n      Model,\n      config: {\n        client: \"sqlite3\",\n        useNullAsDefault: true,\n        connection: ':memory:',\n      }\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### ObjectionModule.forRootAsync(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRootAsync({\n      useFactory: () => ({\n        Model,\n        config: {\n          client: \"sqlite3\",\n          useNullAsDefault: true,\n          connection: ':memory:',\n        },\n      }),\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### InjectModel(Model, connection?)\n\n```ts\n// app.controller.ts\nimport { Controller, Get } from '@nestjs/common';\nimport { \n  InjectModel, \n  synchronize, \n  InjectConnection, \n  Connection, \n} from 'nestjs-objection';\nimport { User, Post } from './app.models';\n\n@Controller()\nexport class AppController {\n  constructor(\n    @InjectModel(User) private readonly userModel: typeof User,\n    @InjectModel(Post) private readonly postModel: typeof Post,\n    @InjectConnection() private readonly connection: Connection,\n  ) {}\n\n  @Get()\n  async getHello() {\n    await synchronize(User);\n    await synchronize(Post);\n    await this.userModel.query().insert({ name: 'Name' });\n    await this.postModel.query().insert({ title: 'Title', userId: 1 });\n\n    const users = await this.userModel\n      .query()\n      .select(['users.name'])\n      .withGraphJoined('posts')\n      .modifyGraph('posts', q => q.select(['posts.title']));\n\n    const posts = await this.connection.table('posts');\n\n    return { users, posts };\n  }\n}\n```\n\n#### SoftDeleteModel\n\n```ts\nimport { SoftDeleteModel, columnTypes } from 'nestjs-objection';\n\n@Table({ tableName: 'users', softDelete: true })\nexport class User extends SoftDeleteModel {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.datetime })\n  deletedAt: Date;\n}\n```\n\n```ts\nObjectionModule.forRoot({\n  Model: SoftDeleteModel,\n  config: { /* ... */ }\n})\n```\n\n```ts\nthis.userModel.query().where({ id: 1 }).delete(); // or softDelete()\nthis.userModel.query().where({ id: 1 }).withDeleted();\nthis.userModel.query().where({ id: 1 }).onlyDeleted();\nthis.userModel.query().where({ id: 1 }).forceDelete();\nthis.userModel.query().where({ id: 1 }).restore();\n```\n\n## Typescript\n\n```ts\n// src/index.d.ts\ndeclare module 'objection' {\n  interface WhereMethod<QB extends AnyQueryBuilder> {\n    <T>(columns: Partial<T>): QB;\n    <T>(column: Partial<keyof T>, op: string, value: any): QB;\n  }\n  interface OrderByMethod<QB extends AnyQueryBuilder> {\n    <T>(column: keyof T, order?: 'asc' | 'desc'): QB;\n    <T>(columns: (Array<{ column: keyof T; order?: 'asc' | 'desc' }>)): QB;\n  }\n  interface SelectMethod<QB extends AnyQueryBuilder> {\n    <T>(...columnNames: Array<Partial<keyof T>>): QB;\n    <T>(columnNames: Array<Partial<keyof T>>): QB;\n  }\n  interface QueryBuilder<M extends Model, R = M[]> extends Promise<R> {\n    forceDelete(): this;\n    withDeleted(): this;\n    onlyDeleted(): this;\n    softDelete(): this;\n    restore(): this;\n  }\n}\n```\n\n```ts\n// with type-safe\nconst users = await this.userModel\n  .query()\n  .select<User>(['name'])\n  .where<User>({ name: 'Name' })\n  .orderBy<User>('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select<Post>(['title']));\n\n// without type-safe\nconst users = await this.userModel\n  .query()\n  .select(['name'])\n  .where({ name: 'Name' })\n  .orderBy('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select(['title']));\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","gitHead":"59ea9db209f6bea68e932da62eb13edfa2b6a39f","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@3.0.0-test.2","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-jkDO/H8Dvll7WmfU6hzXuqF4+cXXzOd1TJAHfa2zCXCkevsT4zLf4sNZlJckixpR4bVsG+tFQPQTQmZLAnAn5g==","shasum":"330d74d2740fc0fede530c74cc14361a1d16c8dd","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-3.0.0-test.2.tgz","fileCount":25,"unpackedSize":39804,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqVuUCRA9TVsSAnZWagAAerMP/0MWOYi5pBjKav3Oy6uK\nWqdx1nLNoP4PPAVIARp8nkQ8v+ahF43pvOPSmR7LyVNHNrRJEKf9gU2nnBsO\neDooaqVXhWAUuQPh/Nxogu5rgHqZ9kCrCxkeX/mxUxw+MHSvoUTnaBKoyCZF\nDMbVWvDc2m7ALC5smusuhz/z1LAJxyC4Qjprk/ikJALr8xSz28G8rC2/mQlS\naH+3wzdDrcZl4YRogj2OSap92lDuS3AD2ABR2rFeq6fAEVVMu7nJXMIcruXX\nmbU9AZkYkE072PJvnyMNA2041uSTaB+IUygB2cAn23vDnxPc2GjPF6O42SVJ\nbSQG3/xihyRKq3OB4SsMvRO9FF07prPsz0oxp4LKgVU+LQE9TLXNw6eQrwhD\neOL/Z1DhSVVPvKUiIElBobfDYDc/1BoSGN+Y5uD9mkaaF+WJ3Ymb88zeHZok\nrrBW5/jU3T0jm/mNq616mV7iZvezQsa24GfpIYe8a7Zj8TJfb+nbZYiPPoGU\n7QHiVbhExosqv4L3SksSSwHVf5plmxX7MLnGqvrB9U9HKP9CrEU1WisI4uNn\nW79ejoT+MIq07DNzzluK9KEzD1gJLDDxOPodafLUPuHGkb5MSG8phiZYrYxl\ntEpl1MBhyAkXyeDh3SslGiVgLMfmQpYlAt7NYasTCe0hrEoVJOUF0IjLg7e3\nSVe/\r\n=bk6/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICMJ/lMEgeY/mIZ+70Gxfeh+r7B+F2Wd9Hx4uW/DN0yiAiAbS94YDvgwOynVloWSXk915rFBjttgHuc+h/WOVOrOvQ=="}]},"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_3.0.0-test.2_1638488980202_0.01086067591084583"},"_hasShrinkwrap":false},"3.0.0":{"name":"nestjs-objection","version":"3.0.0","description":"Nest - modern, fast, powerful node.js web framework (@objection)","author":{"name":"Sviatoslav H"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"keywords":["nest","nestjs","objection","knex","orm","database"],"main":"dist/index.js","types":"dist/index.d.js","scripts":{"fix":"rm -rf node_modules && rm package-lock.json && npm install","build":"rm -rf dist && tsc -p tsconfig.build.json","format":"prettier --write \"**/*.ts\"","lint":"eslint 'lib/**/*.ts' --fix","test":"jest --config ./test/jest.config.json --runInBand","prepublish:npm":"npm run build","publish:npm":"npm publish --access public","prepublish:test":"npm run build","publish:test":"npm publish --access public --tag test"},"peerDependencies":{"@nestjs/common":">=6.7.0","@nestjs/core":">=6.7.0","knex":">=0.95.0","objection":">=3.0.0"},"devDependencies":{"@nestjs/common":"^8.2.3","@nestjs/core":"^8.2.3","@nestjs/testing":"^8.2.3","@types/jest":"^27.0.3","@types/node":"^16.11.11","@types/supertest":"^2.0.11","@typescript-eslint/eslint-plugin":"^5.5.0","@typescript-eslint/parser":"^5.5.0","eslint":"^8.3.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","jest":"^27.4.3","knex":"0.95.14","objection":"^3.0.0","pg":"^8.7.1","prettier":"^2.5.0","reflect-metadata":"^0.1.13","rxjs":"^7.4.0","sqlite3":"^5.0.2","supertest":"^6.1.6","ts-jest":"^27.0.7","ts-loader":"^9.2.6","ts-node":"^10.4.0","tsconfig-paths":"^3.12.0","typescript":"^4.5.2"},"dependencies":{},"gitHead":"a83889dac802fa9897e638e1eb3080ade52f607a","bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"homepage":"https://github.com/svtslv/nestjs-objection#readme","_id":"nestjs-objection@3.0.0","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-ScNcJfCjIMSsYyWpp21iURPeLkC9GVck98viN01X4owFZ+TqcbUOfMR/bWfC9J5GdnJ9DojOSewxITYW5ObrxQ==","shasum":"001d9150a58e84f0dfeb14c09fc129b7c8231b51","tarball":"https://registry.npmjs.org/nestjs-objection/-/nestjs-objection-3.0.0.tgz","fileCount":25,"unpackedSize":39797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqV4VCRA9TVsSAnZWagAAXPIP+QG4skauwaOqUad/Kx0/\ndvsDPMf7V81uOlICttZSTLVPcv9RC9bl6XU7KlamIsvkeLhqSgylgkXS51n5\nJIXFK7qst2mg2lYiRMN1pf6ULys5lHU7UsnG3RapfZp3qcZTtve5nTBJHUjx\niD6rZbpNzowZu3NNGOUs/vmx0fDcOhG0qx01YKnCmkKRne99b8h+B7Z0gr+B\nLZHCB+GeWF18U+HqZ7YurvCxUvwymArVMJI0vo+H+lorJKE3X0voX4IAGuyS\nzFnO8w4FnzG3f/udUTnIx+xqZzjPX+oyypU8t5pmu7pdNfLAXxMi5EWDeSsX\noxYbwR39KSrt49J5QrFO9JKFgO9BhlCNoLFfC2g+wMwNlf88wjms6JKWd8Cr\no8NeN79eoAqGU5QtYi4tjU7i3imT0ZX3Lrm7p+hd0dqK3jdph0a4Fkn9619y\nqJgtou4jHQqdX3cTes1ACyAWsIBM4oH0UFdMAAwHB+xCF05yQsVvZ1HDqchb\nE9OnjEqhzpPxIAzFC049lamzxByDyNlSb+/nZAX9v+13jKHL8JX37JcnJrP1\nHG4LY0bwZ4RSHe7eKEuv0+qdNvH7AGkx2h3ARj4o5BnUDL16/Ia7pM2ydCot\nLlFpEgzixycbuj38tzmWOZ7ZbpajEErfde6Szh1o4vOpGgRJG4fSCeuQo/RZ\nsE7Z\r\n=vX+Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBR1nTpqOVOeB9C/8Of8ZIkXDFO52+pqOkbchzkVIkG6AiEA2AAyuATdMu9aUms4BZXcR2br0C2cmTZt6JANx0NzK94="}]},"_npmUser":{"name":"svtslv","email":"svtslv7@gmail.com"},"directories":{},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-objection_3.0.0_1638489620893_0.8285252764164197"},"_hasShrinkwrap":false}},"time":{"created":"2020-02-26T03:20:06.289Z","0.0.1":"2020-02-26T03:20:06.455Z","modified":"2022-05-10T12:50:17.064Z","0.0.2":"2020-02-26T11:47:35.311Z","0.0.3":"2020-02-26T19:00:31.476Z","0.0.4":"2020-02-26T21:43:43.684Z","0.0.5":"2020-02-26T21:45:38.864Z","0.0.6":"2020-02-26T21:58:02.024Z","0.0.7":"2020-02-27T09:41:28.939Z","0.0.8":"2020-02-27T13:37:38.077Z","0.1.0":"2020-02-27T19:57:49.718Z","0.2.0":"2020-02-29T16:09:45.321Z","0.2.1":"2020-02-29T17:05:04.980Z","0.2.2":"2020-02-29T17:48:16.675Z","0.2.3":"2020-03-06T21:03:54.254Z","0.3.0":"2020-03-12T10:51:44.127Z","0.3.1":"2020-03-16T16:21:24.282Z","0.3.2":"2020-03-18T22:51:24.363Z","1.0.0":"2020-03-19T14:15:03.189Z","1.0.1":"2020-04-04T14:34:44.235Z","1.1.0":"2020-04-06T04:05:19.600Z","2.0.0":"2020-04-06T08:49:07.407Z","2.0.0-test.1":"2020-04-06T18:29:25.304Z","2.0.0-test.2":"2020-04-06T21:00:14.341Z","2.0.0-test.3":"2020-04-07T17:14:07.137Z","2.0.0-test.4":"2020-04-07T18:16:21.284Z","2.0.0-test.5":"2020-04-08T00:58:42.164Z","2.0.0-test.6":"2020-04-08T12:04:05.913Z","2.0.1":"2020-04-09T06:05:37.210Z","2.1.0-test.1":"2020-04-16T07:11:47.563Z","2.1.0-test.2":"2020-04-16T09:13:23.969Z","2.1.0":"2020-04-16T09:21:55.771Z","2.2.0-test.1":"2020-08-12T12:52:18.362Z","2.2.0":"2020-08-12T17:15:46.398Z","3.0.0-test.1":"2021-12-02T23:09:04.413Z","3.0.0-test.2":"2021-12-02T23:49:40.442Z","3.0.0":"2021-12-03T00:00:21.057Z"},"maintainers":[{"name":"svtslv","email":"svtslv7@gmail.com"}],"description":"Nest - modern, fast, powerful node.js web framework (@objection)","homepage":"https://github.com/svtslv/nestjs-objection#readme","repository":{"type":"git","url":"git+https://github.com/svtslv/nestjs-objection.git"},"author":{"name":"Sviatoslav H"},"bugs":{"url":"https://github.com/svtslv/nestjs-objection/issues"},"license":"MIT","readme":"# NestJS Objection\n\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/v/nestjs-objection.svg\" alt=\"NPM Version\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/dm/nestjs-objection.svg\" alt=\"NPM Downloads\" /></a>\n<a href=\"https://www.npmjs.com/package/nestjs-objection\"><img src=\"https://img.shields.io/npm/l/nestjs-objection.svg\" alt=\"Package License\" /></a>\n\n## Table of Contents\n\n- [Description](#description)\n- [Installation](#installation)\n- [Features](#features)\n- [Examples](#examples)\n- [Typescript](#typescript)\n- [License](#license)\n\n## Description\n\nIntegrates Objection.js and Knex with Nest\n\n## Installation\n\n```bash\n$ npm install nestjs-objection knex objection\n```\n\nYou can also use the interactive CLI\n\n```sh\nnpx nestjs-modules\n```\n\n## Features\n\n- Decorators      ```@InjectModel, @Table, @Column, @Relation ```\n- Synchronization ```synchronize(model, force?)```\n- SoftDelete      ```@Table({ softDelete: true })```\n\n#### Table options\n\n| Name         | Type               | Required | Default           |\n| ------------ | ------------------ | -------- | ----------------- |\n| `tableName`  | `string`           | `true`   | `className`       |\n| `softDelete` | `boolean / string` | `false`  | `false`           |\n\n#### Column options\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `type`          | `columnTypes`   | `true`   | `---`             |\n| `default`       | `any`           | `false`  | `---`             |\n| `columnName`    | `string`        | `false`  | `false`           |\n| `nullable`      | `boolean`       | `false`  | `false`           |\n| `notNullable`   | `boolean`       | `false`  | `false`           |\n| `unique`        | `boolean`       | `false`  | `false`           |\n| `unsigned`      | `boolean`       | `false`  | `false`           |\n| `primary`       | `boolean`       | `false`  | `false`           |\n\n#### synchronize(model, force?)\n\n| Name            | Type            | Required | Default           |\n| --------------- | --------------- | -------- | ----------------- |\n| `model`         | `Model`         | `true`   | `---`             |\n| `force`         | `boolean`       | `false`  | `false`           |\n\n#### softDelete\n\n| Method           | Type           | Options        | Return            |\n| --------------- | --------------- | -------------- | ----------------- |\n| `delete`        | `function`      | `---`          | `QueryBuilder`    |\n| `softDelete`    | `function`      | `---`          | `QueryBuilder`    |\n| `forceDelete`   | `function`      | `---`          | `QueryBuilder`    |\n| `withDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `onlyDeleted`   | `function`      | `---`          | `QueryBuilder`    |\n| `restore`       | `function`      | `---`          | `QueryBuilder`    |\n\n#### columnTypes\n\n| ---             | ---             | ---            | ---               |\n| --------------- | --------------- | -------------- | ----------------- |\n| `increments`    | `bigIncrements` | `integer`      | `bigInteger`      |\n| `text`          | `string`        | `float`        | `decimal`         |\n| `boolean`       | `date`          | `datetime`     | `time`            |\n| `timestamp`     | `timestamps`    | `binary`       | `json`            |\n| `jsonb`         | `uuid`          |                |                   |\n\n## Examples\n\n```bash\n$ npm install nestjs-objection knex objection sqlite3\n```\n\n#### Models\n\n```ts\n// app.models.ts\nimport { \n  Model, Column, Relation, Table, relationTypes, columnTypes, \n} from 'nestjs-objection';\n\n@Table({ tableName: 'posts' })\nexport class Post extends Model {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.integer })\n  userId: number;\n  @Column({ type: columnTypes.string })\n  title: string;\n  @Column({ type: columnTypes.json })\n  json: object;\n}\n\n@Table({ tableName: 'users' })\nexport class User extends Model {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.string })\n  name: string;\n  @Relation({ \n    modelClass: Post, \n    relation: relationTypes.HasManyRelation, \n    join: { from: 'users.id', to: 'posts.userId' } \n  })\n  posts: Post[];\n}\n```\n\n#### ObjectionModule.forRoot(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRoot({\n      Model,\n      config: {\n        client: \"sqlite3\",\n        useNullAsDefault: true,\n        connection: ':memory:',\n      }\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### ObjectionModule.forRootAsync(options, connection?)\n\n```ts\n// app.module.ts\nimport { Module } from '@nestjs/common';\nimport { ObjectionModule, Model } from 'nestjs-objection'\nimport { AppController } from './app.controller';\nimport { User, Post } from './app.models';\n\n@Module({\n  imports: [\n    ObjectionModule.forRootAsync({\n      useFactory: () => ({\n        Model,\n        config: {\n          client: \"sqlite3\",\n          useNullAsDefault: true,\n          connection: ':memory:',\n        },\n      }),\n    }),\n    ObjectionModule.forFeature([User, Post]),\n  ],\n  controllers: [AppController],\n})\nexport class AppModule {}\n```\n\n#### InjectModel(Model, connection?)\n\n```ts\n// app.controller.ts\nimport { Controller, Get } from '@nestjs/common';\nimport { \n  InjectModel, \n  synchronize, \n  InjectConnection, \n  Connection, \n} from 'nestjs-objection';\nimport { User, Post } from './app.models';\n\n@Controller()\nexport class AppController {\n  constructor(\n    @InjectModel(User) private readonly userModel: typeof User,\n    @InjectModel(Post) private readonly postModel: typeof Post,\n    @InjectConnection() private readonly connection: Connection,\n  ) {}\n\n  @Get()\n  async getHello() {\n    await synchronize(User);\n    await synchronize(Post);\n    await this.userModel.query().insert({ name: 'Name' });\n    await this.postModel.query().insert({ title: 'Title', userId: 1 });\n\n    const users = await this.userModel\n      .query()\n      .select(['users.name'])\n      .withGraphJoined('posts')\n      .modifyGraph('posts', q => q.select(['posts.title']));\n\n    const posts = await this.connection.table('posts');\n\n    return { users, posts };\n  }\n}\n```\n\n#### SoftDeleteModel\n\n```ts\nimport { SoftDeleteModel, columnTypes } from 'nestjs-objection';\n\n@Table({ tableName: 'users', softDelete: true })\nexport class User extends SoftDeleteModel {\n  @Column({ type: columnTypes.increments })\n  id: number;\n  @Column({ type: columnTypes.datetime })\n  deletedAt: Date;\n}\n```\n\n```ts\nObjectionModule.forRoot({\n  Model: SoftDeleteModel,\n  config: { /* ... */ }\n})\n```\n\n```ts\nthis.userModel.query().where({ id: 1 }).delete(); // or softDelete()\nthis.userModel.query().where({ id: 1 }).withDeleted();\nthis.userModel.query().where({ id: 1 }).onlyDeleted();\nthis.userModel.query().where({ id: 1 }).forceDelete();\nthis.userModel.query().where({ id: 1 }).restore();\n```\n\n## Typescript\n\n```ts\n// src/index.d.ts\ndeclare module 'objection' {\n  interface WhereMethod<QB extends AnyQueryBuilder> {\n    <T>(columns: Partial<T>): QB;\n    <T>(column: Partial<keyof T>, op: string, value: any): QB;\n  }\n  interface OrderByMethod<QB extends AnyQueryBuilder> {\n    <T>(column: keyof T, order?: 'asc' | 'desc'): QB;\n    <T>(columns: (Array<{ column: keyof T; order?: 'asc' | 'desc' }>)): QB;\n  }\n  interface SelectMethod<QB extends AnyQueryBuilder> {\n    <T>(...columnNames: Array<Partial<keyof T>>): QB;\n    <T>(columnNames: Array<Partial<keyof T>>): QB;\n  }\n  interface QueryBuilder<M extends Model, R = M[]> extends Promise<R> {\n    forceDelete(): this;\n    withDeleted(): this;\n    onlyDeleted(): this;\n    softDelete(): this;\n    restore(): this;\n  }\n}\n```\n\n```ts\n// with type-safe\nconst users = await this.userModel\n  .query()\n  .select<User>(['name'])\n  .where<User>({ name: 'Name' })\n  .orderBy<User>('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select<Post>(['title']));\n\n// without type-safe\nconst users = await this.userModel\n  .query()\n  .select(['name'])\n  .where({ name: 'Name' })\n  .orderBy('name', 'desc')\n  .withGraphFetched('posts')\n  .modifyGraph('posts', q => q.select(['title']));\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","keywords":["nest","nestjs","objection","knex","orm","database"]}