{"_id":"pg-transactional-outbox","_rev":"63-ef3e57f84e5ad0e7f96b9b76491f72ec","name":"pg-transactional-outbox","dist-tags":{"beta":"0.5.1","latest":"0.6.5"},"versions":{"0.1.0":{"name":"pg-transactional-outbox","version":"0.1.0","author":{"name":"Frank Zehelein"},"license":"MIT","_id":"pg-transactional-outbox@0.1.0","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"dist":{"shasum":"24af34d339ebad2bf53394fd8c887409b7ff28e8","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.1.0.tgz","fileCount":80,"integrity":"sha512-sAJZ+dOcAUJrhDvFCIj5hmIopCAb4/dXORTLmb7vhzaFfzu2BiKYksfW2cm7bv7sqnmxJCgTRT/SRU6+14DRcw==","signatures":[{"sig":"MEYCIQDYy9yVv/stmaI1C3eI8KbXZk0qymysCVz6uyyqlGupUwIhAKv1SAL4rMZftSd4tVrdAEaPvn9F8Hg+OPU6fNCj413i","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":289325,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj1WEOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoe3Q//bTUk4tP42SppYByE9eEy6rTZ2O0b4TiUgbVwEafJ7PCLKmXx\r\nrcW11xFfQ+b8UvONrxxHAxV/IVgbuPW1HyvZZ+P/sLLJrSKvSUYtkIw3FgiQ\r\nZawhbQAfJXRuw/oUwfkqyC6SbbLwepMs2heBmG0gPBoC7P6Is1advX8bqn6i\r\nh+2pUcpOINH2Xi+lm49v4ICD9kbsF1+A/D4n8FeORxkODVhIJsDRD5TY7r/S\r\nYySB9Evcn9lO6bac3sZZV+jnXEsRL6jS5XYBxurMeXVc1b4ZhP7yi2TuEsmT\r\ntNCUtES59p5LJxEqlQxIO4Vl8eKx8aSJdpfCbHyzYgCKh7xk0gKUlEBUtfnU\r\n+Pmyj4WwBdOZISIbCDrRbwbPFtd5bqq5OC9JFsJ8ac1HzUrwOosvWWvkPxfW\r\nm8JW3XY1tHEMjeKpFBXm1MIT0l3ZBKC6Z1zkogU2cTOM8uYOWBtLVyQjjjW/\r\nmLr5R7QK1Rse+zMo6K9oyluo9QcdUTROG/gGRQfLj+UQXgIdAuU03wY1r8N2\r\nRLyGwv9pSuN7bEWaanUwNkjdxdOdruJgz7uiafIRcDfJ2zBaoVzfntXRakaU\r\nfIIWTIUt6egv1xeDN4mBPsibkh3ij+B+WQTwYrS40d2tSpggWb9HhQP0ttpY\r\nxA6jD7eklLISQ2WeLW43SE0UHbDZV6AIfNc=\r\n=HU07\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"dist/index.d.ts","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"_npmVersion":"6.14.15","description":"A PostgreSQL based transactional outbox and inbox pattern implementation.","directories":{},"_nodeVersion":"14.18.2","dependencies":{"pg":"^8.8.0","pino":"^8.8.0","uuid":"^9.0.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.3.1","rimraf":"^3.0.2","ts-node":"^10.9.1","prettier":"^2.8.1","@types/pg":"^8.6.6","tsc-watch":"^6.0.0","typescript":"*","@types/node":"^18.11.18","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.1.0_1674928397820_0.7832847958144065","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"pg-transactional-outbox","version":"0.1.1","author":{"name":"Frank Zehelein"},"license":"MIT","_id":"pg-transactional-outbox@0.1.1","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"dist":{"shasum":"dd7ee16abfca524f6521b3ca8000920fd3436f94","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.1.1.tgz","fileCount":80,"integrity":"sha512-ETAx4CrLRMcfivj1+l6PbrS57rzoj70greyRQThNiFgJylatB8bw83kpd3HXm/qHcIwUyKQ9PoFa2dleCkNooA==","signatures":[{"sig":"MEQCIBIkPZcqxNePA1TMzhjIZ1VNO9wdmgaYQyTxipPDq1XGAiAVgs4oTiYyJxcHFvhYVtYyhvoIAhwFSDdIF30MroqDzw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":309244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj1YVLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrxUA//WDHdRPpbd0xTBMpmfv1ZyNQfTls4x0jgBKYDWvl9af+vg40I\r\n6uKpYf6QUw2sSDXd/ZcClmMHEpjth1kT2jj1BujNzRO3aChCX+Ewujt0eWti\r\nglawi5TWNJVGOQX4dSc1MevQuNkoBBHRQVvwG8awrNLDRUd2f3NTD9fuFwY0\r\nn579hIUIHSoczsCx9+tA8TtSc26Fq1zPBgch1rcpObMNcaSPpYWmyIP9LvA5\r\n2LMh9op8cC4d2wciMtmKbO0/ntUUxqWiWmIBpVxMtqGAK49Q+N/AAalWKI1p\r\ndjG16glWWNqGgO3ImqiNIKJnB2BlZRkjctQSgBJ6bPJJYVpmwivLjwYA4Q9U\r\nwfd8edubsFxIeAWXPznH9X2hFcKT15A/L58tjr2g+V+xWRU4B7D8x55bK+f0\r\nZids+HDFLeiJ+1v7BWUwn3zT1PZt8+vlzOvR7TfgBZ064uLEi2ediL3RwbDq\r\nbmYVBO2MV3pctDH4SPFHOKHU3b5Pp4hDbe7B+JiAbAg5TEkUz9oEP2E1heO5\r\n5zcVp2Y9tH3RK3D1rLjntArdO9GS1VW421WXBSWzjAAzoEZaEsePQNEVrrrQ\r\n51FoDjzy5G0a0pzKkE19tSCsHKQtZz8Cw/2067GEUV6Qq6oHDHWXRwBYZyXR\r\nYvXt364CEcfOGolci1Y/xr/VY/w00RwOy70=\r\n=v3RJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"dist/index.d.ts","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"_npmVersion":"6.14.15","description":"A PostgreSQL based transactional outbox and inbox pattern implementation.","directories":{},"_nodeVersion":"14.18.2","dependencies":{"pg":"^8.8.0","pino":"^8.8.0","uuid":"^9.0.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.3.1","rimraf":"^3.0.2","ts-node":"^10.9.1","prettier":"^2.8.1","@types/pg":"^8.6.6","tsc-watch":"^6.0.0","typescript":"*","@types/node":"^18.11.18","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.1.1_1674937675409_0.45433668804047755","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"pg-transactional-outbox","version":"0.1.2","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.1.2","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"25d58e0a7d2f6d7e932e056931154a6fa15b3a1a","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.1.2.tgz","fileCount":80,"integrity":"sha512-6Av6fpli3Fr0MQSmb2LZDBJ8izs+i+3Ac+V3DtUMvv+PUp8MPg8C/nrh7S0VWXygJpnIzxb4wGegaTekTjLAwQ==","signatures":[{"sig":"MEUCIQD6y7ZC2PkKr5Bxv+/CfRC8IQyxH4pHMf8Jp9g60rUijAIgNTyBc6DF/JuicfBofEzk1c78UqWJ9rWnhWbEaAg3nEM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":310284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj1Y1aACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpdvg//WjBeIW8e4dyrOjLA28P1qd0IRWm51kuKHslesA+v64bs09GE\r\nQW/Gu6jUHx0Fbp7Ymb689mLy0Nh2hGuPDOYYzm1d9iLCWvVIZsh8wy2Ej+3G\r\ndsZJYLTDJRbimtseoVEJ+7WnRQD+gaIwX5M/0PmY2UUy72EJ4jDQ/UIPIhWr\r\n+Lijva8dsvPClCVCBHhxUkcH18Qt8sfwGamFSdt363f79OnNd7/VgghAtmj8\r\nF8UJgMESWCwM3ziG4IiFjk6CotnFPhYj9UpDQLYA0mQtV5dEWkOETzgn9S/0\r\n7rT2UD0FROk4JcaMkGXBx1iOOpmpGFP7f+vmyLM94Zml0zqSFCMj1+oCRtHH\r\nH0LcY/PZcdvwEyFJrlJinxRH2JfgZlabUKmAUfr76QFskK8sWpGOS9nd2ljz\r\nNoU2lhcLTv4Q2pFgDK+Vrkl5a4y6pXoxqEQjgIskdfs0UifIEuXN3uSGIqug\r\nHn3x37K5D0uKjq3wPIXT6Me1gbLRZpFMb3Kl81Ab1VQa4MnBzrclVq9XPXZg\r\nsQwzGZ9+eDuMjOmp3eewB5bJgVJP91tDRWLlTBSNGwrbVCdAAZdlcfCztZZK\r\nIjl8XPsRW8aFQef2GF3iWtF2N/N/vp96Mjn9gPUOZywynoskb8+gAJDRV4Az\r\n5543VmUGvAS5Su8H/Ak3kML7uC8swtq/YMg=\r\n=92wS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"./dist/index.d.ts","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"6.14.15","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"14.18.2","dependencies":{"pg":"^8.8.0","pino":"^8.8.0","uuid":"^9.0.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.3.1","rimraf":"^3.0.2","ts-node":"^10.9.1","prettier":"^2.8.1","@types/pg":"^8.6.6","tsc-watch":"^6.0.0","typescript":"*","@types/node":"^18.11.18","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.1.2_1674939737819_0.8791922210037986","host":"s3://npm-registry-packages"}},"0.1.3":{"name":"pg-transactional-outbox","version":"0.1.3","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.1.3","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"eaee1f903b2afbd299a907a1b47d416b28997678","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.1.3.tgz","fileCount":80,"integrity":"sha512-gc4RlrqD/765V7G/oj1VxD9Fb/q6vrPI3m4tzp2dLF0rKcUCcXUgosYoKFBXxe73SXV92hdV4V4kmi8Zdu5s1A==","signatures":[{"sig":"MEYCIQCz/T/hBq5eV4YhAE8Nyr8uO9gmNUMiuqglALbM6bSl5gIhANl+tL2yvhyPGQiYcIIs/LcR/2b3qnbt8MlKjJqtkkC+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":310888,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj1ahQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrLAg/7BN+gsFFAbKjvj78/YiyTl1j7lzgo/5y9DiritMj/jYh6oQqk\r\nVmbQcoBJZcG3ixY+4b0X9ZVWeeaLQVScPgGTNAKjD/ja1MX4azSSAbnxh2qb\r\nyZLvIXe+1/whLtoPcINExr8f3xpAUmaYIH+uuBMJlY7Pk+U2MvRSbybeSzzu\r\n/2ypeUwKGphlbk7TyohDzfG4En+63G8LUkzVALHgX9EEz/GzlSPAGVtbiTNe\r\nBD2Qj6BeYGveBsfrgJdLK2ZDIpE8eoTFk4/eais89DYYeMSYnQs3k6y4vVNB\r\nKyPRCWlgsGhAIFuq6XlE2D+1lzIFazkzJ0BdhKmtYeEoaBX0a4CA5YB3Qx8R\r\nvGM/BR70jris1c+NiAF8Vq0vou5IyHC3EnP3vzvRJhQr22f/9HYbpJeRr+Ii\r\ne8jfcgOQImo3r8J+JwtXZHKa9CQ42jvqvqTtCa7ua9SIJNq2S5MGWFSEc+0D\r\nwChDB7r1fnQGJuFA02mHcSkD6C0LZJ7JO7bubpQk3BKujOA6ex25b29+WKOw\r\nXwAiME05rLSLkb7dGrtqm/YQIN+xIJMX2Dty+kwc1UHvR2f7JRggxkpJxvHz\r\nEXgLFjgCIQE7kwLc7RgDkf/Uh2JICRLbkchbp3lgEuPB57H32USwm65aFKva\r\nKcmCfZl2meApOJ26mmLPXhIDI3nak8cgwZU=\r\n=JgqM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"./dist/index.d.ts","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"6.14.15","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"14.18.2","dependencies":{"pg":"^8.8.0","pino":"^8.8.0","uuid":"^9.0.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.3.1","rimraf":"^3.0.2","ts-node":"^10.9.1","prettier":"^2.8.1","@types/pg":"^8.6.6","tsc-watch":"^6.0.0","typescript":"*","@types/node":"^18.11.18","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.1.3_1674946640760_0.6806215035496577","host":"s3://npm-registry-packages"}},"0.1.4":{"name":"pg-transactional-outbox","version":"0.1.4","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.1.4","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"794b28c45ff36703f704c1aa654ba8b713014956","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.1.4.tgz","fileCount":81,"integrity":"sha512-R6KUGQRSANYBqCElU+GByUd7OzTvfBfIxJSUEeV0sJK0W71lJAX2P4AT3utiUnzGf3Sjo97I7E8ir6IU33NFIQ==","signatures":[{"sig":"MEQCIFa7gcQ24e8CZ/mDJShSmb30w1mIqGZIjqybRrq/5i9dAiBrIJCql/gHXsoYJcuxuWSQtteGzM50ONktD55e5YwWvw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":308678},"main":"./dist/index.js","types":"./dist/index.d.ts","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"6.14.15","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"14.18.2","dependencies":{"pg":"^8.8.0","pino":"^8.8.0","uuid":"^9.0.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.3.1","rimraf":"^3.0.2","ts-node":"^10.9.1","prettier":"^2.8.1","@types/pg":"^8.6.6","tsc-watch":"^6.0.0","typescript":"*","@types/node":"^18.11.18","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.1.4_1684186078988_0.07159587103746112","host":"s3://npm-registry-packages"}},"0.1.5":{"name":"pg-transactional-outbox","version":"0.1.5","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.1.5","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"e8ffee56fee6840b726a4e55f17886cfe22ee24e","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.1.5.tgz","fileCount":20,"integrity":"sha512-b9beGQbgkUMG81HD+JuMd7ufKQx51Q9wCrC51ot0eh+CvGJKbEEeopEJAUfO3RlMDSR/UOe8r58ORJZOhQicyw==","signatures":[{"sig":"MEYCIQD18PmNg36Kvx+ZXKBDmXlnsNi4fHlbwfUMVgTgqOVFBAIhANayCzf3gMCc8epQYpQVaUJtB1S2HUhDvn5g4Gp+2iKz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":100702},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"c803ed939f64df18ca22be51b5e248db4ce290b2","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"8.15.0","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.7.0","dependencies":{"pg":"^8.8.0","pino":"^8.8.0","uuid":"^9.0.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.3.1","rimraf":"^3.0.2","ts-node":"^10.9.1","prettier":"^2.8.1","@types/pg":"^8.6.6","tsc-watch":"^6.0.0","typescript":"*","@types/node":"^18.11.18","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.1.5_1694418802535_0.7298498275160916","host":"s3://npm-registry-packages"}},"0.1.6":{"name":"pg-transactional-outbox","version":"0.1.6","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.1.6","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"97725a8b1bfcbdedc340d749c5aaeeab56b217b4","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.1.6.tgz","fileCount":20,"integrity":"sha512-n1xrZkfP0ydXXjIMghu79UjsnyIOtnXcUmojeUoV+CybjqyxCcNANFmuvBc1Ic2vFu0YdSfh8LuBNu9VXq+J0w==","signatures":[{"sig":"MEUCIQDWvN7qENdH85rsUytYBA1CT85W9nY1r8ratIGcbIRhfgIgLWPIOMO6aVKCAL8DNQEBwo7F8zVn+03Y2R/v5mTPDT8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106190},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"d0605bdc144206677b0918cc3a6aef4db96f45ae","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"8.15.0","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.7.0","dependencies":{"pg":"^8.11.3","pino":"^8.15.1","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.0.3","@types/pg":"^8.10.2","tsc-watch":"^6.0.4","typescript":"5.2.2","@types/node":"^18.17.15","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.1.6_1694791279579_0.8651228075520931","host":"s3://npm-registry-packages"}},"0.1.7":{"name":"pg-transactional-outbox","version":"0.1.7","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.1.7","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"ce2bae9e4425170bb95c78d9996acfe021a66749","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.1.7.tgz","fileCount":48,"integrity":"sha512-sygBPGhNP1Z3Lc9MXluA0CVmXrLI+wjYu89Dm3ufSubm2I41kwXOJiYY8HKLfegHg6a1+kfEjP1maQ9kBtiIlA==","signatures":[{"sig":"MEYCIQCrXJpEQkZCfXiwtIzv5IomR3LWq7sxsCkq7/GWNoJgkAIhALpUrE+Z0VMYdUfzZCkLumJ1AQJ6PAgA55dprvxoT4Ya","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127073},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"975d0a4f31f13c3da9e5fa7764c0162e8096661f","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"8.15.0","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.7.0","dependencies":{"pg":"^8.11.3","pino":"^8.15.1","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.0.3","@types/pg":"^8.10.2","tsc-watch":"^6.0.4","typescript":"5.2.2","@types/node":"^18.17.15","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.1.7_1695031994254_0.4549065869135447","host":"s3://npm-registry-packages"}},"0.1.8":{"name":"pg-transactional-outbox","version":"0.1.8","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.1.8","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"ace37c7ca8e6a530e3466fede6d4b613968c9518","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.1.8.tgz","fileCount":48,"integrity":"sha512-2kVYwBhBZPWhPLdfGqoO6/yOQrhwDBxirLKIsXSEIRfq6g8kwGgMlALrdp+DhvZrRrEF9dzprDs4WdJDXwH4bA==","signatures":[{"sig":"MEUCIQCo698kMG+kvq2ozS7S/jvvgAdu94fFd1Yp14X9EMPrhQIgMlfyCp0t8ryjhgJkIhLHkAmQ2ZuXEMh+4wjmfUExpcE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":127216},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"bb2793d29ddf23611720293c10bcf335f9949c25","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"8.15.0","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.7.0","dependencies":{"pg":"^8.11.3","pino":"^8.15.1","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.0.3","@types/pg":"^8.10.2","tsc-watch":"^6.0.4","typescript":"5.2.2","@types/node":"^18.17.15","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.1.8_1695305347467_0.6193092264603968","host":"s3://npm-registry-packages"}},"0.1.9-beta.0":{"name":"pg-transactional-outbox","version":"0.1.9-beta.0","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.1.9-beta.0","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"d23df0fb01ce477e325bd7f502401bdbe184ba1b","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.1.9-beta.0.tgz","fileCount":48,"integrity":"sha512-r/rKXhz2kHsI6dOxyVVLBbwTJg9CfW748VwDbj+iZsB3QITufcJTxPvq6n+g+fyneZbEGR98/FbDtZKgANw4IA==","signatures":[{"sig":"MEUCID7mqTcrWzaFel0fZAm+yHt0CI22J1Du0s+RS271wRMJAiEAk97IlFUoNKqtZiIvBAQ3jlH4Cv8mbNH5lfcUA5V0/qs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134058},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"6ca0e532e1af18b5ea11a9d81abb9cad627489d8","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"8.15.0","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.7.0","dependencies":{"pg":"^8.11.3","pino":"^8.15.1","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.0.3","@types/pg":"^8.10.2","tsc-watch":"^6.0.4","typescript":"5.2.2","@types/node":"^18.17.15","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.1.9-beta.0_1695812335262_0.8546921016409159","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"pg-transactional-outbox","version":"0.2.0","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.2.0","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"f734b424911e70e075a734348256e4477407fb10","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.2.0.tgz","fileCount":48,"integrity":"sha512-taO2bsHELoIn+7z0+IDPNUPk5A8GyBAvM/+jkWeMy6Utglq0YSOXlnZ1T89D2abW2RfPLViyfqTqlLekiwlGdQ==","signatures":[{"sig":"MEUCIHpHuYjUJ8qrTS7X0xtBJM0U4tC1y+P5Je9rXQ9sow0dAiEA7hVCELjWiY8LrLOqZfUPVhAx6mt5dwmYH/PHUa8JFCY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133759},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"e152c4c67a67edc0d78c258a6d7f7bd177732fbf","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"8.15.0","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.7.0","dependencies":{"pg":"^8.11.3","pino":"^8.15.1","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.0.3","@types/pg":"^8.10.2","tsc-watch":"^6.0.4","typescript":"5.2.2","@types/node":"^18.17.15","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.2.0_1696600517368_0.17070653455692142","host":"s3://npm-registry-packages"}},"0.3.0-beta.0":{"name":"pg-transactional-outbox","version":"0.3.0-beta.0","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.3.0-beta.0","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"ceb6b4da1a4e22ed13eb938f4fbc5d6a34f68293","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.3.0-beta.0.tgz","fileCount":48,"integrity":"sha512-RRNKYHAXzsxF4P3nZ/bJ2ZdHNxFWaSN5hwjRlx+8Xas08CulwbnOW6odIQ7aKJhMeMyXrjO+qpKqKzogzxYYcw==","signatures":[{"sig":"MEQCIGTTCM+ixPwbZTB/tffW7dt2NzgXMZLpMmjWmer5W3ezAiBX1ios7trWY3wGRz2vcqTqCEHFRFVAZwMND6FDcep4HQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":146459},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"e07e49f3573439ee64c1893f8fce1ac3e6ce2ce0","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"8.15.0","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.7.0","dependencies":{"pg":"^8.11.3","pino":"^8.15.1","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.0.3","@types/pg":"^8.10.2","tsc-watch":"^6.0.4","typescript":"5.2.2","@types/node":"^18.17.15","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.3.0-beta.0_1697550757952_0.4885711466338154","host":"s3://npm-registry-packages"}},"0.3.0-beta.1":{"name":"pg-transactional-outbox","version":"0.3.0-beta.1","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.3.0-beta.1","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"75dcc2b96fb836ce18bf7a3ff0dfdff279cb992d","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.3.0-beta.1.tgz","fileCount":48,"integrity":"sha512-HXZExMXWLObnzphKYgphHiSOif/2iq/aSdYeDfxLQWX0FY/HD/NxwPHe7Hj790EZbkEKPdL3s3uEZihRMJfvgg==","signatures":[{"sig":"MEYCIQC84mC14uTKrampDf2pxi+Ovl0G1hRzUTlhn3DAfDNL4wIhAIfW5hOp9+oRmVqWAHjhpbkfuWigznYGYeZDXbult2fQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149217},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"c307de6c2c466d19db81b1cb3ea33c91582071c4","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"8.15.0","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.7.0","dependencies":{"pg":"^8.11.3","pino":"^8.15.1","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.0.3","@types/pg":"^8.10.2","tsc-watch":"^6.0.4","typescript":"5.2.2","@types/node":"^18.17.15","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.3.0-beta.1_1698063160274_0.8853115068053041","host":"s3://npm-registry-packages"}},"0.3.0-beta.2":{"name":"pg-transactional-outbox","version":"0.3.0-beta.2","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.3.0-beta.2","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"b7a4513f4f26b5bbd11dba6a7c3a3543b85435d7","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.3.0-beta.2.tgz","fileCount":48,"integrity":"sha512-6BlTtwcuFNMpwdYfq28AR+vrosCcqCfAHbEhnnUIXohEIMdtYYhTu2rG/IONk2jHykub39F+btDhQqVrhMmkyw==","signatures":[{"sig":"MEYCIQCyZ2/M8MCfBM06S2xnB82beKnmYpLN694vMFIeqCC8bAIhALXYj4v7PQEi1ZnwqkDwSb1zRNo4Gxw1UPxiBw4hT+2S","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149430},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"c307de6c2c466d19db81b1cb3ea33c91582071c4","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"8.15.0","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.7.0","dependencies":{"pg":"^8.11.3","pino":"^8.15.1","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.0.3","@types/pg":"^8.10.2","tsc-watch":"^6.0.4","typescript":"5.2.2","@types/node":"^18.17.15","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.3.0-beta.2_1698065144331_0.9152815519865738","host":"s3://npm-registry-packages"}},"0.3.0-beta.3":{"name":"pg-transactional-outbox","version":"0.3.0-beta.3","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.3.0-beta.3","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"1a7f720d914454e2bf3073fdf9a3feca4dead2e9","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.3.0-beta.3.tgz","fileCount":48,"integrity":"sha512-6uyPmwNtYAlA5dafspFiaq0E6fADUyVl39NsbXyEg/zs7J3jBuXWsM+BbB5q7f6SRfv6nCOl2a9KJsuIfUvsfw==","signatures":[{"sig":"MEQCIExQkyHgYyRChOahHtEyRNj21BSYyieWYoi6VlEeTdOMAiA7/aMsjJ2PA17P45XVkrY+eoABnsvC+egpp2uWN3DwAQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149464},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"c307de6c2c466d19db81b1cb3ea33c91582071c4","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"8.15.0","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.7.0","dependencies":{"pg":"^8.11.3","pino":"^8.15.1","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.0.3","@types/pg":"^8.10.2","tsc-watch":"^6.0.4","typescript":"5.2.2","@types/node":"^18.17.15","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.3.0-beta.3_1698066779714_0.8257872265543873","host":"s3://npm-registry-packages"}},"0.3.0-beta.4":{"name":"pg-transactional-outbox","version":"0.3.0-beta.4","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.3.0-beta.4","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"93d9304a4f7c1458da84e6c0d1891c09bb0cb519","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.3.0-beta.4.tgz","fileCount":48,"integrity":"sha512-7m4oOGQHlBObTkD2rWK8E70s6Q7nQvFwGjzQVwyEYTWRE4zeb+pic+6thh/TCUHS/ORdobV6Y8Tu8nWVr2yjlA==","signatures":[{"sig":"MEYCIQCaNs62VMj2x8iufabTkYG2DcaKfcwkTN0WWPS9kJEtrgIhAMyGAwqetp261dcqlU8VwbBWbvQhRnfx258uSiuSl0mT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":148765},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"c307de6c2c466d19db81b1cb3ea33c91582071c4","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"8.15.0","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.7.0","dependencies":{"pg":"^8.11.3","pino":"^8.15.1","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.0.3","@types/pg":"^8.10.2","tsc-watch":"^6.0.4","typescript":"5.2.2","@types/node":"^18.17.15","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.3.0-beta.4_1699370289029_0.48577427952595054","host":"s3://npm-registry-packages"}},"0.3.0-beta.5":{"name":"pg-transactional-outbox","version":"0.3.0-beta.5","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.3.0-beta.5","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"3c063999c3fc1e460175fcf5ed17a68a3e44cd82","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.3.0-beta.5.tgz","fileCount":53,"integrity":"sha512-uV0SsU8mDgh4+mYnKBhygC1+qBP8MfsL0sLH3YUNf+ytrxu6du2SN3i0MQQrRa7LQNCnlYwF9mePHGTfXhlB7g==","signatures":[{"sig":"MEUCIB3BZHcKqidheeFYbkPDTSmwXvf+Faf/CZ9vU8e6af95AiEApaPi9QFPMKM4pPYh6uh0hsI8kQ+nPS1mPE3JoCk/9VQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153595},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"095460a2a596d9e40f09109d93d37f87560caf78","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"8.15.0","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.7.0","dependencies":{"pg":"^8.11.3","pino":"^8.15.1","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.0.3","@types/pg":"^8.10.2","tsc-watch":"^6.0.4","typescript":"5.2.2","@types/node":"^18.17.15","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.3.0-beta.5_1699433621632_0.6632007190676825","host":"s3://npm-registry-packages"}},"0.3.0-beta.6":{"name":"pg-transactional-outbox","version":"0.3.0-beta.6","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.3.0-beta.6","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"7cc83971e0bcb07fa44b3c008cad914cffc1302f","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.3.0-beta.6.tgz","fileCount":53,"integrity":"sha512-JOJN1yL1MY0R27wt5FO0waMVF6kow0ENJHUdZt8ZqUEcrGGxsn0T4+/WKgrEXNXuKI1acaKgVygmzC+OZY7swQ==","signatures":[{"sig":"MEYCIQCbFrogrlYMux9MyPxjM2uRxncHSJQMfzUYdFQ9tNNCzgIhANxwWNysWWdUrSqTo7cQq9AFVYzfmmw2BhGqbLwuWfNR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154762},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"480ddcd73c161942cc503114290450adf3f6471b","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"8.15.0","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.7.0","dependencies":{"pg":"^8.11.3","pino":"^8.15.1","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.0.3","@types/pg":"^8.10.2","tsc-watch":"^6.0.4","typescript":"5.2.2","@types/node":"^18.17.15","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.3.0-beta.6_1699439134786_0.4762790596504991","host":"s3://npm-registry-packages"}},"0.3.0-beta.7":{"name":"pg-transactional-outbox","version":"0.3.0-beta.7","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.3.0-beta.7","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"0d1c83d022b40ff7a080cf5b08c0346716e0ae77","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.3.0-beta.7.tgz","fileCount":53,"integrity":"sha512-J5pULh1W2Lq+ePXp6sSnCJEuk+EPww2hilsHpvcU8MhQB7cDamahkmi1/GbaX6ZppJ10TAYi8B11lwUQQhDesQ==","signatures":[{"sig":"MEUCIQCAExLQYm6MYbLYu5cv24uOLnaWOGcmueiAm6KbJb8G4QIgKHrJhPkpjUZ8ESVhxiyqbTEPo3qx8NOBMiA2UL5VYfE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154932},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"480ddcd73c161942cc503114290450adf3f6471b","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"8.15.0","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.7.0","dependencies":{"pg":"^8.11.3","pino":"^8.15.1","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.0.3","@types/pg":"^8.10.2","tsc-watch":"^6.0.4","typescript":"5.2.2","@types/node":"^18.17.15","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.3.0-beta.7_1699443348079_0.42969482300862816","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"pg-transactional-outbox","version":"0.3.0","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.3.0","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"452ed53e35a7113e7a6b373e39d715ecee90b16d","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.3.0.tgz","fileCount":53,"integrity":"sha512-GPcFaPCXwNLMKIIDhXjXzDRIb1unMzmQwREsj08uIG8HVh6PPa5AcRMGcl5b7LsYrOYicxA+AY01CkP/Q49WKA==","signatures":[{"sig":"MEYCIQCc0YsN/Gwtad4FMYOqonBIaI8qQ6Z5mZ6uBohXLBtrMwIhAKUzc/ch8L2AfWRQLbKuNoKNI7auYZj06K4+OgbFBtfm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154925},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"3bd060d2c915b646ed4f68aac3e3a3d9b0c5195e","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"8.15.0","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.7.0","dependencies":{"pg":"^8.11.3","pino":"^8.15.1","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.1","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.0.3","@types/pg":"^8.10.2","tsc-watch":"^6.0.4","typescript":"5.2.2","@types/node":"^18.17.15","@types/rascal":"^10.0.6"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.3.0_1699545865837_0.6967444626222867","host":"s3://npm-registry-packages"}},"0.4.0-beta.1":{"name":"pg-transactional-outbox","version":"0.4.0-beta.1","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.4.0-beta.1","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"d920c0148e291573221f7e80d2b5d42709eaf2f8","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.4.0-beta.1.tgz","fileCount":88,"integrity":"sha512-EhMV6HMsWXGvdEXnf4qFO6Poo0n8fJx3y5+9ByVPWNeScaScUPCiVvCYkrsAxYi9C/Rj0r9j0eFYiYSKButBkg==","signatures":[{"sig":"MEQCIGYDzHMSpmHVgtl/TJlm2tzfvhwTIyk4i6RUF3T3ssljAiAxEtHKEfGxDG4LI5CJZmu2cjJVZESfgk8HlwhU1XH4+Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199634},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"aaa0b3fffc5667ef88725fc99551eb775c7ed9d2","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.4.0-beta.1_1700753660685_0.43746494083770426","host":"s3://npm-registry-packages"}},"0.4.0-beta.2":{"name":"pg-transactional-outbox","version":"0.4.0-beta.2","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.4.0-beta.2","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"4dda300df441063ec64be5b7690f7663dba9406b","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.4.0-beta.2.tgz","fileCount":88,"integrity":"sha512-gQKgmiQ3bH+wXdkxyahCSW99svCdwUz+FqWnk0ynfVbEpQmuCCLY7hC9ecuk5sdWnDZtSPuMwNh4o/L0W79HWQ==","signatures":[{"sig":"MEYCIQCdSTCLufgv9V75EZPyTzE0/wTUDY80kzZ0xSJO313ScAIhAOSbuNBT+3oIC8d9xU6uilUnbMGuEXmrjyrK75wWvh6i","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201179},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"080b3947af40c6a8c1b67d297d31596025b2187c","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.4.0-beta.2_1700843394249_0.3448384068706669","host":"s3://npm-registry-packages"}},"0.4.0-beta.3":{"name":"pg-transactional-outbox","version":"0.4.0-beta.3","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.4.0-beta.3","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"b464b56c60dad748a36f100bfa12fb22d4975fd2","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.4.0-beta.3.tgz","fileCount":88,"integrity":"sha512-L9//0akqHD13a8ZsM7CLQRodByhhy0RZaq8lmQr1Fwh7s5X7wLxnpk5nDc+5j1ArTOpneFLh578fSe/arUC7oA==","signatures":[{"sig":"MEYCIQDhhwNYYwrgH+kp4+1RYZjED3YKFGVMgEGf2/z8uXSougIhAKHaafufEuH8fdlWE1NqRkI4KBWat0h4ZEMYEzZjBOaf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":211266},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"9b86f7767d713f72be73dad5e3c80b271c3f25d3","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.4.0-beta.3_1701087926389_0.9996836276234007","host":"s3://npm-registry-packages"}},"0.4.0-beta.4":{"name":"pg-transactional-outbox","version":"0.4.0-beta.4","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.4.0-beta.4","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"8be2b447ccb5e0e1a439c8d1b366cd58a8212328","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.4.0-beta.4.tgz","fileCount":88,"integrity":"sha512-jb4cye7Z2SNNQgYamrY8wmbkZ42Pgh6rhQOTc6KyM+Pno3aEMcVMw64pbXTo+OsmC0sg2mvr9q0DNHUFUWsC7w==","signatures":[{"sig":"MEQCIAYJpYznNNpgcVFM1Tz9K2plmIrNPcccJeVrhzfI+NgAAiBAOJg50hjGhL4NTTbiu1eTEi+pXjm60McoJx1RS37ysA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":211529},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"da969af2d86f67a01cf1a37508deff3a7dfc7196","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.4.0-beta.4_1701092545587_0.11532168070347493","host":"s3://npm-registry-packages"}},"0.4.0-beta.5":{"name":"pg-transactional-outbox","version":"0.4.0-beta.5","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.4.0-beta.5","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"0291c4e2cc2c47f9feabeffd436cf4e840212a06","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.4.0-beta.5.tgz","fileCount":88,"integrity":"sha512-yIthRNyKgBnt/z1DhMEXvk7I4VkmYQYEhKc73hYRXJoy0VVlQ/Tx43WFuoB3/rI0gx4cvF7tuLZDggwPBVdL4g==","signatures":[{"sig":"MEUCIQDcmykuscrBRjrNOGOG87WnXpzStlt8G5+Q42lC49neXgIgIfHgV0U/MaTZCCxar/xsOrCBrwDro0sjOKVbI2aMnU4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212640},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"e3458fb2115e0fa539cb9faa48b7a3f93b0a04fb","private":false,"scripts":{"test":"jest","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.4.0-beta.5_1701174062835_0.028395586962598918","host":"s3://npm-registry-packages"}},"0.4.0-beta.6":{"name":"pg-transactional-outbox","version":"0.4.0-beta.6","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.4.0-beta.6","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"ef6a934a5a380c988fe49b97ff1f46a4d3c7e350","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.4.0-beta.6.tgz","fileCount":113,"integrity":"sha512-ghX6QBOl9diu/sF9YDJXaNWdw46NH549GcubFBfQ95JlqDy8qNMCiBvSrQSKaB+EW9FK/PuMjx0hW3pHWbhpsg==","signatures":[{"sig":"MEUCIQCwKHQH5gDYZcjpVfocYsIOzSfdKYWDXF5R7QQNaIx4YQIgXxOwjB92S9R1ikpp2i+WxLd7tVDHXoWJp9YmmAzegjA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256137},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"cea4d1ddd9b8da55dc6d1e2b0d465b8f377eb218","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.4.0-beta.6_1702449981497_0.8900685652819806","host":"s3://npm-registry-packages"}},"0.4.0-beta.7":{"name":"pg-transactional-outbox","version":"0.4.0-beta.7","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.4.0-beta.7","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"68697e75640bed5a6581604e925288fd02c2465f","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.4.0-beta.7.tgz","fileCount":123,"integrity":"sha512-dbEaiRIQ2vBQ8G3LPEVSbOdy5CED1CFIQ+FzI1W65nbav5RnfZq5Kt3t1vYsZvLHgjN7JpTuvRJ4xD08e/2nnQ==","signatures":[{"sig":"MEUCIQD8CZl/qCLynx1GDypy4UGhVFJRTrpzlF22fReF4d0A3QIgUhg2QXYZc9lBxQdJH1phRKkd3LhbZszl6lwo8laxWXI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":271398},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"4af9cbb60d101ac6601394c8807dc140c2460a2c","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.4.0-beta.7_1702623758538_0.04960964614292518","host":"s3://npm-registry-packages"}},"0.4.0-beta.8":{"name":"pg-transactional-outbox","version":"0.4.0-beta.8","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.4.0-beta.8","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"564312a8d1cccebdf2f209d4c11a768f7e89d645","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.4.0-beta.8.tgz","fileCount":128,"integrity":"sha512-MFGhamp1pv2fsWI+JDsyuZ2yBYHcVFJwVP6c5ft/OASMpiXQPV0bMrlpyb0Bcb8hYUgtp4RE4U/+SlFASaWBUg==","signatures":[{"sig":"MEYCIQCWqwN0QFGv3IphWNzwSgDQcKAD5C0TeildzjtFg19EGgIhAMYJHPTfeEUPdOadFhxqLSTMERO7l4Bn+N/s3ui6NLkn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":293323},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"237f877a318276b25ea66e2643c12b3d5f09939d","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.4.0-beta.8_1703188780240_0.3711998650396835","host":"s3://npm-registry-packages"}},"0.4.0-beta.9":{"name":"pg-transactional-outbox","version":"0.4.0-beta.9","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.4.0-beta.9","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"344fa8f044816364b6807797df7c1357436f4f50","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.4.0-beta.9.tgz","fileCount":128,"integrity":"sha512-2BadG3VBSx6vqLlNygz87prOKdCHeKxuxmj0qWtMSz1DeEAZKuPWk/Zhmq/V/WUxQxcgOmUV10wauTvxli1ggQ==","signatures":[{"sig":"MEYCIQD/ZaMpL1Xnkazip1dhOoib52zMtM9qpTUKscUsCSkQqQIhAPvsmFW6q587m3erd0nCn3q30okiWAfkUFbHbU+HGgMu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":302182},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"efe40f9a77fa4bcdc4bfa42e7ec8cc5ce2c8c863","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.4.0-beta.9_1703245182939_0.9537160231283139","host":"s3://npm-registry-packages"}},"0.4.0-beta.10":{"name":"pg-transactional-outbox","version":"0.4.0-beta.10","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.4.0-beta.10","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"ddfd1ad30d606dc72ad105d9484e31245df347f7","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.4.0-beta.10.tgz","fileCount":128,"integrity":"sha512-AcODENEjBOJ6UvhJLhulenqsIOavnabgCpAN1CGPCjeCNzUEz8GTrCPz2wHuR+xUmEUT9/G1UWnoFZp0WVNXqw==","signatures":[{"sig":"MEUCIQDzB5QDrRbEXObd6iBAcO9kxTqX5D7gC24XOeGehwnTLQIgdMo999jpOp/dHrSLAm7eIFs44U1hLFMdKyO6U5f4lD0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":302834},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"f0d9a83fa3992ede7c32178747d9f5e7bd58cd1d","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.4.0-beta.10_1704708091391_0.3600747760816385","host":"s3://npm-registry-packages"}},"0.4.0-beta.11":{"name":"pg-transactional-outbox","version":"0.4.0-beta.11","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.4.0-beta.11","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"e8a149e3cb1de9afdec5c0c0ecc9dac0edf8cfb2","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.4.0-beta.11.tgz","fileCount":128,"integrity":"sha512-3t3QiGGeLXOQgD06yjQdJHVrjfP8TssALzmWV6whGXhqOfCoKgtxPLFPnGgeFQOjECyPuX1SEadMi7nDmZLf+g==","signatures":[{"sig":"MEUCIBW8FwRScyARrpv5b0KWesE5Ifp7I3NV8fNiFZkJXtr2AiEAyTYeVZt3pHTe4PjbR9D7x7pHIYs3NTKUytdAXotHDbQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":302892},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"f0d9a83fa3992ede7c32178747d9f5e7bd58cd1d","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.4.0-beta.11_1704787948632_0.5827186189416325","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"pg-transactional-outbox","version":"0.4.0","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.4.0","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"dist":{"shasum":"75f4c57de3f9ddeffbf5a2270e16da929756f532","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.4.0.tgz","fileCount":128,"integrity":"sha512-s7zGRixsdZeIiypENPHoaHv+IrgfQ3nY62jwNxq0YM4BBNRvzXIdv/erADrG0YyuYwCf03Fr+Ayab6Yo1rd6gA==","signatures":[{"sig":"MEUCIQCBSN8wKb/uhlXgbRVZe8cOX+knqBvn3DYFkxbIZD/imAIgDIxASKWH1goQX0p/sZGIWm78RsqAGTPzfjrWa/jJzkU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":304482},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"1fd98b4e022df0d033d1dff33862d619641d5a0d","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.4.0_1706862650468_0.8888018757446807","host":"s3://npm-registry-packages"}},"0.5.0-beta.1":{"name":"pg-transactional-outbox","version":"0.5.0-beta.1","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.0-beta.1","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"2f52092a4aac019b6a07e159301117bb27c67f7c","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.0-beta.1.tgz","fileCount":228,"integrity":"sha512-+UyRN47lIMZxdWa2b6poTyVMfEba4Sk+fz+C2bLznXW1g7715PcwCnMY6zBUIPYFUwYI/UfVugpOVMpElYNtXw==","signatures":[{"sig":"MEUCIQCe+6R+vorD/4beBuOrdwB+CxqK9ySQeF6RBlRjeABcqwIgYF9KhY5DXIEj+kFf3DOmJNuVEpjlRMNvdm56lwOmf2w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":449478},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"9a1494d76c93189486266434f56d7a4b854a591e","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:sql":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.0-beta.1_1707743782832_0.06509959222358352","host":"s3://npm-registry-packages"}},"0.5.0-beta.2":{"name":"pg-transactional-outbox","version":"0.5.0-beta.2","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.0-beta.2","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"ce068a78f06590d7534cf44ff9981a5b34ef759a","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.0-beta.2.tgz","fileCount":228,"integrity":"sha512-Agz12ijicmZq16242mv1NOBTEjdWv/5NLyukAMNAXtkG5eLX8wNwNxPa7d2IPTg+Ik8PU8MT8K96i+ea3hboLg==","signatures":[{"sig":"MEQCIGoF+u6SNySj/48mpAGN37oMttKydbCAqZWDblubdl+nAiBP49feuKkFQtBYd2rpwP8jdpvyHdNXtm6c6t+jnUDpLw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":450103},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"b1a7d4ff955e49138bb9b2d43aa8fb6fca5f88d4","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:sql":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.0-beta.2_1707751450681_0.42368594691276984","host":"s3://npm-registry-packages"}},"0.5.0-beta.3":{"name":"pg-transactional-outbox","version":"0.5.0-beta.3","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.0-beta.3","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"ca4b753d7b39f22c531b7dbef2ff47084c755795","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.0-beta.3.tgz","fileCount":233,"integrity":"sha512-UGiHt/bvpm+7LtZ6UuD5jfLsI6T/6+X+5cMa5am0Hzd3IPQwDLZHvRvPeIIUXFi+KK7SU2smUrkdLgbfujcQFA==","signatures":[{"sig":"MEUCIQCc8bz8qcBsGwIQRrNRParssI2r7QqAFJ3uycVP/1FfVAIgVJX5dV4jM0IFooFHrsrwHT2BbxOvf1+DyWNtwBWkznk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":454692},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"5e15a80c0d943f036495bb71e41b3054e9b121d8","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:sql":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.0-beta.3_1707773523195_0.38161558052118716","host":"s3://npm-registry-packages"}},"0.5.0-beta.4":{"name":"pg-transactional-outbox","version":"0.5.0-beta.4","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.0-beta.4","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"d73fe960e04df3b9a6ad225d6fac33736e760dc4","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.0-beta.4.tgz","fileCount":233,"integrity":"sha512-D/3XA40StoScgr1iHpm8krQmHapwGsgojuZ2zvZuebaINvkgESYC3pVopudq5/2dUK0FqvXptLvwK9fQe9+tMw==","signatures":[{"sig":"MEUCIQD+FKMgbV4BtvQd0ALEaVeCm7IOZ5zibESrgIAap0WBDwIgMieTT3WKynQ+xPzbNsHcUWJ5cbDg8M73opB3yrdHHMY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":453174},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"0c5b3a1ba3673aeb083141770067ef8e4b402267","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:sql":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.0-beta.4_1707824435589_0.18869037056547966","host":"s3://npm-registry-packages"}},"0.5.0-beta.5":{"name":"pg-transactional-outbox","version":"0.5.0-beta.5","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.0-beta.5","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"df7eb16e7ecaae793292a92d1d34eb3208d6651a","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.0-beta.5.tgz","fileCount":233,"integrity":"sha512-V0wTG48mhz6B9u+cFVyLY5qOlK32nCJNN+YjmGuNNLymTX8HTcUqKqmcht8Lpxb+DH0e3LWAIq4XPX5FFpOynA==","signatures":[{"sig":"MEYCIQCvaWuvqIQQaRy27GDFdj4cF4GI8vMJitfn5uMzmNGUPgIhAK3ei9Y3w0UbzGn+6NuSRL92y7FqCnuQWwCtoIWLZu9Y","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":453916},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"45cbd57a87f9a1ad593ba52acf3b6114c95ff386","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:sql":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.0-beta.5_1707843154783_0.23133581834353234","host":"s3://npm-registry-packages"}},"0.5.0-beta.6":{"name":"pg-transactional-outbox","version":"0.5.0-beta.6","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.0-beta.6","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"949ed7f5241dfdca46743dffb77e95ee708193be","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.0-beta.6.tgz","fileCount":238,"integrity":"sha512-FU1n7Ebx++P+bmb+Gu/+vT9RtezXTT6rBII9Kdi4QtpWOaq43zYd7HbzsEpNe/mQ3V8mJXj5CZ7SHC/KzSuxKw==","signatures":[{"sig":"MEQCICpvKz3UIAyl2MKv57TdkMc3+hKKAV6ofquwsO3q/zjmAiAYjXVnDKjJNZ7MqaqPrSj/pONrfxv9ZJyccFKODq6NrA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":523608},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"7faa083f7cda225278e9e43e6afbea6b6cf4ab57","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:sql":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.0-beta.6_1707915801015_0.9073186862808966","host":"s3://npm-registry-packages"}},"0.5.0-beta.7":{"name":"pg-transactional-outbox","version":"0.5.0-beta.7","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.0-beta.7","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"654a8f197bb4fb066e7eb1e21d4bb4ea563da278","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.0-beta.7.tgz","fileCount":238,"integrity":"sha512-B3EPCaOuN42AHP/CmqpgCChLwlolF2Un1YjJhGHp+OrvKPq1B4YbuUk7qGsolBZZW5pkiZkos1cdA+JB9PQQQA==","signatures":[{"sig":"MEQCIAnntDVdpId1Nqc56D7zGwX2CyEMCycz+1CYkSVnmOwhAiBqWkgchs5+cMnr8myEy4yY2qV0RE0MHjzxHAkP4j6Q4Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":523853},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"7a8b04911554bfc38cc0d5d972f9eaf4a6217b90","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:sql":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.0-beta.7_1707949776430_0.23359931165958114","host":"s3://npm-registry-packages"}},"0.5.0-beta.8":{"name":"pg-transactional-outbox","version":"0.5.0-beta.8","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.0-beta.8","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"9fb1cd6fe4623c9e1281132db3947bcb289758d0","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.0-beta.8.tgz","fileCount":238,"integrity":"sha512-F0aj/5IuLSB+A4ssXc6TxKhaOYM0itUtdRwWG7+n6+H9egXO78FYWSVJkkkwewW5VLAj2XEH5h+FXy2o8Os3yQ==","signatures":[{"sig":"MEYCIQDV4umiuPV0rBv2j24YfRVYUHiKeLC3ub247pjsGg56fwIhANS8LKSMxS/wQnTSFBM1g21xu/iB3JDm2Vi46VGCaQix","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":536701},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"6af1d6d1acca79a4041ec9e5ad279d77827507e7","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.0-beta.8_1707989098230_0.16771485218577165","host":"s3://npm-registry-packages"}},"0.5.0-beta.9":{"name":"pg-transactional-outbox","version":"0.5.0-beta.9","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.0-beta.9","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"fb6e02286f313aa08c177d4617eb32ad1d6f9ac8","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.0-beta.9.tgz","fileCount":238,"integrity":"sha512-iG3tr1herFqNGhBuwuf9PcfCox1NeNS3k0KXvFO+JpkfmDfSyq1+6a5UCaPYPmNvksj7aTLlFLkywWcoDlg2yQ==","signatures":[{"sig":"MEQCIHJINYOuZfbMRkfsXydsFceYNzsA17AYlPhu+2/sa8cAAiAJn/EyT6+iYjcwfsJEvwaqbsVBFwo2yJKJ25oUWt1l6w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":538511},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"3e1ab64a03c31d55b937f857d553435c504dd5db","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.0-beta.9_1708078736106_0.0893222518322574","host":"s3://npm-registry-packages"}},"0.5.0-beta.10":{"name":"pg-transactional-outbox","version":"0.5.0-beta.10","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.0-beta.10","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"6975cb0e2a4e56753be593b785f5ed1ace7e2f88","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.0-beta.10.tgz","fileCount":238,"integrity":"sha512-K2niXLV/JB6VxpeQ/42NmJGTbm0063D6ksDGvoLE/pY0X4FHOXLbkZCKmAvGNeSdgfGYHKNtWQhjpM3K0Jf8kA==","signatures":[{"sig":"MEYCIQCusQ4KC8x1P/R/Ikwjb5kXOhMnrYce0fLhRFCOdD9iwwIhAK2Q9w2/4t78OPScvRYWaKHGSgxi/zZHK7yz42QBya2H","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":546355},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"4482bbfa5b83c84ff6c1175cc63a81fbdbaea9f2","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.0-beta.10_1708206763714_0.2626070065759598","host":"s3://npm-registry-packages"}},"0.5.0-beta.11":{"name":"pg-transactional-outbox","version":"0.5.0-beta.11","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.0-beta.11","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"b4a2dc1efd0095baada86f599a833400d14c13b5","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.0-beta.11.tgz","fileCount":238,"integrity":"sha512-8dqfGgIBZ8fE+WPbhTka/Q080hp4aOk1BC6TipRIGDk2zDANwt+wxpyH40FJMETFRg7pp+ENwwGARZ/2z+38jQ==","signatures":[{"sig":"MEUCIQDJcw3D3XgUNSpcsJ65YIYzM+UCNdienUrQdYxHPBbj+wIgRIYQL6ftQqKpKc0TnP+JRVzqz36qcIN03HFNlgxpnq0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":547221},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"d3a3c2ee652591bfe493892b6e3996adc712c753","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.0-beta.11_1708351723439_0.3045501356925515","host":"s3://npm-registry-packages"}},"0.5.0-beta.12":{"name":"pg-transactional-outbox","version":"0.5.0-beta.12","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.0-beta.12","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"aec38a932f2c27e5791b6ce0184b966baef0f2f5","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.0-beta.12.tgz","fileCount":233,"integrity":"sha512-qvNgQYbzgO3P9O5ZwsI0n2zy2s8GClUQmG1B+M08zLW/BwW4dfpod9syqnfTtGTubCkQLLQDMRUH5X7IA93asA==","signatures":[{"sig":"MEYCIQDFor2C/SjiQl0+/vM1e4T8RzQvnvkla5Wle8fGhcTCSQIhAINgpR0xKtFEMXnrXpwtM9ISw+10YaU2PJUGhAoc+rPp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":531588},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"5762ed7f69eb8aefac2e60f410a35ef83f1c38b3","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.0-beta.12_1708433217560_0.8021873569017106","host":"s3://npm-registry-packages"}},"0.5.0-beta.13":{"name":"pg-transactional-outbox","version":"0.5.0-beta.13","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.0-beta.13","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"d90a5909c905e2366104fe092e535841d193d459","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.0-beta.13.tgz","fileCount":233,"integrity":"sha512-BX24SaSRqHkHIRYSjpYCFEZO+rDLw3rQu2GJXM8/68F/5ChCF7MiI5zIWmsY1bwC2lS5/bcVWStyaSeF6ZT7Qg==","signatures":[{"sig":"MEQCIG0OfjpZM+y00AYVh7roJASzH6WGE2MtPHzlIGofJyI2AiBOUh1ePKaIdoCY2Fa3USUOTUoBflLRz+jSF/uKWMgU3w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":533467},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"5762ed7f69eb8aefac2e60f410a35ef83f1c38b3","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.0-beta.13_1708502665429_0.15825033709075664","host":"s3://npm-registry-packages"}},"0.5.0-beta.14":{"name":"pg-transactional-outbox","version":"0.5.0-beta.14","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.0-beta.14","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"6cbfcf346030544475b6dff44c3ea8c53a544626","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.0-beta.14.tgz","fileCount":233,"integrity":"sha512-HJPvou8TbFTK0UQyG3/oHsVH7wmDKC90h+b04UgBT+363sjGuV/s6XsZLuIdON9Jj7anGk0puUw1tHmW5vXXZA==","signatures":[{"sig":"MEQCIFfHvmR+UdKBaOkDxxaNNTilVnINiVoIuBzUVPCYpRL/AiAFf6w+YPwGIsi9RIB315RmJ8zITPEEdMfjCSHE/g2/oA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":534378},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"85aee357f41d8608e412b30e8153f3bcf4b560c6","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.0-beta.14_1708506471512_0.15695956723526105","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"pg-transactional-outbox","version":"0.5.0","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.0","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"a20ccaa4cfd8eae7619357f99ea196f233b70d5c","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.0.tgz","fileCount":233,"integrity":"sha512-bcyXBgBHk8Oi4BADpECUkbF2v2gMyBK8H49Ybzxrpnh0rp+nwFyL8rKJz3BhCz2s/P/kFf+3BF0NSXFMFM5dbQ==","signatures":[{"sig":"MEQCIArohU0tyXjnnEyKCA5+Bzeyb5znPeHL9cyzGuwp4pGPAiBdneCi6nU3xt0tyERTe7rI/9euYsAqEmweP2qm+f0mcA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":534764},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"f322122aaf8472b2cf4127664701728043a24f3f","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.0_1708528184376_0.507450982994109","host":"s3://npm-registry-packages"}},"0.5.1":{"name":"pg-transactional-outbox","version":"0.5.1","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.1","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"cc555607c7da8020bb8f4dc38a1b7c250a89ce84","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.1.tgz","fileCount":233,"integrity":"sha512-GKBHhHq14becSyO+6kdakTzn0J7ue5LOU1/J7qiYZuaphW5kb8BdwzEpk9awoIzYxv2sWUaeZ9Q79Q8T6Uv3Hg==","signatures":[{"sig":"MEUCIECsc7/lYOxLsb5vAszDagqTo37oc+ZK7+Zj2idbIN85AiEAyuU6lbkyx8DJFOpl+5+Pr0s1i6pQXQgLvDoCSpHN6dA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":538606},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"54b1e1705e384f730a7fe7e2e8eeae172ddc317e","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.1_1709114851941_0.2234103336302049","host":"s3://npm-registry-packages"}},"0.5.2":{"name":"pg-transactional-outbox","version":"0.5.2","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.2","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"c5dca36fc75fc1096d2334d9c79861c2bae47b1e","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.2.tgz","fileCount":233,"integrity":"sha512-AlnsIfxLtRZpRLl5wrMDmK7ALxcvUdVWFaVtkc6otUj/16yxHHpxCxqDxkHvAgxEmew5guU7OcnomVIKCOqklQ==","signatures":[{"sig":"MEUCIDFUKyqb3wFbbTGfR+FZyg1d08JTBuKN/cJ23LFYm9gdAiEA4exLerNDjOx5sFagKG05d3zoPWH4uaTyIPvGfevgdVs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":538210},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"03b033a565c78cf987524f0ea93970cc614a990d","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.2_1709220722800_0.8253630748524692","host":"s3://npm-registry-packages"}},"0.5.3":{"name":"pg-transactional-outbox","version":"0.5.3","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.3","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"d16b2b641e2861d401835b14684f640d993c21c0","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.3.tgz","fileCount":233,"integrity":"sha512-wbGfQ9YSTFfiE2FvrUyIScKiGfPPpzEpArnWVGHzoS476COpULbbcrW+qiTLS7xbtToIfiH2O0yFpAdqtlQdDQ==","signatures":[{"sig":"MEUCIQC4cS/a94wj+Ixp7mi35Ra4lZ8Nvrmz1efvzP1PhmqSRwIgSxntozvZ6a/b/WkFVYJGNg6GtoUUyyufx6PBVl3gCB8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":540452},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"dac81aa76894cda030d422fc6248b32817949c60","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.3_1709555104338_0.36392105317864165","host":"s3://npm-registry-packages"}},"0.5.4":{"name":"pg-transactional-outbox","version":"0.5.4","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.4","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"b0ddf132b4ba6ea33d73ace2fb4c92160d8bdeb2","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.4.tgz","fileCount":233,"integrity":"sha512-CL2CRwsJFyh2fqqUd7+m1o1S8q+eDBmYVvIZbg2QbR7aEOBzTrhC7CuSBo8c8AkJ0bKfahZhAzd6SjRixvjqiA==","signatures":[{"sig":"MEUCIQD2/ke3aNPMBitKUIoOw3VZj34q8czdBYKH2F+Vlf7NewIgfKIySl5/ABdKpfAsf7w+CnA+ElkmqxScxyhzmqfr7aY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":540802},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"2f54528079e2e5f01c5bea4764a95f8c5d90ecbc","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.4_1710854878949_0.5603213956084012","host":"s3://npm-registry-packages"}},"0.5.5":{"name":"pg-transactional-outbox","version":"0.5.5","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.5","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"8fc6349769e505fea16ee4701f9e87a9ae36e0a2","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.5.tgz","fileCount":233,"integrity":"sha512-1+fVqQoTQShEspTIipC3zND8X7K1mh4WJC7mLcGRnvDJoz2LEl3yrBbSmKIFJb1Heq4AG98OtOGAOjtOy14oJA==","signatures":[{"sig":"MEUCIQDBV/jTLSMwuOmfgTHH/fL3uiKuekffSAEL9gzwrHT/fAIgUJQD60Zt+wXw+K348peBQXDmcDo5ihvddWgyfEsFm0Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":546994},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"83315f86c20a92e4bae07dd8c170fc5311083656","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.5_1710936960903_0.08634871144055434","host":"s3://npm-registry-packages"}},"0.5.6":{"name":"pg-transactional-outbox","version":"0.5.6","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.6","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"4b77c18164fd341f56b0fad76c4420a3469cf528","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.6.tgz","fileCount":233,"integrity":"sha512-eX/M8YuBBVQ/op1jgTSKYRaosN33WklklLBEBq9TZWov6qCK7YEhdeb7H195jJ7MeObOZ/6UMXtxhM6VZQeuKQ==","signatures":[{"sig":"MEUCIQCl1wb3yJCWqdVVJmt5739aSP46FI9JYR+QGSIeUQAfLwIgEcZF1b8953sdeRiTQ7c9NPhSHJxFsg2ywGdgR9unFAQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":548691},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"8ae825eff18d8453ecc95ee54de4273bfb5a6364","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","test:watch":"jest --watch --detectOpenHandles src/","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.6_1713875569518_0.7772238683042987","host":"s3://npm-registry-packages"}},"0.5.7":{"name":"pg-transactional-outbox","version":"0.5.7","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.7","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"992b3cb574e009d9dc694a921d834a9436744d2e","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.7.tgz","fileCount":233,"integrity":"sha512-Nh81I4gctHmw1EXNDuPGMxRZdOeeuU1UiyNS899v8JNgG3Gr5/LPOcS6dmGhvx2C1iPtCvBYE3Bn2BCFfoczhA==","signatures":[{"sig":"MEUCIQDXzS8Y3DA31RTDNI3qfJ7ezWXx/xp8LjFrQnyiEJMcowIgHZC2Y3blXnUQGyA1QHwqUX6LKt5BlpyiZZcuaL7YxYY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":548959},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"f0cc619458ac2577096d5e4013a83b1b5d3c8544","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","test:watch":"jest --watch --detectOpenHandles src/","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.11.3","pino":"^8.16.2","uuid":"^9.0.1","async-mutex":"^0.4.0","pg-logical-replication":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.1.1","ts-node":"^10.9.1","wtfnode":"^0.9.1","prettier":"^3.1.0","@types/pg":"^8.10.9","tsc-watch":"^6.0.4","typescript":"5.3.2","@types/node":"^20.9.4","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.7_1715328262651_0.43152453302605465","host":"s3://npm-registry-packages"}},"0.5.8":{"name":"pg-transactional-outbox","version":"0.5.8","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.5.8","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"77dbe5fcab27c20becb7381e4bef488f3a8f7809","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.5.8.tgz","fileCount":233,"integrity":"sha512-fho+HIWYaqDjgeaCgNMDpfZ9Jmnb8boJRqFY13+Azj1ti5XJqivSc2B/OMJATcH/XfOTX3B0T6XT8ax7J8A1Ig==","signatures":[{"sig":"MEQCIHlJ0r5utsUkwlJL9zNDI5TsPvibZc+Ebwdpe99HCLc4AiBSFkrLuMUyqRJL6SJm9iTmtlIHwzSWHmD/4XjmHudJ3Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":550221},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"f0cc619458ac2577096d5e4013a83b1b5d3c8544","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","test:watch":"jest --watch --detectOpenHandles src/","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.13.0","pino":"^9.4.0","uuid":"^10.0.0","async-mutex":"^0.5.0","pg-logical-replication":"^2.0.6"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.2.5","ts-node":"^10.9.2","wtfnode":"^0.9.3","prettier":"^3.3.3","@types/pg":"^8.11.10","tsc-watch":"^6.2.0","typescript":"5.6.2","@types/node":"^22.5.5","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.5.8_1726676559665_0.32262852454706437","host":"s3://npm-registry-packages"}},"0.6.0":{"name":"pg-transactional-outbox","version":"0.6.0","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.6.0","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"dddaa2b92818ddc22cfe7e2308849226020459e6","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.6.0.tgz","fileCount":238,"integrity":"sha512-oOYw6b5rc051JxvCH6xk2PFj+qie8ijuapIvbCoxXbqkPvNguyJrIiHYXS28UaX5RnWJlapmD0n+caqS3h9Lnw==","signatures":[{"sig":"MEUCIF9HlV5KcnodMmiix/BvmkkuWVezN42Pw9Dp2CrU86v4AiEAgW7VoLEmOIX4d3HfsGItADDU3TH0h4NiLWvNOw3Nw/k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":563894},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"70178d14f3c7e1ebcceb795b686e3778ae1339a5","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","test:watch":"jest --watch --detectOpenHandles src/","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.13.0","pino":"^9.4.0","uuid":"^10.0.0","async-mutex":"^0.5.0","pg-logical-replication":"^2.0.6"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^5.0.5","ts-jest":"^29.2.5","ts-node":"^10.9.2","wtfnode":"^0.9.3","prettier":"^3.3.3","@types/pg":"^8.11.10","tsc-watch":"^6.2.0","typescript":"5.6.2","@types/node":"^22.5.5","@types/rascal":"^10.0.9","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.6.0_1736883776299_0.1055240410546574","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"pg-transactional-outbox","version":"0.6.1","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.6.1","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"503eab57d4565d30839f0a741ae41d80e0c54f20","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.6.1.tgz","fileCount":238,"integrity":"sha512-GbCdj7QyVwLNDBxx0uB+rHz0njC+GLDMTbf2UoJLb8ppk2z91RQ78+eq5KqKZpo8xNr9h+rhkris2UgbIlJfew==","signatures":[{"sig":"MEUCIACrVschzQ2/fnAnau3zPDwK4BsuIEn8oz4fVsMTL+eKAiEA/PXo15/sH6SbsTJTXM+OeeyVLc2SJbrtnDCXamY4lgQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":564583},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"de2d2693cf557dc93d3126a0a56d7d5fd5d178bd","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","test:watch":"jest --watch --detectOpenHandles src/","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"10.9.2","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.14.1","pino":"^9.6.0","uuid":"^11.1.0","async-mutex":"^0.5.0","pg-logical-replication":"^2.0.7"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","rimraf":"^6.0.1","ts-jest":"^29.3.1","ts-node":"^10.9.2","wtfnode":"^0.10.0","prettier":"^3.5.3","@types/pg":"^8.11.11","tsc-watch":"^6.2.1","typescript":"5.8.2","@types/node":"^22.14.0","@types/rascal":"^10.2.0","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.6.1_1743799426577_0.2763505617443791","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"pg-transactional-outbox","version":"0.6.2","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.6.2","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"75eb44f49d143d82bc42348425ee1bc613fdecb3","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.6.2.tgz","fileCount":238,"integrity":"sha512-Xp8vw1er9Nm9V1sgH2FinluomnH6lx/C9opTPN9DVJDpYBV3agXoewQKsT5rL8nmHUMVYnc+bFwlEGQrE471bg==","signatures":[{"sig":"MEUCIEFRbfUxCZrqDY4kaz+yjgQxKAT7DkVIfdJxCsfh6B4VAiEA8wiVTkfLphigZZ1uOx+CJ5FzHKG19Sjxu6HAUC4A3gw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":564581},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"bcda19d0168711269f7d3bbed2bebb2ecbb08aa8","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","test:watch":"jest --watch --detectOpenHandles src/","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","actor":{"name":"zehelein","type":"user","email":"f_npm@zehelein.de"},"email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"9.8.1","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"pg":"^8.16.2","pino":"^9.7.0","uuid":"^11.1.0","async-mutex":"^0.5.0","pg-logical-replication":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.2","rimraf":"^6.0.1","ts-jest":"^29.4.0","ts-node":"^10.9.2","wtfnode":"^0.10.0","prettier":"^3.6.0","@types/pg":"^8.15.4","tsc-watch":"^7.1.1","typescript":"5.8.3","@types/node":"^24.0.3","@types/rascal":"^10.2.1","@types/wtfnode":"^0.7.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.6.2_1750784335306_0.07568029106100616","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"pg-transactional-outbox","version":"0.6.3","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.6.3","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"262e8f26c96b6d55a9cad353d6435fc2c9511645","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.6.3.tgz","fileCount":238,"integrity":"sha512-CHHKgZOBvHuwyjBFlSjc/8sNJKmSA9NrctSTC8YWvz1WMPsrjxNlDzIpC/12kE1BHNnZfkrlx2dUiFTMGQX0Vg==","signatures":[{"sig":"MEUCIF6K03DOdAhlOCuA5YKpsTBS2Ret1OBtXKQ3HAxvYvT6AiEAntR8W6MYev5BDobbqB7mqpLsEQnuJEkRpN2uycRFKO8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":564852},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"916a5ae4b6621c033a08fdf14408e9d7f91b23ea","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","test:watch":"jest --watch --detectOpenHandles src/","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"10.9.3","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"22.18.0","dependencies":{"pg":"^8.16.3","pino":"^10.0.0","uuid":"^11.1.0","async-mutex":"^0.5.0","pg-logical-replication":"^2.2.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","rimraf":"^6.0.1","ts-jest":"^29.4.5","ts-node":"^10.9.2","wtfnode":"^0.10.1","prettier":"^3.6.2","@types/pg":"^8.15.5","tsc-watch":"^7.2.0","typescript":"5.9.3","@types/node":"^24.7.1","@types/rascal":"^10.2.1","@types/wtfnode":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.6.3_1760130770015_0.6412789346934993","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"pg-transactional-outbox","version":"0.6.4","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"author":{"url":"https://zehelein.de/","name":"Frank Zehelein","email":"f_npm@zehelein.de"},"license":"MIT","_id":"pg-transactional-outbox@0.6.4","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"bin":{"pg-transactional-outbox":"dist/index.js"},"dist":{"shasum":"3463994e9971538ca1533f611606ef38ae2e084f","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.6.4.tgz","fileCount":238,"integrity":"sha512-C0Czs7A6QjFpDQUWAhEA06YIMFvPY4qGBN9tSVDtTvYFbmrvjrOJXqCTLwvVrKiTOI5Y9hTVvhkbfs99U4dMVg==","signatures":[{"sig":"MEQCIFvR8yGXluQDd+8r3u+fbLQPtSm1nWjN00YLjHdL+uUBAiBT7jxuOhFiHZyX/tDLnVJKMDSz8xuuzJIFYFdnBSC/nQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":565923},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"aac88badf4c4a8d18ad967bc58e8f006a853099a","private":false,"scripts":{"test":"jest --detectOpenHandles src/","clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","dev:watch":"tsc-watch","test:watch":"jest --watch --detectOpenHandles src/","create:setup":"tsc && node ./dist/index.js","test:coverage":"jest --coverage --detectOpenHandles"},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"repository":{"url":"git+https://github.com/Zehelein/pg-transactional-outbox.git","type":"git"},"_npmVersion":"10.9.3","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","directories":{},"_nodeVersion":"22.18.0","dependencies":{"pg":"^8.16.3","pino":"^10.0.0","async-mutex":"^0.5.0","pg-logical-replication":"^2.2.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","rimraf":"^6.0.1","ts-jest":"^29.4.5","ts-node":"^10.9.2","wtfnode":"^0.10.1","prettier":"^3.6.2","@types/pg":"^8.15.5","tsc-watch":"^7.2.0","typescript":"5.9.3","@types/node":"^24.7.1","@types/rascal":"^10.2.1","@types/wtfnode":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/pg-transactional-outbox_0.6.4_1762974472354_0.09187801463975331","host":"s3://npm-registry-packages-npm-production"}},"0.6.5":{"name":"pg-transactional-outbox","version":"0.6.5","description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"pg-transactional-outbox":"dist/index.js"},"author":{"name":"Frank Zehelein","email":"f_npm@zehelein.de","url":"https://zehelein.de/"},"homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","repository":{"type":"git","url":"git+https://github.com/Zehelein/pg-transactional-outbox.git"},"bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"license":"MIT","private":false,"keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"scripts":{"clean":"rimraf dist && rimraf tsconfig.tsbuildinfo","prepack":"yarn clean && tsc","test":"jest --detectOpenHandles src/","test:watch":"jest --watch --detectOpenHandles src/","test:coverage":"jest --coverage --detectOpenHandles","dev:watch":"tsc-watch","create:setup":"tsc && node ./dist/index.js"},"dependencies":{"async-mutex":"^0.5.0","pg":"^8.16.3","pg-logical-replication":"^2.2.1","pino":"^10.0.0"},"devDependencies":{"@types/node":"^24.7.1","@types/pg":"^8.15.5","@types/rascal":"^10.2.1","@types/wtfnode":"^0.10.0","jest":"^30.2.0","prettier":"^3.6.2","rimraf":"^6.0.1","ts-jest":"^29.4.5","ts-node":"^10.9.2","tsc-watch":"^7.2.0","typescript":"5.9.3","wtfnode":"^0.10.1"},"_id":"pg-transactional-outbox@0.6.5","gitHead":"aac88badf4c4a8d18ad967bc58e8f006a853099a","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-5sNdDPwL/gcBI/NH+OPMo9OX9f8MIu72rsdP0yjEnIuxxZPHHYbAmL0nuqkZeZ30x94dPWsBYjRbinleqUmT8w==","shasum":"17b9ea8a0649c0c0d0b3c2d2539791b24520caf2","tarball":"https://registry.npmjs.org/pg-transactional-outbox/-/pg-transactional-outbox-0.6.5.tgz","fileCount":238,"unpackedSize":565970,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCxGHVHtYGFVrWIfpMhlEfC0EVASDHIpE3iV3UetrFlwwIgThXEdW2ucADga6ElKW1CiWGpF3R7CoR+UdSsZsXaUrw="}]},"_npmUser":{"name":"zehelein","email":"f_npm@zehelein.de"},"directories":{},"maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pg-transactional-outbox_0.6.5_1769257506273_0.9161133042704568"},"_hasShrinkwrap":false}},"time":{"created":"2023-01-28T17:53:17.820Z","modified":"2026-01-24T12:25:06.555Z","0.1.0":"2023-01-28T17:53:17.984Z","0.1.1":"2023-01-28T20:27:55.548Z","0.1.2":"2023-01-28T21:02:17.988Z","0.1.3":"2023-01-28T22:57:20.924Z","0.1.4":"2023-05-15T21:27:59.176Z","0.1.5":"2023-09-11T07:53:22.737Z","0.1.6":"2023-09-15T15:21:19.752Z","0.1.7":"2023-09-18T10:13:14.442Z","0.1.8":"2023-09-21T14:09:07.653Z","0.1.9-beta.0":"2023-09-27T10:58:55.645Z","0.2.0":"2023-10-06T13:55:17.655Z","0.3.0-beta.0":"2023-10-17T13:52:38.279Z","0.3.0-beta.1":"2023-10-23T12:12:40.474Z","0.3.0-beta.2":"2023-10-23T12:45:44.626Z","0.3.0-beta.3":"2023-10-23T13:12:59.854Z","0.3.0-beta.4":"2023-11-07T15:18:09.204Z","0.3.0-beta.5":"2023-11-08T08:53:41.791Z","0.3.0-beta.6":"2023-11-08T10:25:34.965Z","0.3.0-beta.7":"2023-11-08T11:35:48.219Z","0.3.0":"2023-11-09T16:04:26.030Z","0.4.0-beta.1":"2023-11-23T15:34:20.880Z","0.4.0-beta.2":"2023-11-24T16:29:54.426Z","0.4.0-beta.3":"2023-11-27T12:25:26.618Z","0.4.0-beta.4":"2023-11-27T13:42:25.784Z","0.4.0-beta.5":"2023-11-28T12:21:03.039Z","0.4.0-beta.6":"2023-12-13T06:46:21.767Z","0.4.0-beta.7":"2023-12-15T07:02:38.770Z","0.4.0-beta.8":"2023-12-21T19:59:40.472Z","0.4.0-beta.9":"2023-12-22T11:39:43.187Z","0.4.0-beta.10":"2024-01-08T10:01:31.552Z","0.4.0-beta.11":"2024-01-09T08:12:28.776Z","0.4.0":"2024-02-02T08:30:50.744Z","0.5.0-beta.1":"2024-02-12T13:16:23.092Z","0.5.0-beta.2":"2024-02-12T15:24:10.988Z","0.5.0-beta.3":"2024-02-12T21:32:03.406Z","0.5.0-beta.4":"2024-02-13T11:40:35.856Z","0.5.0-beta.5":"2024-02-13T16:52:34.958Z","0.5.0-beta.6":"2024-02-14T13:03:21.325Z","0.5.0-beta.7":"2024-02-14T22:29:36.715Z","0.5.0-beta.8":"2024-02-15T09:24:58.409Z","0.5.0-beta.9":"2024-02-16T10:18:56.301Z","0.5.0-beta.10":"2024-02-17T21:52:43.870Z","0.5.0-beta.11":"2024-02-19T14:08:43.627Z","0.5.0-beta.12":"2024-02-20T12:46:57.731Z","0.5.0-beta.13":"2024-02-21T08:04:25.655Z","0.5.0-beta.14":"2024-02-21T09:07:51.775Z","0.5.0":"2024-02-21T15:09:44.561Z","0.5.1":"2024-02-28T10:07:32.107Z","0.5.2":"2024-02-29T15:32:03.005Z","0.5.3":"2024-03-04T12:25:04.529Z","0.5.4":"2024-03-19T13:27:59.176Z","0.5.5":"2024-03-20T12:16:01.052Z","0.5.6":"2024-04-23T12:32:49.673Z","0.5.7":"2024-05-10T08:04:22.802Z","0.5.8":"2024-09-18T16:22:39.867Z","0.6.0":"2025-01-14T19:42:56.439Z","0.6.1":"2025-04-04T20:43:46.810Z","0.6.2":"2025-06-24T16:58:55.497Z","0.6.3":"2025-10-10T21:12:50.217Z","0.6.4":"2025-11-12T19:07:52.548Z","0.6.5":"2026-01-24T12:25:06.415Z"},"bugs":{"url":"https://github.com/Zehelein/pg-transactional-outbox/issues"},"author":{"name":"Frank Zehelein","email":"f_npm@zehelein.de","url":"https://zehelein.de/"},"license":"MIT","homepage":"https://github.com/Zehelein/pg-transactional-outbox/tree/master/lib#readme","keywords":["outbox","transactional-outbox","inbox","transactional-inbox","outbox-pattern","inbox-pattern","postgresql","postgres","logical-replication","pgoutput","microservices","typescript","nodejs"],"repository":{"type":"git","url":"git+https://github.com/Zehelein/pg-transactional-outbox.git"},"description":"A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).","maintainers":[{"name":"zehelein","email":"f_npm@zehelein.de"}],"readme":"# pg-transactional-outbox\n\nThe `pg-transactional-outbox` library implements the transactional outbox and\ntransactional inbox pattern based on PostgreSQL. It ensures that outgoing\nmessages are only sent when your code successfully commits your transaction. On\nthe receiving side, it ensures that a message is stored exactly once and that\nyour handler marks the message only as done when your code finishes\nsuccessfully.\n\n![postgresql_outbox_pattern](https://user-images.githubusercontent.com/9946441/211221740-a10d3c0b-dfa9-4c4e-84fb-068f6e63aaac.jpeg)\n_Message delivery via the PostgreSQL-based transactional outbox pattern\n(generated with Midjourney)_\n\nInstall the library\n[npmjs | pg-transactional-outbox](https://www.npmjs.com/package/pg-transactional-outbox)\ne.g. via\n\n```\nnpm i pg-transactional-outbox\n```\n\nor\n\n```\nyarn add pg-transactional-outbox\n```\n\n**Table of contents:**\n\n- [Context](#context)\n- [The patterns](#the-patterns)\n  - [What is the transactional outbox pattern](#what-is-the-transactional-outbox-pattern)\n  - [What is the transactional inbox pattern](#what-is-the-transactional-inbox-pattern)\n  - [Using PostgreSQL Logical Replication](#using-postgresql-logical-replication)\n  - [Using database polling](#using-database-polling)\n- [The pg-transactional-outbox library overview](#the-pg-transactional-outbox-library-overview)\n  - [Database server](#database-server)\n  - [Database setup](#database-setup)\n  - [Implementing the transactional outbox producer](#implementing-the-transactional-outbox-producer)\n  - [Implementing the transactional inbox consumer](#implementing-the-transactional-inbox-consumer)\n  - [Message format](#message-format)\n- [Strategies](#strategies)\n  - [Message handler strategies](#message-handler-strategies)\n  - [Replication listener strategies](#replication-listener-strategies)\n  - [Polling listener strategies](#polling-listener-strategies)\n- [Testing](#testing)\n\n# Context\n\nA service often needs to update data in its database and send events (when its\ndata was changed) and commands (to request some action in another service). All\nthe database operations can be done in a single transaction. But sending the\nmessage must (most often) be done as a separate action. This can lead to data\ninconsistencies if one or the other fails.\n\nStoring a product order in the Order Service but failing to send an event to the\nshipping service can lead to products not being shipped - case 1 in the diagram\nbelow. This would be the case when the database transaction succeeded but\nsending the event failed. Sending the event first and only then completing the\ndatabase transaction does not fix it either. The products might then be shipped\nbut the system would not know the order for which the shipment was done (case\n2).\n\nSimilar issues exist in the Shipment Service. The service might receive a\nmessage and start the shipment but fail to acknowledge the message. The message\nwould then be re-sent and if the operation is not done in an idempotent way\nthere might be two shipments for a single order (case 3). Or the message is\nacknowledged as handled but submitting the database transaction fails. Then the\nmessage is lost and the customer will not receive the goods (case 4).\n\n![postgresql_outbox_pattern](https://user-images.githubusercontent.com/9946441/286744174-d8df1317-ce78-4be3-94a1-c48f9bc57331.png)\n_Potential messaging pitfalls_\n\nOne way to solve this would be to use distributed transactions using a two-phase\ncommit (2PC). PostgreSQL supports the 2PC but many message brokers and event\nstreaming solutions like RabbitMQ and Kafka do not support it. And even if they\ndo, it would often not be good to use 2PC. Distributed transactions need to lock\ndata until all participating services commit their second phase. This works\noften well for a small number of services. But with a lot of (micro) services\ncommunicating with each other this often leads to severe bottlenecks.\n\n# The Patterns\n\nWhen delivering messages we mostly have three different delivery guarantees:\n\n- **At most once** - which is the most basic variant. It tries to send the\n  message but if it fails the message is lost.\n- **At least once** - this is the case when we guarantee that the message will\n  be delivered. But we make no guarantee on how often we send the message. At\n  least once - but potentially multiple times.\n- **Exactly once** - this is on the delivery itself most often considered to not\n  be possible. Multiple mechanisms need to play together to ensure that a\n  message is sent (at least) once but guaranteed to be processed (exactly) once.\n\nThe transactional outbox and transactional inbox pattern provide such a\ncombination that guarantees exactly-once **processing** (with at least once\ndelivery).\n\nYou might want to use the transactional inbox pattern in scenarios where the\nreliability and atomicity of message processing are important, such as in an\nevent-driven architecture where the loss or duplication of a message could have\nsignificant consequences.\n\nThis diagram shows the involved components to implement both the transactional\noutbox and the transactional inbox pattern. The following chapters explain the\ncomponents and the interactions in detail.\n\n![postgresql_outbox_pattern](https://github.com/Zehelein/pg-transactional-outbox/assets/9946441/ebb31b5e-519f-4ef6-9fa8-4c790d75ba20)\n_Components involved in the transactional outbox and inbox pattern\nimplementation_\n\n## What is the transactional outbox pattern\n\nThe transactional outbox pattern is a design pattern that allows you to reliably\n\"send\" messages within the context of a database transaction. It is used to\nensure that messages are only sent if the transaction is committed and that they\nare not lost in case of failure.\n\nThe transactional outbox pattern uses the following approach to guarantee the\nexactly-once processing (in combination with the transactional inbox pattern):\n\n1. Some business logic needs to update data in its database and send a message\n   (e.g. with details of the changes).\n2. It uses a database transaction to add all of the business data changes on the\n   one hand and it inserts the details of the message that should be sent into\n   an \"outbox\" table within the same database transaction. The message includes\n   the necessary information to send the message to the intended recipient(s),\n   such as the message payload and the destination topic or queue. This ensures\n   that either everything is persisted in the database or nothing. The\n   `outbox storage` component in the above diagram encapsulates the logic to\n   store messages in the outbox table.\n3. A background process notices when a new entry appears in the \"outbox\" table\n   and loads the message data.\n4. Now the message can be sent. This can be done via a message broker, an event\n   stream, or any other option. The outbox table entry is then marked as\n   processed _only_ if the message was successfully sent. In case of a\n   message-sending error, or if the outbox entry cannot be marked as processed,\n   the message is sent again. The `outbox listener` is responsible for this\n   step.\n\nThe third step can be implemented via the Polling-Publisher pattern or the\nTransactional Log Tailing pattern.\n\n- **Polling-Publisher**: a polling listener queries the outbox table on a\n  (short) interval. When unprocessed messages are found they can be sent.\n- **Transactional Log Tailing** (also called Capture-Based Log Tailing) reads\n  from the transactional log or change stream that contains the changes to the\n  outbox table. For PostgreSQL, this is handled with the Write-Ahead Log (WAL)\n  and logical replication which is depicted in the diagram and described further\n  down in more detail. Using this approach, the transactional outbox pattern can\n  be implemented with minimal impact on the database, as the WAL tailing process\n  does not need to hold locks or block other transactions.\n\nYou can read more about the transactional outbox pattern in this\n[microservices.io](https://microservices.io/patterns/data/transactional-outbox.html)\narticle.\n\n## What is the transactional inbox pattern\n\nThe _transactional inbox_ pattern targets the message consumer side of the\nprocess. It is a design pattern that allows you to reliably receive messages and\nprocess each message exactly once.\n\nThe transactional inbox pattern uses the following approach to guarantee the\nexactly-once processing (in combination with the transactional outbox pattern):\n\n1. A message is sent to a message broker (such as RabbitMQ) and stored in a\n   queue, event stream, or any other location.\n2. A background process consumes messages from the queue and inserts them into\n   an \"inbox\" table in the database. The process uses the unique message\n   identifier to store the message in the inbox as the primary key. This ensures\n   that each message is only written once to this database table even if the\n   same message was delivered multiple times (deduplication). The\n   `inbox storage` component from the above diagram handles this step.\n3. A consumer process receives the messages that were stored in the inbox table\n   and processes them. It uses a transaction to store all the service-relevant\n   data and mark the inbox message in the inbox table as processed. If an error\n   happens during message processing the message can be retried for a\n   configurable amount of attempts. This is done by the `inbox listener` in the\n   above diagram.\n\nStep three can be implemented again as a Polling-Publisher or via the\nTransactional Log Tailing approach like for the outbox pattern.\n\n## Using PostgreSQL Logical Replication\n\nPostgreSQL logical replication is a method that offers the possibility of\nreplicating data from one PostgreSQL server to another PostgreSQL server or\nother consumer. It works by streaming the changes that are made to the data in a\ndatabase in a logical, row-based format, rather than replicating at the physical\nstorage level.\n\nThis is achieved by using a feature called \"Logical Replication Slot\", which\nallows the primary PostgreSQL server (publisher) to stream changes made to a\nspecific table or set of tables to a replication client. The client can then\napply these changes to its own database (effectively replicating the data). Or\nmore generally the client can use those changes for any kind of\nupdates/notifications.\n\nThe replication process begins with the creation of a replication slot on the\nprimary database server. A replication slot is a feature on the PostgreSQL\nserver that persists information about the state of replication streams.\nReplication slots serve to retain WAL (Write-Ahead Logging) files on the\npublisher, ensuring that the required logs for replication are not removed\nbefore the subscribing server received them. It keeps track of the last WAL\nlocation that was successfully sent to the subscriber, so that upon reconnection\nafter a disconnect, replication can resume from that position without missing\nany data. In the transactional outbox/inbox pattern case, the outbox and inbox\ntables are replicated.\n\nA publisher prepares and sends the stream of data changes from specified tables\nto the subscribers. For the transactional outbox and inbox scenario the outbox\nand inbox tables are configured for publication. The publisher creates a set of\nchanges that need to be replicated based on inserts, updates, and deletes on the\npublished tables. These changes are sent in the form of \"WAL records\"\n(Write-Ahead Log records). Publications are used in conjunction with\nsubscriptions to set up logical replication from the publisher to the\nsubscriber.\n\nWhen the subscriber (client) connects to the publisher, it specifies the name of\nthe logical replication slot it wants to use. The publisher uses this\ninformation to start streaming changes from the point in the WAL that is stored\nin the replication slot. As the subscriber receives changes, it updates the\nposition of the replication slot on the publisher to keep track of where it is\nin the stream. The position defines the last data record that the client\nsuccessfully consumed and acknowledged. It is not possible to acknowledge only\nspecific WAL records - everything up to this position is acknowledged.\n\nIn this way, the publisher and subscriber can maintain a consistent position in\nthe replication stream, allowing the subscriber to catch up with any changes\nthat may have occurred while it was disconnected.\n\n![postgresql_outbox_pattern](https://github.com/Zehelein/pg-transactional-outbox/assets/9946441/afcdcd08-5586-4a9d-85d6-9aeadca594d2)\n_Components involved in the transactional outbox and inbox logical replication\nimplementation_\n\n## Using database polling\n\nThe second approach handles messages when they are added to the transactional\ninbox or outbox is to use database polling. Your node.js application will query\nthose tables at regular intervals to see if new messages arrived. When\nunprocessed outbox messages are found they can be sent via e.g. a message\nbroker. For inbox messages, a message handler will be executed to handle the\nmessage.\n\nThis setup is purely based on the database and does not use logical replication:\n\n![postgresql_outbox_pattern](https://github.com/Zehelein/pg-transactional-outbox/assets/9946441/1591248b-fac1-4a02-82af-adf28b27e0a8)\n_Components involved in the transactional outbox and inbox logical replication\nimplementation_\n\n## Logical replication vs. polling\n\nThe logical replication and the polling listeners have different advantages and\ndisadvantages. Please check the following table to get an overview and also the\nnext section about considerations to operate such a solution.\n\nBoth listeners can be used interchangeably with minor differences on the\nconcurrency strategies. Switching from one listener type to another during\ndevelopment time requires not much code changes. Switching in production is easy\nfrom logical replication to polling. The way around you have to make sure that\nthe replication slot is generated upfront. Then let the listener process the\nlatest messages and restart the service. Some messages will be attempted twice\nbut this is handled by the checks on the processed/abandoned at database fields.\n\n| Area               | Logical Replication                                                  | Polling                                                                              |\n| ------------------ | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |\n| Scaling            | Only a single instance can connect to the replication slot.          | Multiple instances can poll from the same table.                                     |\n| Lag                | Receives new messages immediately.                                   | Must poll on a (short) timeout for new messages. Can be improved with LISTEN/NOTIFY. |\n| DB load            | Listening to new messages does not use the database itself.          | Polling the database for new messages puts load on the database.                     |\n| Setup              | Logical replication must be enabled. A replication role is required. | No special settings are needed.                                                      |\n| Message priority   | Will receive messages sequentially. Picking newer messages is hard.  | Can implement any selection algorithm based on segments or other fields.             |\n| Sequential order   | Guaranteed sequential ordering same as transactions were committed.  | Sequential processing only on created_at date which may not be unique.               |\n| Quick Retries      | Receives messages again immediately when some error ocurred.         | The locked_until colum might not be reset on error. Next retry needs to wait.        |\n| Scheduled Retries  | Processes messages sequentially. May delete and re-add message.      | Can use the locked_until field to schedule messages for a later point in time.       |\n| DB degrading       | When a replication slot is not active disk space may run out.        | When messages are not deleted the polling will slow down over time.                  |\n| Migration/Failover | To guarantee same LSNs only some migration types are available.      | Can use any available migration or failover option.                                  |\n\n## Operational notes\n\nGeneral considerations for both approaches:\n\n- Like any other service functionality it is important to monitor the\n  functionality of the listeners. This could be done by checking the amount of\n  unprocessed messages in the inbox/outbox. Or by sending and receiving a test\n  message and time the duration.\n\n### Logical replication approach\n\nThe following points are important when operating the logical replication\napproach for using the transactional outbox and inbox:\n\n- When the logical replication approach is used there must be a consumer that\n  reads from the WAL and acknowledges the LSN numbers. If the consumer is down\n  for longer periods the database server must retain the WAL files which can\n  fill up the disk and bring down the full database server. Good monitoring is\n  mandatory. You can check the maximum wal size, the retention period, and the\n  wal file size configuration values. PostgreSQL will do a roll-over of old WAL\n  files if you configure a maximum size. This would mean old message\n  notifications are lost. Removing and adding all messages again in the order of\n  the created_at field could be used as a recovery strategy.\n- The name of a replication slot must be unique at the PostgreSQL server level.\n- Migrating a database when using the logical replication approach is tricky. It\n  tracks the processing progress based on the LSN numbers of the database. When\n  the database is migrated or a failover happens the replication slot must be\n  manually recreated on the new instance. Possible solutions:\n  - [Patroni configured slots](https://patroni.readthedocs.io/en/latest/dynamic_configuration.html)\n  - [pg_failover_slots](https://github.com/EnterpriseDB/pg_failover_slots)\n  - Manually: Create the replication slot on the new database server. Stop your\n    application so no new inbox/outbox messages arrive. Switch the service to\n    the new database. Messages that arrived during that time will be pushed to\n    the listener. But as the messages were marked as processed, the message\n    processing will stop.\n- The replication role has built-in permissions to list and delete all\n  replication slots on the database server. If the database server is shared it\n  is not possible to secure against replication slot deletions.\n- With the logical replication approach, it is not that important to delete\n  outbox and inbox messages quickly as the tables are not queried much besides\n  based on their unique ID.\n\n### Polling approach\n\nThe polling approach has not that many special considerations. It will put\nhigher load on the database due to the polling approach but is generally easier\nto maintain.\n\n- On the polling listener, it is important to delete messages from the outbox\n  and inbox tables to increase polling performance. A tradeoff must be taken\n  between the performance by deleting messages and the message deduplication\n  possibilities by keeping the messages longer.\n\n# The pg-transactional-outbox library overview\n\nThis library implements the transactional outbox and inbox pattern using a\nPostgreSQL server. It implements both the Transactional Log Tailing approach via\nthe PostgreSQL Write-Ahead Log (WAL) and the polling listener.\n\nYou can use the library in your node.js projects that use a PostgreSQL database\nas the data store and some message sending/streaming software (e.g. RabbitMQ or\nKafka).\n\n## Database server\n\nThis library was tested with PostgreSQL servers starting from version 14. But it\nshould most likely work with versions starting from version 12.\n\n### Polling Listener Setup\n\nNo special extensions or settings are required for the polling listener setup.\n\n### Logical Replication Setup\n\nFor the logical replication setup, the PostgreSQL database server itself must\nhave the `wal_level` configured as `logical`. This enables the use of the WAL to\nbe notified on e.g. new inserts. You should also check the `max_wal_senders`,\nthe `max_wal_size`, and the `min_wal_size` settings to contain values that match\nyour architecture. Setting a large size could consume/max out the disk space.\nSetting the value too low could lead to lost events in case your WAL consumer is\ndown for a longer duration. An example `postgres.conf` file is shown in the\n`./infra` folder. This folder includes also a `docker-compose.yml` file to set\nup a PostgreSQL server with these default values (and a RabbitMQ instance for\nrunning the examples).\n\nThis library uses the standard PostgreSQL logical decoding plugin `pgoutput`.\nThis plugin is directly part of PostgreSQL since version 9.4. Other alternatives\nwould be `wal2json` or `decoding-json` but those are not used in this library.\n\n## Database setup\n\nTo support the transactional outbox and inbox implementation you need to create\nan outbox and an inbox table in your PostgreSQL database. You should create two\ndatabase roles: one for the message handler and one for the message listener.\nYou must grant those roles permission to the tables.\n\nThe inbox and the outbox tables and the corresponding structure are identical.\nThey can reside in the same database if your service uses both the outbox and\nthe inbox pattern which is often the case for distributed services.\n\nYou can manually create the required database structure or (suggested) use this\nlibrary to help you with this task.\n\nThe easiest way is to use the CLI tool to generate the SQL scripts and the .ENV\nsettings file for you. You can find the CLI tool in the `./examples/setup/`\nfolder. It will guide you by asking the required values from you.\n\n```shell\nyarn dev:watch\n```\n\nYou can find the example SQL scripts in the following two files which you can\nalso use and adjust.\n\n- `examples/setup/out/example-trx-polling.sql` (for polling listener)\n- `examples/setup/out/example-trx-replication.sql` (for replication listener)\n\nIf you do not want to run the generated SQL scripts e.g. as part of your\napplication migration you can also set up the database from a node.js\napplication. The library offers you a `DatabaseSetup` helper to create the\nrequired tables etc. in your database. You can do this from within your codebase\nbased on the configuration settings that you provide. Both the inbox and outbox\nstructure are created in the same way so you call the same functions but with\ndifferent configurations.\n\n### Logical Replication Setup\n\nIf you use the logical replication approach, the database listener role needs\nthe replication permission. As this role has a lot of rights it is not advised\nto give the replication permission to the same role that reads and mutates the\nbusiness-relevant data.\n\n> **NOTE**: the replication slot name is database **server** unique! This means\n> if you use the transactional inbox pattern on multiple databases within the\n> same PostgreSQL server instance you must use different replication slot names\n> for each of them. When creating a new replication slot you must run that SQL\n> script in its own database transaction.\n\n### Polling Listener Setup\n\nFor the polling approach, you could use a single database role but it is still\nadvised to use two separate database roles. The roles should not have the\n`REPLICATION` permission.\n\n## Implementing the transactional outbox producer\n\nThe following code shows the producer side of the transactional outbox pattern.\nIt shows the usage in the outbox scenario to either use the logical replication\napproach with `initializeReplicationMessageListener` or the polling approach\nwith `initializePollingMessageListener`. They receive the messages when an\noutbox message is written to the outbox table. And the\n`initializeMessageStorage` generator function to store outgoing messages in the\noutbox table.\n\n```TypeScript\nimport process from 'node:process';\nimport { Pool } from 'pg';\nimport {\n  GeneralMessageHandler,\n  PollingListenerConfig,\n  ReplicationListenerConfig,\n  TransactionalMessage,\n  createReplicationMutexConcurrencyController,\n  getDefaultLogger,\n  initializeMessageStorage,\n  initializePollingMessageListener,\n  initializeReplicationMessageListener,\n} from 'pg-transactional-outbox';\n\n(async () => {\n  const logger = getDefaultLogger('outbox');\n\n  // Initialize the actual message publisher e.g. publish the message via RabbitMQ\n  const messagePublisher: GeneralMessageHandler = {\n    handle: async (message: TransactionalMessage): Promise<void> => {\n      // In the simplest case the message can be sent via inter process communication\n      process.send?.(message);\n    },\n  };\n\n  // You can also use ENV variables via getOutboxReplicationListenerSettings and\n  // getOutboxPollingListenerSettings to create the settings objects.\n  const dbListenerConfig = {\n    host: 'localhost',\n    port: 5432,\n    user: 'db_outbox_listener',\n    password: 'db_outbox_listener_password',\n    database: 'pg_transactional_outbox',\n  };\n  const baseSettings = {\n    dbSchema: 'public',\n    dbTable: 'outbox',\n    enableMaxAttemptsProtection: false,\n    enablePoisonousMessageProtection: false,\n  };\n  const replicationConfig: ReplicationListenerConfig = {\n    outboxOrInbox: 'outbox',\n    dbListenerConfig,\n    settings: {\n      ...baseSettings,\n      dbPublication: 'pg_transactional_outbox_pub',\n      dbReplicationSlot: 'pg_transactional_outbox_slot',\n    },\n  };\n  const pollingConfig: PollingListenerConfig = {\n    outboxOrInbox: 'outbox',\n    dbListenerConfig,\n    settings: {\n      ...baseSettings,\n      nextMessagesBatchSize: 5,\n      nextMessagesFunctionName: 'next_outbox_messages',\n      nextMessagesPollingIntervalInMs: 250,\n    },\n  };\n\n  // Initialize and start the listening for outbox messages. This listeners\n  // receives all the outbox table inserts from the WAL or via polling. It\n  // executes the messagePublisher handle function with every received outbox\n  // message. It cares for the at least once delivery.\n  let shutdownListener: () => Promise<void>;\n  if (process.env.LISTENER_TYPE === 'replication') {\n    const [shutdown] = initializeReplicationMessageListener(\n      replicationConfig,\n      messagePublisher,\n      logger,\n      {\n        concurrencyStrategy: createReplicationMutexConcurrencyController(),\n        messageProcessingTimeoutStrategy: (message: TransactionalMessage) =>\n          message.messageType === 'ABC' ? 10_000 : 2_000,\n      },\n    );\n    shutdownListener = shutdown;\n  } else {\n    const [shutdown] = initializePollingMessageListener(\n      pollingConfig,\n      messagePublisher,\n      logger,\n      {\n        messageProcessingTimeoutStrategy: (message: TransactionalMessage) =>\n          message.messageType === 'ABC' ? 10_000 : 2_000,\n      },\n    );\n    shutdownListener = shutdown;\n  }\n\n  // Initialize the message storage function to store outbox messages. It will\n  // be called to insert the outgoing message into the outbox table as part of\n  // the DB transaction that is responsible for this event.\n  const storeOutboxMessage = initializeMessageStorage(\n    replicationConfig,\n    logger,\n  );\n\n  // The actual business logic generates in this example a new movie in the DB\n  // and wants to reliably send a \"movie_created\" message.\n  const pool = new Pool({\n    host: 'localhost',\n    port: 5432,\n    user: 'db_outbox_handler',\n    password: 'db_outbox_handler_password',\n    database: 'pg_transactional_outbox',\n  });\n  const client = await pool.connect();\n\n  try {\n    // The movie and the outbox message must be inserted in the same transaction.\n    await client.query('START TRANSACTION ISOLATION LEVEL SERIALIZABLE');\n    // Insert the movie (and query/mutate potentially a lot more data)\n    const result = await client.query(\n      `INSERT INTO public.movies (title) VALUES ('some movie') RETURNING id, title;`,\n    );\n    // Define the outbox message\n    const message: TransactionalMessage = {\n      id: new Crypto().randomUUID(),\n      aggregateType: 'movie',\n      messageType: 'movie_created',\n      aggregateId: result.rows[0].id,\n      payload: result.rows[0],\n      createdAt: new Date().toISOString(),\n    };\n    // Store the message in the outbox table\n    await storeOutboxMessage(message, client);\n    // (Try to) commit the transaction to save the movie and the outbox message\n    await client.query('COMMIT');\n    client.release();\n  } catch (err) {\n    // In case of an error roll back the DB transaction - neither movie nor\n    // the outbox message will be stored in the DB now.\n    await client?.query('ROLLBACK');\n    client.release(true);\n    throw err;\n  }\n  await shutdownListener();\n})();\n```\n\n> **Please note:** This library offers to automatically delete outbox messages\n> from the outbox table. Keeping them for a while can be good to ensure that a\n> message is only generated once. But most often this is more of a concern on\n> the inbox side. Please configure your duration on how long the messages should\n> stay in this table. This can be seconds but also some minutes. You can define\n> different age thresholds for processed messages, abandoned ones, and a general\n> max age setting. To be safe you can add logic to not send messages anymore\n> that are older than these defined durations.  \n> As an alternative you could also create a `outbox_archive` table and write a\n> script to move the messages into that table instead of deleting them.\n\n### Outbox Storage\n\nThe outbox storage is used to store the message that should later be sent into\nthe `outbox` database table. The `initializeMessageStorage` is initialized to\nstore outbox messages:\n\n- `message`: the outbox message with a unique message ID and other relevant\n  data. It contains the message payload that is used on the receiving side to\n  act on such a message.\n- `client`: the database client with an open database transaction to handle both\n  the business logic database changes as well as store the outgoing message\n  within that transaction.\n\n### Outbox Listener\n\nThe `initializeReplicationMessageListener` is used to create and start the\nlogical replication-based listener that gets notified when a new outbox message\nis written to the outbox table. It takes the message publisher instance as an\ninput parameter and calls it to send out messages. Other parameters are the\n`config` object, a `logger` instance and an optional strategies object to\nfine-tune and customize specific aspects of the outbox listener.\n\nThe second option is to use the `initializePollingMessageListener` to use the\ndatabase polling approach to query for unprocessed outbox messages. It uses the\nsame handler to send out the message and the same logger. It has a (partly)\ndifferent configuration object and can optionally define also different\nstrategies.\n\nYou can build the configuration object from your code. Alternatively, you can\nuse `process.env` variables to provide the configuration values.\n\nThe easiest way to generate the .ENV files is to use the CLI tool which also\ngenerates the SQL scripts file. You can find the CLI tool in the\n`./examples/setup/` folder.\n\n```shell\nyarn dev:watch\n```\n\nYou can find the example ENV files here:\n\n- `examples/setup/out/example-trx-polling.env` (for polling listener)\n- `examples/setup/out/example-trx-replication.sql` (for replication listener)\n\nAll ENV variables can use one of the following three prefixes:\n\n- `TRX_OUTBOX_<variable>` - those variables are used to build the\n  outbox-specific settings for the desired listener.\n- `TRX_INBOX_<variable>` - those variables are used to build the inbox-specific\n  settings for the desired listener.\n- `TRX_<variable>` - those variable values are used for both the outbox and\n  inbox settings when no outbox or inbox-specific value is provided.\n\n| \\<PREFIX\\> + Variable Name                     | Type    | Default  | Description                                                                                                                                        |\n| ---------------------------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |\n| TRX_DB_SCHEMA                                  | string  | \"public\" | The database schema name where the table is located.                                                                                               |\n| TRX_MESSAGE_PROCESSING_TIMEOUT_IN_MS           | number  | 15000    | Stop the message handler after this time has passed.                                                                                               |\n| TRX_MAX_ATTEMPTS                               | number  | 5        | The maximum number of attempts to handle a message. With max 5 attempts a message is handled once initially and up to four more times for retries. |\n| TRX_MAX_POISONOUS_ATTEMPTS                     | number  | 3        | The maximum number of times a message should be attempted which was started but did not finish (neither error nor success).                        |\n| TRX_MESSAGE_CLEANUP_INTERVAL_IN_MS             | number  | 300000   | Time in milliseconds between the execution of the old message cleanups. Set it to zero to disable automatic message cleanup.                       |\n| TRX_MESSAGE_CLEANUP_PROCESSED_IN_SEC           | number  | 604800   | Delete messages that were successfully processed after X seconds.                                                                                  |\n| TRX_MESSAGE_CLEANUP_ABANDONED_IN_SEC           | number  | 1209600  | Delete messages that could not be processed after X seconds.                                                                                       |\n| TRX_MESSAGE_CLEANUP_ALL_IN_SEC                 | number  | 5184000  | Delete all old messages after X seconds.                                                                                                           |\n| TRX_OUTBOX_DB_TABLE                            | string  | \"outbox\" | The name of the database outbox table.                                                                                                             |\n| TRX_OUTBOX_ENABLE_MAX_ATTEMPTS_PROTECTION      | boolean | false    | Enable the max attempts protection.                                                                                                                |\n| TRX_OUTBOX_ENABLE_POISONOUS_MESSAGE_PROTECTION | boolean | false    | Enable the max poisonous attempts protection.                                                                                                      |\n| TRX_INBOX_DB_TABLE                             | string  | \"inbox\"  | The name of the database inbox table.                                                                                                              |\n| TRX_INBOX_ENABLE_MAX_ATTEMPTS_PROTECTION       | boolean | true     | Enable the max attempts protection.                                                                                                                |\n| TRX_INBOX_ENABLE_POISONOUS_MESSAGE_PROTECTION  | boolean | true     | Enable the max poisonous attempts protection.                                                                                                      |\n\nThe replication listener approach supports the following variables in addition\nto the above ones:\n\n| \\<PREFIX\\> + Variable Name          | Type   | Default                            | Description                                                                                          |\n| ----------------------------------- | ------ | ---------------------------------- | ---------------------------------------------------------------------------------------------------- |\n| TRX_RESTART_DELAY_IN_MS             | number | 250                                | When there is a message handling error, how long the listener should wait to restart the processing. |\n| TRX_RESTART_DELAY_SLOT_IN_USE_IN_MS | number | 10000                              | If the replication slot is in used, how long the listener should wait to connect again.              |\n| TRX_OUTBOX_DB_PUBLICATION           | string | \"transactional_outbox_publication\" | The name of the PostgreSQL publication that should be used for the outbox.                           |\n| TRX_OUTBOX_DB_REPLICATION_SLOT      | string | \"transactional_outbox_slot\"        | The name of the PostgreSQL replication slot that should be used for the outbox.                      |\n| TRX_INBOX_DB_PUBLICATION            | string | \"transactional_inbox_publication\"  | The name of the PostgreSQL publication that should be used for the inbox.                            |\n| TRX_INBOX_DB_REPLICATION_SLOT       | string | \"transactional_inbox_slot\"         | The name of the PostgreSQL replication slot that should be used for the inbox.                       |\n\nThe polling listener approach supports the following variables in addition to\nthe above ones:\n\n| \\<PREFIX\\> + Variable Name               | Type   | Default                | Description                                                                          |\n| ---------------------------------------- | ------ | ---------------------- | ------------------------------------------------------------------------------------ |\n| TRX_NEXT_MESSAGES_FUNCTION_SCHEMA        | string | \"public\"               | The database schema of the next messages function.                                   |\n| TRX_NEXT_MESSAGES_BATCH_SIZE             | number | 5                      | The (maximum) amount of messages to retrieve in one query.                           |\n| TRX_NEXT_MESSAGES_LOCK_IN_MS             | number | 5000                   | How long the retrieved messages should be locked before they can be retrieved again. |\n| TRX_NEXT_MESSAGES_POLLING_INTERVAL_IN_MS | number | 500                    | How often should the next messages function be executed.                             |\n| TRX_OUTBOX_NEXT_MESSAGES_FUNCTION_NAME   | string | \"next_outbox_messages\" | The database function name to get the next batch of outbox messages.                 |\n| TRX_INBOX_NEXT_MESSAGES_FUNCTION_NAME    | string | \"next_inbox_messages\"  | The database function name to get the next batch of inbox messages.                  |\n\nAn example ENV file can then be:\n\n```shell\nTRX_DB_SCHEMA=messaging\nTRX_MESSAGE_PROCESSING_TIMEOUT_IN_MS=30000\n\nTRX_OUTBOX_DB_TABLE=outbox\nTRX_OUTBOX_ENABLE_MAX_ATTEMPTS_PROTECTION=false\nTRX_OUTBOX_ENABLE_POISONOUS_MESSAGE_PROTECTION=false\n\nTRX_INBOX_DB_TABLE=inbox\nTRX_INBOX_ENABLE_MAX_ATTEMPTS_PROTECTION=true\nTRX_INBOX_MAX_ATTEMPTS=5\nTRX_INBOX_ENABLE_POISONOUS_MESSAGE_PROTECTION=true\nTRX_INBOX_MAX_POISONOUS_ATTEMPTS=3\n...\n```\n\n### Message Publisher\n\nThe message publisher is responsible for the actual transport of the message to\nthe recipient(s). It receives the outbox `message` with all the fields -\nincluding the metadata. Based on the metadata the message publisher should send\nout the message. The messaging publisher logic or the used system is responsible\nfor guaranteeing at least once message delivery. You can find a RabbitMQ-based\nimplementation in the examples folder.\n\n## Implementing the transactional inbox consumer\n\nA minimalistic example code for the consumer of the published message using the\ntransactional inbox pattern is included below. The main functions are the\n`initializeInboxMessageStorage` function that is used by the actual message\nreceiver like a RabbitMQ-based message handler to store the incoming message\n(which was based on an outbox message) in the inbox table.\n\nThe other central functions are the `initializeReplicationMessageListener` or\nthe `initializePollingMessageListener`. The replication listener uses one\ndatabase connection based on a user with replication permission to receive\nnotifications when a new inbox message is created. The polling listener queries\nthe database regularly for new inbox messages.\n\nThe code uses a second database connection to open a transaction, load the inbox\nmessage from the database and lock it, execute the message handler\nqueries/mutations, and finally mark the inbox message as processed in the\ndatabase.\n\n```TypeScript\nimport { Pool } from 'pg';\nimport {\n  DatabaseClient,\n  IsolationLevel,\n  PollingListenerConfig,\n  ReplicationListenerConfig,\n  TransactionalMessage,\n  TransactionalMessageHandler,\n  createReplicationMultiConcurrencyController,\n  ensureExtendedError,\n  executeTransaction,\n  getDefaultLogger,\n  initializeMessageStorage,\n  initializePollingMessageListener,\n  initializeReplicationMessageListener,\n} from 'pg-transactional-outbox';\n\n/** The main entry point of the message producer. */\n(async () => {\n  const logger = getDefaultLogger('inbox');\n\n  // You can also use ENV variables via getInboxReplicationListenerSettings and\n  // getInboxPollingListenerSettings to create the settings objects.\n\n  // This configuration is used to start a transaction that locks and updates\n  // the row in the inbox table that was found from the inbox table. This connection\n  // will also be used in the message handler so every select and data change is\n  // part of the same database transaction. The inbox database row is then\n  // marked as \"processed\" when everything went fine.\n  const dbHandlerConfig = {\n    host: 'localhost',\n    port: 5432,\n    user: 'db_inbox_handler',\n    password: 'db_inbox_handler_password',\n    database: 'pg_transactional_inbox',\n  };\n  // Configure the replication role to receive notifications when a new inbox\n  // row was added to the inbox table. This role must have the replication\n  // permission.\n  const dbListenerConfig = {\n    host: 'localhost',\n    port: 5432,\n    user: 'db_inbox_listener',\n    password: 'db_inbox_listener_password',\n    database: 'pg_transactional_inbox',\n  };\n  const baseSettings = {\n    dbSchema: 'public',\n    dbTable: 'inbox',\n    enableMaxAttemptsProtection: true,\n    enablePoisonousMessageProtection: true,\n  };\n  const replicationConfig: ReplicationListenerConfig = {\n    outboxOrInbox: 'inbox',\n    dbHandlerConfig,\n    dbListenerConfig,\n    settings: {\n      ...baseSettings,\n      dbPublication: 'pg_transactional_inbox_pub',\n      dbReplicationSlot: 'pg_transactional_inbox_slot',\n    },\n  };\n  const pollingConfig: PollingListenerConfig = {\n    outboxOrInbox: 'inbox',\n    dbListenerConfig,\n    settings: {\n      ...baseSettings,\n      nextMessagesBatchSize: 5,\n      nextMessagesFunctionName: 'next_inbox_messages',\n      nextMessagesPollingIntervalInMs: 250,\n    },\n  };\n\n  // Create the database pool to store the incoming inbox messages\n  const pool = new Pool(replicationConfig.dbHandlerConfig);\n  pool.on('error', (err) => {\n    logger.error(ensureExtendedError(err, 'DB_ERROR'), 'PostgreSQL pool error');\n  });\n\n  // Initialize the inbox message storage to store incoming messages in the inbox\n  const storeInboxMessage = initializeMessageStorage(replicationConfig, logger);\n\n  // Initialize the message receiver e.g. based on RabbitMQ\n  // In the simplest scenario use the inter process communication:\n  process.on('message', async (message: TransactionalMessage) => {\n    await executeTransaction(\n      await pool.connect(),\n      async (client): Promise<void> => {\n        await storeInboxMessage(message, client);\n      },\n      IsolationLevel.ReadCommitted,\n    );\n  });\n\n  // Define an optional concurrency strategy to handle messages with the message\n  // type \"ABC\" in parallel while handling other messages sequentially based on\n  // their `segment` field value.\n  const concurrencyStrategy = createReplicationMultiConcurrencyController(\n    (message) => {\n      switch (message.messageType) {\n        case 'ABC':\n          return 'full-concurrency';\n        default:\n          return 'segment-mutex';\n      }\n    },\n  );\n\n  // Declare the message handler\n  const movieCreatedHandler: TransactionalMessageHandler = {\n    aggregateType: 'movie',\n    messageType: 'movie_created',\n    handle: async (\n      message: TransactionalMessage,\n      client: DatabaseClient,\n    ): Promise<void> => {\n      // Executes the message handler logic using the same database\n      // transaction as the inbox message acknowledgement.\n      const { payload } = message;\n      if (\n        typeof payload === 'object' &&\n        payload !== null &&\n        'id' in payload &&\n        typeof payload.id === 'string' &&\n        'title' in payload &&\n        typeof payload.title === 'string'\n      ) {\n        await client.query(\n          `INSERT INTO public.published_movies (id, title) VALUES ($1, $2)`,\n          [payload.id, payload.title],\n        );\n      }\n    },\n    handleError: async (\n      error: Error,\n      message: TransactionalMessage,\n      _client: DatabaseClient,\n      retry: boolean,\n    ): Promise<void> => {\n      if (!retry) {\n        // Potentially send a compensating message to adjust other services e.g. via the Saga Pattern\n        logger.error(\n          error,\n          `Giving up processing message with ID ${message.id}.`,\n        );\n      }\n    },\n  };\n\n  // Initialize and start the inbox listener\n  let shutdownListener: () => Promise<void>;\n  if (process.env.LISTENER_TYPE === 'replication') {\n    const [shutdown] = initializeReplicationMessageListener(\n      replicationConfig,\n      [movieCreatedHandler],\n      logger,\n      {\n        concurrencyStrategy,\n        messageProcessingTimeoutStrategy: (message: TransactionalMessage) =>\n          message.messageType === 'ABC' ? 10_000 : 2_000,\n        messageProcessingTransactionLevelStrategy: (\n          message: TransactionalMessage,\n        ) =>\n          message.messageType === 'ABC'\n            ? IsolationLevel.ReadCommitted\n            : IsolationLevel.RepeatableRead,\n      },\n    );\n    shutdownListener = shutdown;\n  } else {\n    const [shutdown] = initializePollingMessageListener(\n      pollingConfig,\n      [movieCreatedHandler],\n      logger,\n      {\n        messageProcessingTimeoutStrategy: (message: TransactionalMessage) =>\n          message.messageType === 'ABC' ? 10_000 : 2_000,\n        messageProcessingTransactionLevelStrategy: (\n          message: TransactionalMessage,\n        ) =>\n          message.messageType === 'ABC'\n            ? IsolationLevel.ReadCommitted\n            : IsolationLevel.RepeatableRead,\n      },\n    );\n    shutdownListener = shutdown;\n  }\n  await shutdownListener();\n})();\n```\n\n> **Please note:** This library offers to automatically delete inbox messages\n> from the inbox table. Keeping them for a while is required to ensure that a\n> message is only processed once (due to multiple deliveries or replay attacks).\n> Please configure your duration on how long the messages should stay in this\n> table. This can be a few minutes but also some days. You can define different\n> age thresholds for processed messages, abandoned ones, and a general max age\n> setting. To be safe you can add logic to not process messages anymore that are\n> older than these defined durations.  \n> As an alternative you could also create a `inbox_archive` table and write a\n> script to move the messages into that table instead of deleting them.\n\n### Message receiver\n\nThe message receiver is the counterpart to the message publisher. It receives\nthe transferred outbox message and has to store it in the inbox table. It is the\nresponsibility of the receiver to guarantee that the message is written to the\ninbox table via the inbox storage functionality. It can try it multiple times if\nneeded. You can find a RabbitMQ-based implementation in the examples folder.\n\n### Message Storage\n\nWhen a message is received it must use the inbox storage functionality to store\nthe message. The `initializeInboxMessageStorage` is used to create an inbox\nstorage instance. The inbox storage takes the incoming message and stores it in\nthe inbox table.\n\n### Inbox Listener\n\nThe `initializeReplicationMessageListener` is used to create and start the\nlogical replication-based listener that gets notified when a new inbox message\nis written to the inbox table. It takes the message publisher instance as an\ninput parameter and calls it to send out messages. Other parameters are the\n`config` object, a `logger` instance and an optional strategies object to\nfine-tune and customize specific aspects of the inbox listener.\n\nIt uses the same logic and settings as the outbox listener. Please check that\nsection for further explanations and available configuration values.\n\nThe inbox listener starts the actual message handling logic. This is most often\nmore complex and longer running. Therefor it is suggested to always enable the\nmaximum attempts protection and the poisonous message protection.\n\n### Message Handler\n\nThe message handler is a component that defines how to process messages. You can\nprovide a general one (`GeneralMessageHandler`) that handles all messages. This\nis often used for the outbox message handler which sends all messages to the\nsame message broker. It has the following interface:\n\n- `handle`: A function that contains the custom business logic to handle an\n  inbox message. It receives two parameters: `message` and `client`. The\n  `message` parameter is an object that contains the message id, payload, and\n  metadata. The `client` parameter is a database client that is part of a\n  transaction to safely handle the inbox message. The function should return a\n  promise that resolves when the message is successfully processed, or rejects\n  with an error if the message cannot be processed. The error will cause the\n  message to be retried later.\n- `handleError`: An optional function that contains the custom business logic to\n  handle an error that was caused by the `handle` function. It receives four\n  parameters: `error`, `message`, `client`, and `attempts`. The `error`\n  parameter is the error that was thrown in the `handle` function. The `message`\n  parameter is the same as in the `handle` function. The `client` parameter is a\n  database client that is part of a new transaction to safely handle the error.\n  The `attempts` parameter is an object that contains the current and maximum\n  number of times the message will be attempted. The function should return a\n  promise that resolves to a flag that defines if the message should be retried\n  (`transient_error`) or not (`permanent_error`).\n\nYou can also provide specific handlers (`TransactionalMessageHandler`) where\neach handles a specific aggregate type and message type. In addition to the\nabove interface it includes the following properties:\n\n- `aggregateType`: The name of the aggregate root type that the message belongs\n  to. For example, `movie`, `customer`, `product`, etc.\n- `messageType`: The name of the message type that the handler can handle. For\n  example, `movie_created`, `customer_updated`, `restock_product`, etc.\n\nThe message handler is used by the transactional outbox and inbox listeners to\nprocess messages in a reliable and consistent way. The service will invoke the\n`handle` function of the appropriate handler for each message in the inbox, and\nhandle any errors or retries using the `handleError` function if provided.\n\n## Message format\n\nMessages are the means to transport information in a structured way from the\nmessage producer to the message consumer.\n\nBoth the outbox and inbox message have the following properties:\n\n| Field Name       | Field Type | Description                                                                            |\n| ---------------- | ---------- | -------------------------------------------------------------------------------------- |\n| id               | string     | The unique identifier of the message. Used to ensure a message is only processed once. |\n| aggregateType    | string     | The type of the aggregate root (in DDD context) to which this message is related.      |\n| aggregateId      | string     | The unique identifier of the aggregate.                                                |\n| messageType      | string     | The type name of the event or command.                                                 |\n| segment          | string     | Way to group messages for parallel message execution.                                  |\n| concurrency      | string     | Cane be 'sequential' or 'parallel' for message processing                              |\n| payload          | object     | The message payload with the details for an event or instructions for a command.       |\n| metadata         | object     | Optional metadata used for the actual message transfer.                                |\n| lockedUntil      | string     | The date and time in ISO 8601 UTC format until the message is locked (polling only).   |\n| createdAt        | string     | The date and time in ISO 8601 UTC format when the message was created.                 |\n| startedAttempts  | number     | The number of times a message was attempted to be processed.                           |\n| finishedAttempts | number     | The number of times a message was processed (successfully or with a caught error).     |\n| processedAt      | string     | The date and time in ISO 8601 UTC format when the message was processed.               |\n| abandonedAt      | string     | The date and time in ISO 8601 UTC format when the message was abandoned.               |\n\n# Strategies\n\nThe strategy pattern is a behavioral design pattern that enables selecting an\nalgorithm at runtime. Instead of implementing a single algorithm directly, the\nlisteners receive run-time instructions as to which algorithm should be used.\nThis allows you to customize different parts of the message handling for\nconcurrency, retries, poisonous message handling, etc. By defining a common\ninterface for different scenarios you can use either existing code or write your\ncustom implementations.\n\n## Message handler strategies\n\n### Message processing timeout strategy\n\nThe `messageProcessingTimeoutStrategy` allows you to define a message-based\ntimeout on how long the message is allowed to be processed (in milliseconds).\nThis allows you to give more time to process \"expensive\" messages while still\nprocessing others on a short timeout. By default, it uses the configured\n`messageProcessingTimeoutInMs`.\n\n### Message processing Transaction level strategy\n\nThe replication listener lets you define the `messageProcessingTransactionLevel`\nper message. Some message processing may have higher isolation level\nrequirements than others. If no custom strategy is provided it uses the default\ndatabase transaction level via `BEGIN`.\n\n### Message processing DB client strategy\n\nMessages are processed in a database transaction that verifies from the\noutbox/inbox table if the message was not processed already and loads the\nretry-specific data. It handles also the business-logic related database work\n(especially for the inbox).\n\nSome message handlers may require a database role with elevated permissions\nwhile others can use more restricted users. With this strategy, you can return a\ndatabase client from your desired Pool in the `getClient` function. When the\nreplication listener is shut down it will call the `shutdown` function where you\ncan close your database pool and run other cleanup logic.\n\n### Message retry strategy\n\nWhen processing a message an error can be thrown. The transactional listener\ncatches that error and needs to decide if the message should be processed\nagain - or not. The `messageRetryStrategy` offers the possibility to customize\nthe decision if a message should be retried or not. By default, the\n`defaultMessageRetryStrategy` is used. It will retry the message up the\nconfigured value in the `maxAttempts` setting (including the initial attempt).\n\n### Poisonous message retry strategy\n\nA poisonous message is a message that causes the service to crash repeatedly and\nprevents other messages from being processed. To avoid this situation, the\nservice tracks the number of times a message is started and finished, regardless\nof the outcome (success or error). If the service crashes while processing a\nmessage, it will retry the message until it succeeds or reaches a maximum number\nof attempts.\n\nYou can customize the behavior of the service by changing the following options:\n\n- `settings.maxPoisonousAttempts`: This is the maximum number of times the\n  service will retry a message before marking it as poisonous.\n- `poisonousMessageRetryStrategy`: This is a function that determines whether a\n  message should be retried or not, based on the started and finished counts.\n  The default function is (started, finished) => started - finished >=\n  `maxPoisonousAttempts`, but you can implement your own logic and pass it as an\n  argument to the service constructor.\n\n### Message not found retry strategy\n\nWhen a message should be processed the listener tries to lock the message in the\ndatabase to get an exclusive lock. When the database is under very heavy load it\ncan happen, that the logical replication informs of a new message which can't be\nselected in the database yet. This setting allows to retry the message locking.\nYou can customize this behavior:\n\n- `settings.maxMessageNotFoundAttempts`: If the message was not found on the\n  first try, retry it that number of times. Default is zero.\n- `settings.maxMessageNotFoundDelayInMs`: If the message was not found, delay\n  the next attempt by that many milliseconds.\n\n## Replication listener strategies\n\n### Replication listener concurrency strategy\n\nThe outbox and inbox listeners process messages that are stored in their\ncorresponding tables. When they process the messages, you can influence the\nlevel of concurrency of the listeners. The default concurrency controller will\nuse a mutex to guarantee sequential message processing. Concurrency strategies\nare only used for the replication listener. The polling listener solves this on\nthe polling query side.\n\nThere are the following pre-build ones but you can also write your own:\n\n- `createFullConcurrencyController` - this controller allows the parallel\n  processing of messages without guarantees on the processing order.\n- `createMutexConcurrencyController` - this controller guarantees sequential\n  message processing across all messages.\n- `createSemaphoreConcurrencyController` - this controller allows the processing\n  of messages in parallel up to a configurable number.\n- `createReplicationSegmentMutexConcurrencyController` - this controller enables\n  sequential message processing based on the message \"segment\" discriminator.\n  The controller still guarantees sequential message processing but only across\n  messages with the same segment value.\n- `createMultiConcurrencyController` - this is a combined concurrency\n  controller. You can define which of the above controllers should be used for\n  different kinds of messages.\n\n### Replication listener restart time strategy\n\nWhen the outbox or inbox listener fails due to an error it is restarted. The\n`listenerRestartStrategy` is used to define how long it should wait before it\nattempts to start again. It allows you to decide (based on the error) to log or\ntrack the caught error.\n\nThe `defaultListenerRestartStrategy` checks if the error message is a PostgreSQL\nerror. If the PostgreSQL error is about the replication slot being in use, it\nlogs a trace entry and waits for the configured `restartDelaySlotInUseInMs`\ntime. Otherwise, it logs an error entry and waits for the configured\n`restartDelayInMs`.\n\nThe `defaultListenerAndSlotRestartStrategy` uses the same logic as the\n`defaultListenerRestartStrategy`. In addition, it checks if a PostgreSQL error\nis about the replication slot not existing (e.g. after a DB failover). Then it\ntries to create the replication slot with the connection details of the\nreplication user slot and waits for the configured `restartDelayInMs` to restart\nthe listener.\n\n## Polling listener strategies\n\n### Polling listener batch size strategy\n\nThe `PollingListenerBatchSizeStrategy` defines the batch size strategy how many\nmessages should be loaded at once.\n\nWhen using the default `defaultPollingListenerBatchSizeStrategy` batch size\nstrategy it returns the configured value from the `nextMessagesBatchSize`. But\nthe first few times until the batch size is reached it will respond to return\nonly one message. This protects against poisonous messages: if 5 messages would\nbe taken during startup all those 5 would be marked as poisonous if one of them\nfails.\n\n# Extensions\n\nYou can (exponentially) increase the time after which a message can be retried\nagain. You can set the locked_until to some configurable time/factor in the\nfuture for the polling listener approach. This can be done in the message error\nhandler.\n\nInstead of just deleting old messages, you could insert them into an\n\"outbox_archive\" and \"inbox_archive\" table when they are deleted from the main\ntables. This would help to debug production issues and allow you to copy\nmessages back to their main tables to do another retry.\n\nThis could be done via something like this:\n\n```sql\nCREATE OR REPLACE FUNCTION trg_outbox_archive()\n  RETURNS trigger AS\n$BODY$\nBEGIN\n\nINSERT INTO public.outbox_archive SELECT (OLD).*;\n\nRETURN NULL;\n\nEND;\n$BODY$\n  LANGUAGE plpgsql VOLATILE;\n\n\nDROP TRIGGER IF EXISTS after_delete_outbox ON public.outbox;\nCREATE TRIGGER after_delete_outbox\n  AFTER DELETE\n  ON public.outbox\n  FOR EACH ROW\n  EXECUTE PROCEDURE trg_outbox_archive();\n\n\nCREATE TRIGGER after_delete_outbox\n  AFTER DELETE\n  ON public.outbox\n  FOR EACH ROW\n  EXECUTE PROCEDURE trg_outbox_archive();\n```\n\n# Testing\n\nThe library has a large set of unit tests alongside the files that implement the\nactual logic. You can run the unit tests from the `lib` folder via `yarn test`\nand `yarn test:coverage`.\n\nThe `__tests__` folder contains integration tests that test the functionality of\nthe outbox and inbox listener implementation. The tests use the `testcontainers`\nlibrary to start up an actual PostgreSQL server. They test the functionality\nagainst an actual database and for resilience tests where the test container is\nstopped and restarted to test the library against an unreliable database\ninstance. You can simply run the `test` script to execute the tests.\n\nYou can manually test the implementation using the `examples/rabbitmq` producer\nand consumer implementations. Copy the `.env.template` files as `.env` files and\nadjust these files if needed. Especially the `LISTENER_TYPE` is useful to test\nthe replication vs. polling listener approach. To test the two example\napplications you can use `yarn dev:watch`.\n","readmeFilename":"README.md"}