{"_id":"@akylas/kiss-orm","_rev":"15-e677f727348675358b4853b273c5eeff","name":"@akylas/kiss-orm","dist-tags":{"latest":"2.1.14"},"versions":{"2.1.0":{"name":"@akylas/kiss-orm","version":"2.1.0","author":{"name":"Sébastien Caparros"},"license":"MIT","_id":"@akylas/kiss-orm@2.1.0","maintainers":[{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"}],"homepage":"https://github.com/Seb-C/kiss-orm","bugs":{"url":"https://github.com/Akylas/kiss-orm/issues"},"dist":{"shasum":"1ab2c7606286eea645186a5eb10567a4a3510846","tarball":"https://registry.npmjs.org/@akylas/kiss-orm/-/kiss-orm-2.1.0.tgz","fileCount":29,"integrity":"sha512-iS2wlSytQKjgSx3c4r8pjb4GrKvBnSfASGyh9/rr6Q1fno9ujZDRDgtRPfDOeBQ9KSHU99L3BxB1DAXpsNPtUA==","signatures":[{"sig":"MEUCIQDYA3DBtWbenPr5GGl2yAOD12U4tbwsZWKqrmA9OTvgGwIgNZodnH34htwilFTpeRVPE+Hmite4Bue17jdfdMNDyE0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40820},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">= 12.0.0"},"gitHead":"9520a8ca531e186c5e007b13c498e42f42600b0d","scripts":{"prepare":"tsc"},"_npmUser":{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"},"repository":{"url":"git+https://github.com/Akylas/kiss-orm.git","type":"git"},"_npmVersion":"9.7.1","description":"An extremely simple and explicit ORM for TypeScript","directories":{},"_nodeVersion":"18.10.0","_hasShrinkwrap":false,"devDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","jasmine":"^3.6.3","pg-pool":"^3.2.2","sqlite3":"^5.0.0","ts-node":"^10.9.1","@types/pg":"^7.14.7","pg-format":"^1.0.4","sqlstring":"^2.3.2","typescript":"^4.1.3","@types/mysql":"^2.15.17","@types/jasmine":"^3.6.2","@types/pg-pool":"^2.0.2","@types/sqlite3":"^3.1.6","@types/pg-format":"^1.0.1","@types/sqlstring":"^2.3.0"},"peerDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","pg-pool":"^3.2.2","sqlite3":"^5.0.0","pg-format":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kiss-orm_2.1.0_1690115946195_0.9468200823995883","host":"s3://npm-registry-packages"}},"2.1.1":{"name":"@akylas/kiss-orm","version":"2.1.1","author":{"name":"Sébastien Caparros"},"license":"MIT","_id":"@akylas/kiss-orm@2.1.1","maintainers":[{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"}],"homepage":"https://github.com/Seb-C/kiss-orm","bugs":{"url":"https://github.com/Akylas/kiss-orm/issues"},"dist":{"shasum":"d6806859eb51c2715c40d683008550b846a392b1","tarball":"https://registry.npmjs.org/@akylas/kiss-orm/-/kiss-orm-2.1.1.tgz","fileCount":29,"integrity":"sha512-4IqncwfNCdUi2DAsE8duqc6OoJrJcea1tBY1mFodU+7vbFWVQwcLFFHL1n44Ar9pTvCZhLYLWeJYZjeswRloig==","signatures":[{"sig":"MEUCIQCmN8qA1iDvhJbU7cuk5F+dQdMNrd4BRvHXtvR/K/+F5gIgTdh/HajZ2DwbZpa23n4kWmN9UlaDx8fv4Ah9wpMUSbA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40834},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">= 12.0.0"},"gitHead":"6e8de6e4b76a65f9cf7f9e80411da1d11787d387","scripts":{"prepare":"tsc"},"_npmUser":{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"},"repository":{"url":"git+https://github.com/Akylas/kiss-orm.git","type":"git"},"_npmVersion":"9.7.1","description":"An extremely simple and explicit ORM for TypeScript","directories":{},"_nodeVersion":"18.10.0","_hasShrinkwrap":false,"devDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","jasmine":"^3.6.3","pg-pool":"^3.2.2","sqlite3":"^5.0.0","ts-node":"^10.9.1","@types/pg":"^7.14.7","pg-format":"^1.0.4","sqlstring":"^2.3.2","typescript":"^4.1.3","@types/mysql":"^2.15.17","@types/jasmine":"^3.6.2","@types/pg-pool":"^2.0.2","@types/sqlite3":"^3.1.6","@types/pg-format":"^1.0.1","@types/sqlstring":"^2.3.0"},"peerDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","pg-pool":"^3.2.2","sqlite3":"^5.0.0","pg-format":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kiss-orm_2.1.1_1697360569511_0.8554160634632801","host":"s3://npm-registry-packages"}},"2.1.2":{"name":"@akylas/kiss-orm","version":"2.1.2","author":{"name":"Sébastien Caparros"},"license":"MIT","_id":"@akylas/kiss-orm@2.1.2","maintainers":[{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"}],"homepage":"https://github.com/Seb-C/kiss-orm","bugs":{"url":"https://github.com/Akylas/kiss-orm/issues"},"dist":{"shasum":"6d6bca61c2307dffffb43176c7e1d1ddaa7e4bea","tarball":"https://registry.npmjs.org/@akylas/kiss-orm/-/kiss-orm-2.1.2.tgz","fileCount":29,"integrity":"sha512-vrZKRWDGYj1uyo3c4P41TlozggB+kmjmhrA1B8LDNUGo0IdEg0GvqK8rsC1VxSMpFSNHTqO+aD6/STDmb5L4LA==","signatures":[{"sig":"MEYCIQDQQlw7utmnueGUOXxe5sYh6J8czm3uXuVxN/hVoJgpeQIhAJTFcpdikUfrO8vdi8NqU9LBWceRgGYoIN4eHoBddQWP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40754},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">= 12.0.0"},"gitHead":"b95064a61bb96046dfc4bdaf90354984c15cec6e","scripts":{"prepare":"tsc"},"_npmUser":{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"},"repository":{"url":"git+https://github.com/Akylas/kiss-orm.git","type":"git"},"_npmVersion":"9.7.1","description":"An extremely simple and explicit ORM for TypeScript","directories":{},"_nodeVersion":"18.10.0","_hasShrinkwrap":false,"devDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","jasmine":"^3.6.3","pg-pool":"^3.2.2","sqlite3":"^5.0.0","ts-node":"^10.9.1","@types/pg":"^7.14.7","pg-format":"^1.0.4","sqlstring":"^2.3.2","typescript":"^4.1.3","@types/mysql":"^2.15.17","@types/jasmine":"^3.6.2","@types/pg-pool":"^2.0.2","@types/sqlite3":"^3.1.6","@types/pg-format":"^1.0.1","@types/sqlstring":"^2.3.0"},"peerDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","pg-pool":"^3.2.2","sqlite3":"^5.0.0","pg-format":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kiss-orm_2.1.2_1697379800980_0.008517600847102624","host":"s3://npm-registry-packages"}},"2.1.3":{"name":"@akylas/kiss-orm","version":"2.1.3","author":{"name":"Sébastien Caparros"},"license":"MIT","_id":"@akylas/kiss-orm@2.1.3","maintainers":[{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"}],"homepage":"https://github.com/Seb-C/kiss-orm","bugs":{"url":"https://github.com/Akylas/kiss-orm/issues"},"dist":{"shasum":"e7f23a34122d3fe80dcee3a1aaa606098993b97b","tarball":"https://registry.npmjs.org/@akylas/kiss-orm/-/kiss-orm-2.1.3.tgz","fileCount":29,"integrity":"sha512-/6F6BUYN048n1JWaYsBuaBkd6LFuZQRRSwhYEBtoDTpL+MCJX8VAqP043eydmk6kFz4yJAu5BZ/qrej2GDxYXg==","signatures":[{"sig":"MEQCIE0MM0qktDFexSP0MPCwQx6hIPdJTdA56HxCadRQdPdsAiBTLcMNemUr0UdX5jafBLLBgtESP9BUbFP6UyuFHK9G0w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40962},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">= 12.0.0"},"gitHead":"cd372f51c8bf9b7ea8f43e2ea93f42750d492642","scripts":{"prepare":"tsc"},"_npmUser":{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"},"repository":{"url":"git+https://github.com/Akylas/kiss-orm.git","type":"git"},"_npmVersion":"9.7.1","description":"An extremely simple and explicit ORM for TypeScript","directories":{},"_nodeVersion":"18.10.0","_hasShrinkwrap":false,"devDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","jasmine":"^3.6.3","pg-pool":"^3.2.2","sqlite3":"^5.0.0","ts-node":"^10.9.1","@types/pg":"^7.14.7","pg-format":"^1.0.4","sqlstring":"^2.3.2","typescript":"^4.1.3","@types/mysql":"^2.15.17","@types/jasmine":"^3.6.2","@types/pg-pool":"^2.0.2","@types/sqlite3":"^3.1.6","@types/pg-format":"^1.0.1","@types/sqlstring":"^2.3.0"},"peerDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","pg-pool":"^3.2.2","sqlite3":"^5.0.0","pg-format":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kiss-orm_2.1.3_1699262611368_0.6536381693570616","host":"s3://npm-registry-packages"}},"2.1.4":{"name":"@akylas/kiss-orm","version":"2.1.4","author":{"name":"Sébastien Caparros"},"license":"MIT","_id":"@akylas/kiss-orm@2.1.4","maintainers":[{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"}],"homepage":"https://github.com/Seb-C/kiss-orm","bugs":{"url":"https://github.com/Akylas/kiss-orm/issues"},"dist":{"shasum":"ec1c2a5b2878ef58a4be060fc46f0eb952b9d916","tarball":"https://registry.npmjs.org/@akylas/kiss-orm/-/kiss-orm-2.1.4.tgz","fileCount":29,"integrity":"sha512-669wetZjk5sJXk52a2SwAtetk2KtGlZwANjw7frcyaRfO7o7br97CNugcr2NxxERMmOk4jDtmw6rboh9TbVhnA==","signatures":[{"sig":"MEUCIQDCuHKEyHEfBdKetM7Ntr0YHwKVHI4A1yD0SMvK69+cmwIgWKyEojfenA+oH27pZ6QoJCz+JnwDs9Ul7YmisHhQ9ik=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40887},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">= 12.0.0"},"gitHead":"9397a36ae3895cf81bb54d8fc23572e505686d7e","scripts":{"prepare":"tsc"},"_npmUser":{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"},"repository":{"url":"git+https://github.com/Akylas/kiss-orm.git","type":"git"},"_npmVersion":"10.1.0","description":"An extremely simple and explicit ORM for TypeScript","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","jasmine":"^3.6.3","pg-pool":"^3.2.2","sqlite3":"^5.0.0","ts-node":"^10.9.1","@types/pg":"^7.14.7","pg-format":"^1.0.4","sqlstring":"^2.3.2","typescript":"^4.1.3","@types/mysql":"^2.15.17","@types/jasmine":"^3.6.2","@types/pg-pool":"^2.0.2","@types/sqlite3":"^3.1.6","@types/pg-format":"^1.0.1","@types/sqlstring":"^2.3.0"},"peerDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","pg-pool":"^3.2.2","sqlite3":"^5.0.0","pg-format":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kiss-orm_2.1.4_1700927490137_0.7175313895465707","host":"s3://npm-registry-packages"}},"2.1.5":{"name":"@akylas/kiss-orm","version":"2.1.5","author":{"name":"Sébastien Caparros"},"license":"MIT","_id":"@akylas/kiss-orm@2.1.5","maintainers":[{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"}],"homepage":"https://github.com/Seb-C/kiss-orm","bugs":{"url":"https://github.com/Akylas/kiss-orm/issues"},"dist":{"shasum":"261fa515c926abf81eab284289a6fde9abec2901","tarball":"https://registry.npmjs.org/@akylas/kiss-orm/-/kiss-orm-2.1.5.tgz","fileCount":29,"integrity":"sha512-vblqrW9uipiMqQZuqSNOSYX8Yaj5pvZWJXf6bwhDqtrbOKA/w+QYb1Tc2gw0SipbPxcH7RDXAyy/r88w5LG7bA==","signatures":[{"sig":"MEQCIDAv+2B/wQs2pC6AlgPimuoYONElZ9+s2tA9kcGhNubRAiAugK8ykVgiqJey7cM6NndH0ayDBrpBYNV6Wa3k3rxS1A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40879},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">= 12.0.0"},"gitHead":"9a5615987d4d7683682bf2b9f6d84235b002ef18","scripts":{"prepare":"tsc"},"_npmUser":{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"},"repository":{"url":"git+https://github.com/Akylas/kiss-orm.git","type":"git"},"_npmVersion":"10.1.0","description":"An extremely simple and explicit ORM for TypeScript","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","jasmine":"^3.6.3","pg-pool":"^3.2.2","sqlite3":"^5.0.0","ts-node":"^10.9.1","@types/pg":"^7.14.7","pg-format":"^1.0.4","sqlstring":"^2.3.2","typescript":"^4.1.3","@types/mysql":"^2.15.17","@types/jasmine":"^3.6.2","@types/pg-pool":"^2.0.2","@types/sqlite3":"^3.1.6","@types/pg-format":"^1.0.1","@types/sqlstring":"^2.3.0"},"peerDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","pg-pool":"^3.2.2","sqlite3":"^5.0.0","pg-format":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kiss-orm_2.1.5_1703859123074_0.9229879864064845","host":"s3://npm-registry-packages"}},"2.1.6":{"name":"@akylas/kiss-orm","version":"2.1.6","author":{"name":"Sébastien Caparros"},"license":"MIT","_id":"@akylas/kiss-orm@2.1.6","maintainers":[{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"}],"homepage":"https://github.com/Seb-C/kiss-orm","bugs":{"url":"https://github.com/Akylas/kiss-orm/issues"},"dist":{"shasum":"62b306c879293a7a315e067d6f69689fe06de783","tarball":"https://registry.npmjs.org/@akylas/kiss-orm/-/kiss-orm-2.1.6.tgz","fileCount":29,"integrity":"sha512-WBr7b3vxdNn4io7xMuuGIqqHZVtQvxfvOUxaiY43oM2xMk5dAhMTZoEBYA97AisoN7PCjaNIE2tzJR0BH4+XXg==","signatures":[{"sig":"MEYCIQDUgOeWYgy6ZSB+6X6KcPC6PD4noL3hzCldZ9Lzdie0BQIhAKykw+v5jcQde/di9KrwAfrjxgusEoKxF7aOqRrYiDLx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40849},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">= 12.0.0"},"gitHead":"71b887c4a9fdb25a9d578eb35422e209c98c4d89","scripts":{"prepare":"tsc"},"_npmUser":{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"},"repository":{"url":"git+https://github.com/Akylas/kiss-orm.git","type":"git"},"_npmVersion":"10.1.0","description":"An extremely simple and explicit ORM for TypeScript","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","jasmine":"^3.6.3","pg-pool":"^3.2.2","sqlite3":"^5.0.0","ts-node":"^10.9.1","@types/pg":"^7.14.7","pg-format":"^1.0.4","sqlstring":"^2.3.2","typescript":"^4.1.3","@types/mysql":"^2.15.17","@types/jasmine":"^3.6.2","@types/pg-pool":"^2.0.2","@types/sqlite3":"^3.1.6","@types/pg-format":"^1.0.1","@types/sqlstring":"^2.3.0"},"peerDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","pg-pool":"^3.2.2","sqlite3":"^5.0.0","pg-format":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kiss-orm_2.1.6_1705006005921_0.7064645576595601","host":"s3://npm-registry-packages"}},"2.1.7":{"name":"@akylas/kiss-orm","version":"2.1.7","author":{"name":"Sébastien Caparros"},"license":"MIT","_id":"@akylas/kiss-orm@2.1.7","maintainers":[{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"}],"homepage":"https://github.com/Seb-C/kiss-orm","bugs":{"url":"https://github.com/Akylas/kiss-orm/issues"},"dist":{"shasum":"b001f43ffd60dba7690e32789e41c88ece898006","tarball":"https://registry.npmjs.org/@akylas/kiss-orm/-/kiss-orm-2.1.7.tgz","fileCount":29,"integrity":"sha512-S8/CxU7Kg3h3PAioeyQimqlB+uVJUmJanv3Wp6UwK4xI7oYxQ5ax5GNgHLEP5Up3GysOwTk1V9cYwWk8hArUXg==","signatures":[{"sig":"MEYCIQD/9Kk7czvwN+NfYjvRLu5cTbNXsXwyDst766pCtAjMLwIhAMvDY5JewtVjA3W2qzbTVQMMw0zj0iAVbNffBJnbETAj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":40926},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">= 12.0.0"},"gitHead":"1ce3a612679dc039538916bd219ba1e3d7ab5e63","scripts":{"prepare":"tsc"},"_npmUser":{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"},"repository":{"url":"git+https://github.com/Akylas/kiss-orm.git","type":"git"},"_npmVersion":"10.1.0","description":"An extremely simple and explicit ORM for TypeScript","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","jasmine":"^3.6.3","pg-pool":"^3.2.2","sqlite3":"^5.0.0","ts-node":"^10.9.1","@types/pg":"^7.14.7","pg-format":"^1.0.4","sqlstring":"^2.3.2","typescript":"^4.1.3","@types/mysql":"^2.15.17","@types/jasmine":"^3.6.2","@types/pg-pool":"^2.0.2","@types/sqlite3":"^3.1.6","@types/pg-format":"^1.0.1","@types/sqlstring":"^2.3.0"},"peerDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","pg-pool":"^3.2.2","sqlite3":"^5.0.0","pg-format":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kiss-orm_2.1.7_1705485466202_0.3018772310493518","host":"s3://npm-registry-packages"}},"2.1.8":{"name":"@akylas/kiss-orm","version":"2.1.8","author":{"name":"Sébastien Caparros"},"license":"MIT","_id":"@akylas/kiss-orm@2.1.8","maintainers":[{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"}],"homepage":"https://github.com/Seb-C/kiss-orm","bugs":{"url":"https://github.com/Akylas/kiss-orm/issues"},"dist":{"shasum":"3e9c9f02636ee48addd0dc090d9a56466a361fda","tarball":"https://registry.npmjs.org/@akylas/kiss-orm/-/kiss-orm-2.1.8.tgz","fileCount":29,"integrity":"sha512-vvinYTu19cQgS9HM+gSWwg9/FbC1JyysMQgj6HtGVwG7uh52OBELKA/wqwxoqIOnkV9+EGZO1ZnE/Oaf6GimmA==","signatures":[{"sig":"MEUCIAVw9gFjJLLnJccXBueJpgb3Klw46U9AeTBZ1xNBGz3UAiEAi49RC62oHymTwaL58XyJoulF7cDKTyh0FrFAInpoQWc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41048},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">= 12.0.0"},"gitHead":"6059f455ec3d81990f62ec0d37ca78b7eaa50cdf","scripts":{"prepare":"tsc"},"_npmUser":{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"},"repository":{"url":"git+https://github.com/Akylas/kiss-orm.git","type":"git"},"_npmVersion":"10.1.0","description":"An extremely simple and explicit ORM for TypeScript","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","jasmine":"^3.6.3","pg-pool":"^3.2.2","sqlite3":"^5.0.0","ts-node":"^10.9.1","@types/pg":"^7.14.7","pg-format":"^1.0.4","sqlstring":"^2.3.2","typescript":"^4.1.3","@types/mysql":"^2.15.17","@types/jasmine":"^3.6.2","@types/pg-pool":"^2.0.2","@types/sqlite3":"^3.1.6","@types/pg-format":"^1.0.1","@types/sqlstring":"^2.3.0"},"peerDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","pg-pool":"^3.2.2","sqlite3":"^5.0.0","pg-format":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kiss-orm_2.1.8_1728993430638_0.9013500201158291","host":"s3://npm-registry-packages"}},"2.1.9":{"name":"@akylas/kiss-orm","version":"2.1.9","author":{"name":"Sébastien Caparros"},"license":"MIT","_id":"@akylas/kiss-orm@2.1.9","maintainers":[{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"}],"homepage":"https://github.com/Seb-C/kiss-orm","bugs":{"url":"https://github.com/Akylas/kiss-orm/issues"},"dist":{"shasum":"87614d8b63cdb1bdbbe0915ce00f60c2b81eed11","tarball":"https://registry.npmjs.org/@akylas/kiss-orm/-/kiss-orm-2.1.9.tgz","fileCount":29,"integrity":"sha512-s3OZtVc9/HWY/uxlN4qp2tOR5kNyglgMrEiMpJgWrfdTabclzbxO6sv7lku8OeeQgsX7ygtdrMSPl34qQkoj0w==","signatures":[{"sig":"MEQCIHFcR9mIFiPFpMZpgFgemZLsGq9XPqi2IrduN8useV1gAiAtGasTUbVAGtu33y+4CASzJ+eYJ13J+SijtFunkKqZZg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41065},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">= 12.0.0"},"gitHead":"0cf330b81933f0c2ab39701b8900f19582a4e3a1","scripts":{"prepare":"tsc"},"_npmUser":{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"},"repository":{"url":"git+https://github.com/Akylas/kiss-orm.git","type":"git"},"_npmVersion":"10.1.0","description":"An extremely simple and explicit ORM for TypeScript","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","jasmine":"^3.6.3","pg-pool":"^3.2.2","sqlite3":"^5.0.0","ts-node":"^10.9.1","@types/pg":"^7.14.7","pg-format":"^1.0.4","sqlstring":"^2.3.2","typescript":"^4.1.3","@types/mysql":"^2.15.17","@types/jasmine":"^3.6.2","@types/pg-pool":"^2.0.2","@types/sqlite3":"^3.1.6","@types/pg-format":"^1.0.1","@types/sqlstring":"^2.3.0"},"peerDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","pg-pool":"^3.2.2","sqlite3":"^5.0.0","pg-format":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kiss-orm_2.1.9_1728994395428_0.596178368774704","host":"s3://npm-registry-packages"}},"2.1.10":{"name":"@akylas/kiss-orm","version":"2.1.10","author":{"name":"Sébastien Caparros"},"license":"MIT","_id":"@akylas/kiss-orm@2.1.10","maintainers":[{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"}],"homepage":"https://github.com/Seb-C/kiss-orm","bugs":{"url":"https://github.com/Akylas/kiss-orm/issues"},"dist":{"shasum":"fd268295249a75f3608a6985cff54be5487e3c62","tarball":"https://registry.npmjs.org/@akylas/kiss-orm/-/kiss-orm-2.1.10.tgz","fileCount":29,"integrity":"sha512-mV7Tt9saUmVEzzW+jxU4nQnWpHmSQX3AhSh2H8RHsMfaeVI3jWylm8ROvY8t1UKYBLIabGiAdH1AJa/03NpIVQ==","signatures":[{"sig":"MEYCIQDvL9oS7sFcxwzUpXICsuM/exGa+Wqw8TYwRRm9W7MRiwIhAKPS+ThmS3O5uuFJ6G4O7kldXqzsDnZHoxhVuX1n9e4y","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41049},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">= 12.0.0"},"gitHead":"0ae9dd925c75dde345717e5d1d289d7d4796176b","scripts":{"prepare":"tsc"},"_npmUser":{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"},"repository":{"url":"git+https://github.com/Akylas/kiss-orm.git","type":"git"},"_npmVersion":"10.1.0","description":"An extremely simple and explicit ORM for TypeScript","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","jasmine":"^3.6.3","pg-pool":"^3.2.2","sqlite3":"^5.0.0","ts-node":"^10.9.1","@types/pg":"^7.14.7","pg-format":"^1.0.4","sqlstring":"^2.3.2","typescript":"^4.1.3","@types/mysql":"^2.15.17","@types/jasmine":"^3.6.2","@types/pg-pool":"^2.0.2","@types/sqlite3":"^3.1.6","@types/pg-format":"^1.0.1","@types/sqlstring":"^2.3.0"},"peerDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","pg-pool":"^3.2.2","sqlite3":"^5.0.0","pg-format":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kiss-orm_2.1.10_1728996976232_0.9313403885584692","host":"s3://npm-registry-packages"}},"2.1.11":{"name":"@akylas/kiss-orm","version":"2.1.11","author":{"name":"Sébastien Caparros"},"license":"MIT","_id":"@akylas/kiss-orm@2.1.11","maintainers":[{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"}],"homepage":"https://github.com/Seb-C/kiss-orm","bugs":{"url":"https://github.com/Akylas/kiss-orm/issues"},"dist":{"shasum":"dbfd623c79edf65b98a99724013d4bcf676b347b","tarball":"https://registry.npmjs.org/@akylas/kiss-orm/-/kiss-orm-2.1.11.tgz","fileCount":29,"integrity":"sha512-HQ8TvYmlXZksus59ARIA5FEAdCTesPOhQl+gdNQW5v7RREy7mwHV/MIWfrXmuwqd6gTxj3THI5c5S2w4rkZJFA==","signatures":[{"sig":"MEYCIQDNysL6+70sCerZTgRcJpDZL45OCdc3kYMeswQ/uAyHbgIhAKbTTLlEjlzSU/ZqaEXtKa1/7dnMSR3xJq5gsiQoTxwe","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41203},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">= 12.0.0"},"gitHead":"64a409320b48a039a80f3196358c960b84cca42d","scripts":{"prepare":"tsc"},"_npmUser":{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"},"repository":{"url":"git+https://github.com/Akylas/kiss-orm.git","type":"git"},"_npmVersion":"10.1.0","description":"An extremely simple and explicit ORM for TypeScript","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","jasmine":"^3.6.3","pg-pool":"^3.2.2","sqlite3":"^5.0.0","ts-node":"^10.9.1","@types/pg":"^7.14.7","pg-format":"^1.0.4","sqlstring":"^2.3.2","typescript":"^4.1.3","@types/mysql":"^2.15.17","@types/jasmine":"^3.6.2","@types/pg-pool":"^2.0.2","@types/sqlite3":"^3.1.6","@types/pg-format":"^1.0.1","@types/sqlstring":"^2.3.0"},"peerDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","pg-pool":"^3.2.2","sqlite3":"^5.0.0","pg-format":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kiss-orm_2.1.11_1729011482166_0.8920838039249905","host":"s3://npm-registry-packages"}},"2.1.12":{"name":"@akylas/kiss-orm","version":"2.1.12","author":{"name":"Sébastien Caparros"},"license":"MIT","_id":"@akylas/kiss-orm@2.1.12","maintainers":[{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"}],"homepage":"https://github.com/Akylas/kiss-orm","bugs":{"url":"https://github.com/Akylas/kiss-orm/issues"},"dist":{"shasum":"0d928906875e92527c7d3d88aa181897b8d6f380","tarball":"https://registry.npmjs.org/@akylas/kiss-orm/-/kiss-orm-2.1.12.tgz","fileCount":29,"integrity":"sha512-YMZX7sdGS5Suo531ELmmuMnkVz47sgFxavnuf+Cc6Yhv4IR7W0bMzH46RRXZ9KAFbPDtjMfNfc9y5uTwhYT/0w==","signatures":[{"sig":"MEUCIA6ZFoIQ9WVI3YQ+l+/YfzgglmdrZNbECj5k4RwCYCSyAiEAsKENTA2nDmLuMm/Ckseh1wfXk52o+1Bb1KrA9BD5MKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41749},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">= 12.0.0"},"gitHead":"64a409320b48a039a80f3196358c960b84cca42d","scripts":{"prepare":"tsc"},"_npmUser":{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"},"repository":{"url":"git+https://github.com/Akylas/kiss-orm.git","type":"git"},"_npmVersion":"11.5.1","description":"An extremely simple and explicit ORM for TypeScript","directories":{},"_nodeVersion":"24.7.0","_hasShrinkwrap":false,"devDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","jasmine":"^3.6.3","pg-pool":"^3.2.2","sqlite3":"^5.0.0","@types/pg":"^7.14.7","pg-format":"^1.0.4","sqlstring":"^2.3.2","typescript":"^4.1.3","@types/node":"^24.10.1","@types/mysql":"^2.15.17","@types/jasmine":"^3.6.2","@types/pg-pool":"^2.0.2","@types/sqlite3":"^3.1.6","@types/pg-format":"^1.0.1","@types/sqlstring":"^2.3.0"},"peerDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","pg-pool":"^3.2.2","sqlite3":"^5.0.0","pg-format":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kiss-orm_2.1.12_1764866889244_0.5001562702596716","host":"s3://npm-registry-packages-npm-production"}},"2.1.13":{"name":"@akylas/kiss-orm","version":"2.1.13","author":{"name":"Sébastien Caparros"},"license":"MIT","_id":"@akylas/kiss-orm@2.1.13","maintainers":[{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"}],"homepage":"https://github.com/Akylas/kiss-orm","bugs":{"url":"https://github.com/Akylas/kiss-orm/issues"},"dist":{"shasum":"309143f46509305e0cace98f1195f8d53b67aead","tarball":"https://registry.npmjs.org/@akylas/kiss-orm/-/kiss-orm-2.1.13.tgz","fileCount":29,"integrity":"sha512-JH6y86G0cD8JViCbVWN/oyDMVOFH0Ysq8A9w9UXofzwEd4JeG+CUXImXID6ui9u70KEM5fALw6SuvN/+BA4sDQ==","signatures":[{"sig":"MEQCIDjcLBlfi0LYXYyDT2VaSirgBoaI6xo8yWGchqnjefg7AiBQ75cAxBAIfCg4HOVBUjoDbIlMtmyoAX+2AHg8I0ptTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41852},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">= 12.0.0"},"gitHead":"c01632c25596017467df166354dcf6d065846e48","scripts":{"prepare":"tsc"},"_npmUser":{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"},"repository":{"url":"git+https://github.com/Akylas/kiss-orm.git","type":"git"},"_npmVersion":"11.6.2","description":"An extremely simple and explicit ORM for TypeScript","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","jasmine":"^3.6.3","pg-pool":"^3.2.2","sqlite3":"^5.0.0","@types/pg":"^7.14.7","pg-format":"^1.0.4","sqlstring":"^2.3.2","typescript":"^4.1.3","@types/node":"^24.10.1","@types/mysql":"^2.15.17","@types/jasmine":"^3.6.2","@types/pg-pool":"^2.0.2","@types/sqlite3":"^3.1.6","@types/pg-format":"^1.0.1","@types/sqlstring":"^2.3.0"},"peerDependencies":{"pg":"^8.5.1","mysql":"^2.18.1","pg-pool":"^3.2.2","sqlite3":"^5.0.0","pg-format":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kiss-orm_2.1.13_1765450836076_0.06714301099834996","host":"s3://npm-registry-packages-npm-production"}},"2.1.14":{"name":"@akylas/kiss-orm","description":"An extremely simple and explicit ORM for TypeScript","repository":{"type":"git","url":"git+https://github.com/Akylas/kiss-orm.git"},"homepage":"https://github.com/Akylas/kiss-orm","license":"MIT","author":{"name":"Sébastien Caparros"},"version":"2.1.14","engines":{"node":">= 12.0.0"},"peerDependencies":{"mysql":"^2.18.1","pg":"^8.5.1","pg-format":"^1.0.4","pg-pool":"^3.2.2","sqlite3":"^5.0.0"},"devDependencies":{"@types/jasmine":"^3.6.2","@types/mysql":"^2.15.17","@types/node":"^24.10.1","@types/pg":"^7.14.7","@types/pg-format":"^1.0.1","@types/pg-pool":"^2.0.2","@types/sqlite3":"^3.1.6","@types/sqlstring":"^2.3.0","jasmine":"^3.6.3","mysql":"^2.18.1","pg":"^8.5.1","pg-format":"^1.0.4","pg-pool":"^3.2.2","sqlite3":"^5.0.0","sqlstring":"^2.3.2","typescript":"^4.1.3"},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"prepare":"tsc"},"gitHead":"d3d1772804f8e699be112b0125fe7e2565904cb5","_id":"@akylas/kiss-orm@2.1.14","bugs":{"url":"https://github.com/Akylas/kiss-orm/issues"},"_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-nwVu9gxUFlieUNga7wBtqAqr/XwP1HDp54T7601tVjnt5962cl6k9IyrZwR+a+nh3ujo8AibVVtQVcGrO9LVMA==","shasum":"51abfd7725a5f4a7fde51dfb6809e99e3bc38ae4","tarball":"https://registry.npmjs.org/@akylas/kiss-orm/-/kiss-orm-2.1.14.tgz","fileCount":29,"unpackedSize":43283,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCidrzsF5E4NHsvqarU+Kn1qHrbZTvFfwA/IKGXXarL9QIgF9L41DLEpEh7gIeX2iXf3XRD5zp5EijSfv2NSONnUWI="}]},"_npmUser":{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"},"directories":{},"maintainers":[{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/kiss-orm_2.1.14_1765452224988_0.013582267327039599"},"_hasShrinkwrap":false}},"time":{"created":"2023-07-23T12:39:06.071Z","modified":"2025-12-11T11:23:45.344Z","2.1.0":"2023-07-23T12:39:06.431Z","2.1.1":"2023-10-15T09:02:49.703Z","2.1.2":"2023-10-15T14:23:21.215Z","2.1.3":"2023-11-06T09:23:31.648Z","2.1.4":"2023-11-25T15:51:30.318Z","2.1.5":"2023-12-29T14:12:03.279Z","2.1.6":"2024-01-11T20:46:46.091Z","2.1.7":"2024-01-17T09:57:46.365Z","2.1.8":"2024-10-15T11:57:10.831Z","2.1.9":"2024-10-15T12:13:15.638Z","2.1.10":"2024-10-15T12:56:16.416Z","2.1.11":"2024-10-15T16:58:02.410Z","2.1.12":"2025-12-04T16:48:09.383Z","2.1.13":"2025-12-11T11:00:36.216Z","2.1.14":"2025-12-11T11:23:45.144Z"},"bugs":{"url":"https://github.com/Akylas/kiss-orm/issues"},"author":{"name":"Sébastien Caparros"},"license":"MIT","homepage":"https://github.com/Akylas/kiss-orm","repository":{"type":"git","url":"git+https://github.com/Akylas/kiss-orm.git"},"description":"An extremely simple and explicit ORM for TypeScript","maintainers":[{"name":"farfromrefuge","email":"martin.guillon@akylas.fr"}],"readme":"# Kiss-ORM\n\n* [Introduction](#introduction)\n* [Compatibility](#compatibility)\n* [Basics](#basics)\n* [Getting started](#getting-started)\n* [Events](#events)\n* [Cascade](#cascade)\n* [Scoping](#scoping)\n* [Soft delete](#soft-delete)\n* [Migrations](#migrations)\n* [Relationships](#relationships)\n    - [one-to-one](#one-to-one)\n    - [one-to-many](#one-to-many)\n    - [many-to-many](#many-to-many)\n* [Eager loading for relationships](#eager-loading-for-relationships)\n* [Autoloading relationships](#autoloading-relationships)\n* [Advanced typings](#advanced-typings)\n* [Transactions](#transactions)\n\n## Introduction\n\nKiss-ORM is a new, very opinionated ORM for TypeScript. Here is a description of it's design philosophy:\n- No query builder (you can use the full power and expressiveness of SQL)\n- Security: Kiss-ORM allows you to write and concatenate SQL queries without worrying about SQL injections\n- Fully tested\n- Sane dependency-injection (and dependencies!)\n- Data-mapper pattern rather than active-record\n- Immutability of the objects\n- No magic. Everything is explicit. No database operation is done unless explicitly requested.\n- Proper separation of concerns for your repositories\n- Simplicity: the architecture is ridiculously simple. If you need complex operations, you have the freedom to write it without worries.\n- No mappings: Kiss-ORM always assumes that the column and JS properties have the same name.\n\n## Compatibility\n\nKiss-ORM is compatible with the following databases:\n- PostgreSQL, via the `pg`, `pg-format` and `pg-pool` packages that you need to install\n- MySQL, via the `mysql` package that you need to install (experimental support)\n- SQLite, via the `sqlite` package that you need to install (experimental support)\n\n## Basics\n\nKiss-ORM uses the template-strings tagging feature to secure all the queries.\n\nHere is the basic query syntax:\n\n```typescript\ndatabase.query(sql`\n    SELECT *\n    FROM \"Users\"\n    WHERE \"email\" = ${unsafeInputs.email}\n    AND \"password\" = CRYPT(${unsafeInputs.password})\n`);\n```\n\nDid you notice the `sql` tag? This internally transforms the query safely into something like this:\n\n```\n{\n    query: 'SELECT * FROM \"Users\" WHERE \"email\" = $1 AND \"password\" = CRYPT($2)',\n    params: ['bob@example.com', '123456'],\n}\n```\n\nFor security reasons, the query method does not accept raw strings, so you cannot forget to use the `sql` tag.\n\nYou can also safely include and concatenate queries:\n```typescript\nconst conditions = sql`\"role\" = ${'admin'} AND \"blocked\" = ${false}`;\ndatabase.query(sql`SELECT * FROM \"Users\" WHERE ${conditions};`);\n```\n\nResult:\n```\n{\n    query: 'SELECT * FROM \"Users\" WHERE \"role\" = $1 AND \"blocked\" = $2',\n    params: ['admin', false],\n}\n```\n\n## Getting started\n\nInstallation:\n```bash\n    npm install kiss-orm --save\n```\n\n```typescript\nimport {\n    sql,\n    PgSqlDatabase,\n    CrudRepository,\n} from 'kiss-orm';\n\nclass UserModel {\n    public readonly id!: number;\n    public readonly email!: string;\n    public readonly isBlocked!: boolean;\n\n    // Nullable fields are converted to `null`, not `undefined`.\n    public readonly emailVerificationCode!: string|null;\n}\n\nclass UserRepository extends CrudRepository<UserModel> {\n    constructor(database: PgSqlDatabase) {\n        super({\n            database,\n            table: 'Users',\n            primaryKey: 'id',\n            model: UserModel,\n        });\n    }\n}\n\n// [...]\n\nconst db = new PgSqlDatabase({\n    // https://node-postgres.com/api/client#new-clientconfig-object\n    // https://node-postgres.com/api/pool#new-poolconfig-object\n});\n\n// Note: You can alternatively inject a Pool object to the `PgSqlDatabase` constructor if you need.\n\nconst repository = new UserRepository(db);\n\nconst user = await repository.get(2);\nconst blockedUsers: User[] = await repository.search(\n    sql`\"isBlocked\" OR \"email\" LIKE ${'%@' + bannedDomain}`,\n    sql`\"email\" ASC`,\n);\n\nconst updatedUser = await repository.update(user, {\n    isBlocked: false,\n});\n\nconst newUser = await repository.create({\n    email: 'alice@example.com',\n    isBlocked: false,\n    emailVerificationCode: null,\n});\n\nawait repository.delete(user);\n\nawait db.disconnect();\n```\n\n## Events\n\nThere is no specific feature for the events, because the repositories allows you to do it in an explicit way:\n\n```typescript\nclass UsersRepository extends CrudRepository<UserModel> {\n    public async create(attributes: any): Promise<UserModel> {\n        doSomeThingBeforeInsert();\n        const user = await super.create(attributes);\n        doSomeThingAfterInsert();\n        return user;\n    }\n\n    public async update(user: UserModel, attributes: any): Promise<UserModel> {\n        doSomeThingBeforeUpdate();\n        const newUser = await super.update(user, attributes);\n        doSomeThingAfterUpdate();\n        return newUser;\n    }\n\n    public async delete(user: UserModel) {\n        doSomeThingBeforeDelete();\n        await super.delete(user);\n        doSomeThingAfterDelete();\n    }\n}\n```\n\n## Cascade\n\nCascade operations are not supported by Kiss-ORM, but your database engine does it pretty well already :) .\n\nIf you have more complex or specific needs, you will have to specifically implement it with the proper transactions.\n\n## Scoping\n\nScoping allows you to apply a global filter to all SELECT queries.\n\n```typescript\nclass AdminUsersRepository extends CrudRepository<UserModel> {\n    constructor(database: PgSqlDatabase) {\n        super({\n            // [...]\n            scope: sql`\"role\" = 'admin'`,\n        });\n    }\n}\n```\n\n## Soft delete\n\nSoft-delete can be implemented with the scoping feature\n\n```typescript\nclass UsersRepository extends CrudRepository<UserModel> {\n    constructor(database: PgSqlDatabase) {\n        super({\n            // [...]\n            scope: sql`NOT(\"deletedFlag\")`,\n        });\n    }\n}\n```\n\nWhen you do this, the `delete` method will still trigger a database `DELETE` operation.\nIf you want to change this behaviour, you can override it:\n\n```typescript\nclass UsersRepository extends CrudRepository<UserModel> {\n    public async delete(user: UserModel) {\n        await this.update(user, { deletedFlag: true });\n    }\n}\n```\n\n## Migrations\n\nKiss-ORM comes with a simple migration system.\nYou can execute this whenever you want (when your server starts for example).\nSince this is a Javascript object, you can choose to organize your migrations\nhowever you want (for example import it for a big unique file, or split it).\n\n```typescript\nawait db.migrate({\n    'createUserTable': sql`\n        CREATE TABLE \"User\" (\n            \"id\" UUID PRIMARY KEY NOT NULL,\n            \"email\" TEXT NOT NULL\n        );\n    `,\n    'addUserEmailIndex': sql`\n        CREATE UNIQUE INDEX \"User_email_index\" ON \"User\"(\"email\");\n    `,\n});\n```\n\n## Relationships\n\nRelationships are defined in the repositories and must be explicitly loaded\n\n### one-to-one\n\n```typescript\nclass RoleModel {\n    // [...]\n}\n\nclass UserModel {\n    // [...]\n    public readonly roleId!: number;\n\n    public role?: RoleModel;\n}\n\nclass RoleRepository extends CrudRepository<RoleModel> {\n    // [...]\n}\n\nclass UserRepository extends CrudRepository<UserModel> {\n    // [...]\n    async loadRoleRelationship(user: UserModel): Promise<UserModel> {\n        return this.createModelFromAttributes({\n            ...user,\n            role: await (new RoleRepository(this.database)).get(user.roleId),\n        });\n    }\n}\n\nconst repository = new UserRepository(database);\nlet user = await repository.get(1);\n// Currently. user.role is `undefined`. You explicitly need to load it\nuser = await repository.loadRoleRelationship(user);\n// `user.role` is now populated with a `RoleModel`.\n```\n\n### one-to-many\n\n```typescript\nclass RoleModel {\n    // [...]\n    public users?: ReadonlyArray<UserModel>;\n}\n\nclass RoleRepository extends CrudRepository<RoleModel> {\n    // [...]\n    async loadUsersRelationship(role: RoleModel): Promise<RoleModel> {\n        return this.createModelFromAttributes({\n            ...role,\n            users: await (new UserRepository(this.database)).search(sql`\"roleId\" = ${role.id}`),\n        });\n    }\n}\n\nconst repository = new RoleRepository(database);\nlet role = await repository.get(1);\nrole = await repository.loadUsersRelationship(role);\n// role.users is now populated with an array of `UserModel`\n```\n\n### many-to-many\n\n```typescript\nclass ArticleModel {\n    // [...]\n    public readonly authors?: ReadonlyArray<UserModel>;\n}\n\nclass UserModel {\n    // [...]\n    public readonly articles?: ReadonlyArray<ArticleModel>;\n}\n\nclass ArticleRepository extends CrudRepository<ArticleModel> {\n    // [...]\n    async loadAuthorsRelationship(article: ArticleModel): Promise<ArticleModel> {\n        return this.createModelFromAttributes({\n            ...article,\n            authors: await (new UserRepository(this.database)).search(sql`\n                \"id\" IN (\n                    SELECT \"userId\"\n                    FROM \"ArticleAuthors\"\n                    WHERE \"articleId\" = ${article.id}\n                )\n            `),\n        });\n    }\n}\n\nclass UserRepository extends CrudRepository<UserModel> {\n    // [...]\n    async loadArticlesRelationship(user: UserModel): Promise<UserModel> {\n        return this.createModelFromAttributes({\n            ...user,\n            articles: await (new AuthorRepository(this.database)).search(sql`\n                \"id\" IN (\n                    SELECT \"articleId\"\n                    FROM \"ArticleAuthors\"\n                    WHERE \"userId\" = ${user.id}\n                )\n            `),\n        });\n    }\n}\n\nconst repository = new UserRepository(database);\nlet user = await repository.get(1);\nuser = await repository.loadArticlesRelationship(user);\n// `user.articles` is now populated with an array of `ArticleModel`.\n\nconst repository = new ArticleRepository(database);\nlet article = await repository.get(1);\narticle = await repository.loadAuthorsRelationship(article);\n// `user.authors` is now populated with an array of `UserModel`.\n```\n\n## Eager loading for relationships\n\nKiss-ORM only supports lazy-loading (on-demand).\nIf you need something more complex, you should implement the queries specifically.\n\n## Autoloading relationships\n\n```typescript\nclass UserRepository extends CrudRepository<UserModel> {\n    // [...]\n\n    // This function is called everytime an object is created by Kiss-ORM\n    // I don't recommend to do this because it will result in a lot of unnecessary queries...\n    protected async createModelFromAttributes(attributes: any): Promise<UserModel> {\n        const user = super.createModelFromAttributes(attributes);\n        await this.loadRoleRelationship(user);\n        await this.loadArticlesRelationship(user);\n        return user;\n    }\n}\n```\n\n## Advanced typings\n\nBy default, the type of the primary key (for the `get` method) and the parameters\nof the `create` and `update` methods is `any`, but you can specify it.\n\nWhen you are using a `serial` / `auto-increment` id, you should not specify the id in the properties list.\n\n```typescript\nclass UserRepository extends CrudRepository<\n    UserModel, // Object returned by the methods\n    { email: string, isBlocked: boolean },\n    number, // Type of the primary key (id)\n> {\n    // [...]\n}\n```\n\nHandling uuids or automatically filled columns is a bit more tricky, but possible:\n\n```typescript\ntype UserParams = {\n    uuid: SqlQuery,\n    email: string,\n    // [...]\n    createdAt: Date,\n};\n\ntype AllowedUserParams = Omit<UserParams, 'id' | 'createdAt'>;\n\nexport default class User extends CrudRepository<UserModel, UserParams, string> {\n    // [...]\n\n    async create (attributes: AllowedUserParams): Promise<UserModel> {\n        return super.create({\n            ...attributes,\n            uuid: sql`gen_random_uuid()`,\n            createdAt: new Date(),\n        });\n    }\n}\n```\n\n## Transactions\n\nThe `sequence` method can be used to run transactions. It ensures that all the queries\nare done on the same connection and that the connection is dedicated\n(no other async process can execute a query on this connection during the sequence).\n\n```typescript\nawait database.sequence(async sequenceDb => {\n    await sequenceDb.query(sql`BEGIN;`);\n    // [...]\n    await sequenceDb.query(sql`COMMIT;`);\n});\n```\n\nNote: On SQLite, the `sequence` function does not give the same guarantees. Since SQLite is local and runs with a single process without a pool of connections, this function is just a wrapper for `serialize`.\n","readmeFilename":"README.md"}