{"_id":"@c10k/tx-manager","_rev":"1-6c80fd37cce7b648428a54a6704e1213","name":"@c10k/tx-manager","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"@c10k/tx-manager","type":"module","version":"0.0.1","description":"NodeJS MySQL TxManagerFactory and MyBatisMapperFactory","main":"src/main.js","directories":{"lib":"src","test":"tests"},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules jest"},"repository":{"type":"git","url":"git+https://github.com/qyvlik/tx-manager.git"},"keywords":["No","NodeJS","MySQL","TxManager","MyBatisMapper","Factory"],"author":{"name":"qyvlik@qq.com"},"license":"MIT","bugs":{"url":"https://github.com/qyvlik/tx-manager/issues"},"homepage":"https://github.com/qyvlik/tx-manager#readme","devDependencies":{"jest":"^29.1.2","mybatis-mapper":"^0.6.8","mysql2":"^3.0.1","uuid":"^9.0.0"},"jest":{"testEnvironment":"node","testTimeout":60000},"gitHead":"28d0cb0fcf94aa983ebcb08a0ac9310181bfa9bf","_id":"@c10k/tx-manager@0.0.1","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-vbgUo8J9lwPAooSaoCIXJiuTa1w6rUvatLYoMYEja4Ouqd/65r1bQ5vX+fkxoRuL0VEkn8BTNH9TqSTzNhM/EQ==","shasum":"c058a17d39aefc3956c6d928ac950f114254c912","tarball":"https://registry.npmjs.org/@c10k/tx-manager/-/tx-manager-0.0.1.tgz","fileCount":10,"unpackedSize":17044,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDBODReFGX079mmu/UhrBrnBChvCsshS1x6kuuT8QiyVAiAXXccBcoQkeuzlVLD6B7GfgeRGI3BF9/dimlu4/bE8Rg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJZALACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqo9g//dm1IVlI/UrIzR2LCE2eDeJrMtEJhVt5JB/TlCvJRIxXqghBw\r\nqhGGB1uda5uU8djGAlfUIKj+/UUnrC/eOPZ8tQaXTJ7bemFhre2Jcl/Sdow4\r\nKC+MnIphI8HZ23lkGmeeM4l4X1yTe5vSr3BGK2PL1yJvEUhRTxCQDxXR2GFm\r\nqOVAbxIFYUkyDrJ6+BLWFWOM3nAFGhd7CWhlYyZu/lsgdJqkF7McG7sHewr7\r\nihbK2uIh00sMMFFF4gdAaHXImoW0FAxLnRxuDqn13uqkrXxeBGlIpGw4fd53\r\nnLXV3uW+5OBll1vGT3Q2vuugR07OxgQhszE2XfcIBj7t2Sr3Aw7898e7bKq0\r\nADI6T4+z24Byn2Gr33m36i5W/ciofHNE1ZBerghGQxOuLconkqjCwNVrJSR2\r\nagEynWQYo3RQ6Bb3GVfXhmYUU1NLZyBIIg1+XgN9ukD2CgjBPCEWzqCEE/Nt\r\ns0EELv2RUReEI+NtXQOxTInIpgDGTwfh3+iwDLZsaqz/hzqI8kHsjtOvGgaP\r\nVgmdyAjoEgzvr/5jtQl8tOKD9HrG3iy6bnD4GvLRNKB0SyNS6CLO5u9kKAy8\r\nxnlX9dqGOyWfa/L2r7g4SSjRBKJKPC56qy+0zwUoT0Y0YzR6fCSQXk6sX5hA\r\nFNn9vaw72g2tMmFOqukgXvBzkyx+JN++qQE=\r\n=7RJ4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"qyvlik","email":"qyvlik@qq.com"},"maintainers":[{"name":"qyvlik","email":"qyvlik@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tx-manager_0.0.1_1680183307454_0.5896838612783808"},"_hasShrinkwrap":false},"0.0.2":{"name":"@c10k/tx-manager","type":"module","version":"0.0.2","description":"NodeJS MySQL TxManager and MapperFactory","main":"src/main.js","directories":{"lib":"src","test":"tests"},"scripts":{"test":"NODE_OPTIONS=--experimental-vm-modules jest"},"repository":{"type":"git","url":"git+https://github.com/qyvlik/tx-manager.git"},"keywords":["No","NodeJS","MySQL","TxManager","MyBatisMapper","Factory"],"author":{"name":"qyvlik@qq.com"},"license":"MIT","bugs":{"url":"https://github.com/qyvlik/tx-manager/issues"},"homepage":"https://github.com/qyvlik/tx-manager#readme","devDependencies":{"jest":"^29.1.2","mybatis-mapper":"^0.6.8","mysql2":"^3.0.1","uuid":"^9.0.0"},"jest":{"testEnvironment":"node","testTimeout":60000},"gitHead":"75f696be108c11760490fe83e6d03083535767d5","_id":"@c10k/tx-manager@0.0.2","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-FrX++I4s3hQM8/H3CiwRhK+b7OmgYnMXCCOR+qa0l26xbxNdEMglUZIacQgLr0b+qZmUUA1B9wvS+lQPw0eEWw==","shasum":"1ca3d663d9b22dde5680fab8c1e84775cf1fd5c6","tarball":"https://registry.npmjs.org/@c10k/tx-manager/-/tx-manager-0.0.2.tgz","fileCount":12,"unpackedSize":22328,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG3MABeh/Bj/Af1iEB2++gGHY9Z5etVxwfdvOsu7GoUmAiEA1ksI1mxZ0nI28b543qDbCESjhIOyK3KgLty7n79TEes="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJlhwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpApg/+MwX2XoJy4riYKY69J2MFPV4O8zZIG8+o3gJ88hr51JeL4N+A\r\nReDLeQDdw6crSZALCNVsmUD2Rom7N3GcEfI6xCKdwUI04Bmf5AVWaP/HPUfe\r\nzzV1z2jKOX+wiNCriy8i4aExzoV9GHBImQSr9HH1U5cuB30j1u27kzvWYRQ6\r\nBntHWEh8lJGQc78g7mc/mTUVK00SWnMuT48joP/T6aP2LSm/Q4mDFvKBcQAc\r\nSIFuNjf2sGoT8c5W8vFtn60XL3+LJ94+C2ff7s2nGiR7cUD5q+vRZ/XvgyCA\r\n7UhyiCx+C9Rj1UPVex+4KyOGXTVVmsWceWiCvLa/nUDgq5CBsfYkRAio13VB\r\nZXNq+Gmtb5eaRaTITD18Tysom+WAvnY8ac4PAhwcqn6kaQu0QDnJFbclnDl2\r\nej7YpzpH8XSRBdgWTlzA6Q1i4bkCJXqUstI8yuQcm0wmfyd+5WxKuNbT9sD7\r\nYFICLjk2MWTtKi5SAIUt/ljWtZewvQXP49rJVj8xnno/ro9fs1GuN3kpjx3O\r\nUp9iISePvp5EPJch/oX34x1eCh9mMlQ14a9u09H4aj5OFwUx7P69vDI15r26\r\nhjWBzS2EkUtuF0RLrE7HMwaLlID/QLqPoj8JPzj+YheYemlvkCYKt9sB+zjF\r\nYjPjdS1vmhyCqroq3ytlZdabQe9zsCS/ce8=\r\n=7Fhm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"qyvlik","email":"qyvlik@qq.com"},"maintainers":[{"name":"qyvlik","email":"qyvlik@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/tx-manager_0.0.2_1680234608105_0.5360893585546402"},"_hasShrinkwrap":false}},"time":{"created":"2023-03-30T13:35:07.327Z","0.0.1":"2023-03-30T13:35:07.649Z","modified":"2023-03-31T03:50:08.418Z","0.0.2":"2023-03-31T03:50:08.261Z"},"maintainers":[{"name":"qyvlik","email":"qyvlik@qq.com"}],"description":"NodeJS MySQL TxManager and MapperFactory","homepage":"https://github.com/qyvlik/tx-manager#readme","keywords":["No","NodeJS","MySQL","TxManager","MyBatisMapper","Factory"],"repository":{"type":"git","url":"git+https://github.com/qyvlik/tx-manager.git"},"author":{"name":"qyvlik@qq.com"},"bugs":{"url":"https://github.com/qyvlik/tx-manager/issues"},"license":"MIT","readme":"# tx-manager\n\nProvides CRUD development experience similar to Spring-Boot + MyBatis using [mysql2](https://github.com/sidorares/node-mysql2) and [mybatis-mapper](https://github.com/OldBlackJoe/mybatis-mapper).\n\n```bash\nnpm install @c10k/tx-manager\n```\n\n## Declaration and Usage of Mapper.xml\n\nRefer to the following files:\n\n1. [tests/resources/mapper/TestMapper.xml](./tests/resources/mapper/TestMapper.xml)\n2. [tests/src/services/TestService.js](./tests/src/services/TestService.js)\n    - Contains the concepts of Dao, Mapper, and Service.\n3. [tests/src/config/database.js](./tests/src/config/database.js)\n   - Similar to Bean objects in Spring-Boot\n\n## Using MySQL Transactions\n\nThe following code demonstrates how to start a transaction, and use the same transaction in nested callbacks, satisfying most development scenarios.\n\n```js\nconst uuid1 = uuidv4();\nconst uuid2 = uuidv4();\nawait txManager.runTransaction(async (_, connectionId1) => {\n    const id1 = await testService.save(uuid1);\n\n    await txManager.runTransaction(async (_, connectionId2) => {\n        const id2 = await testService.save(uuid2);\n\n        expect(connectionId1).toBe(connectionId2);\n\n        const {id: connectionId3} = txManager.getCurrentContext();\n\n        expect(connectionId1).toBe(connectionId3);\n\n        throw new Error(`rollback by error`);\n    });\n});\n```","readmeFilename":"README.md"}