{"_id":"@5app/region-sync","_rev":"7-3453c113a87b05fb4d4cf0976066c916","name":"@5app/region-sync","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@5app/region-sync","version":"1.0.0","keywords":["sns","sqs","pub-sub","pub","sub","region","aws","sync","queues","topics"],"author":{"name":"Sam Adams"},"license":"ISC","_id":"@5app/region-sync@1.0.0","maintainers":[{"name":"5app-bot","email":"bot@5app.com"},{"name":"charles5app","email":"charles@5app.com"},{"name":"ikhemissi","email":"iheb.khemissi@gmail.com"},{"name":"diondiondion","email":"diondiondion@gmail.com"},{"name":"adodson","email":"andrewjdodson@gmail.com"}],"homepage":"https://github.com/5app/region-sync#readme","bugs":{"url":"https://github.com/5app/region-sync/issues"},"dist":{"shasum":"9a791894633e857d2bf0f2b88c8b9ae9c69fd5ac","tarball":"https://registry.npmjs.org/@5app/region-sync/-/region-sync-1.0.0.tgz","fileCount":6,"integrity":"sha512-JLElsE34KMVXs/Xi1r/D6AgGSrMNwdqyHEBEmUVVhurVoQ/bjmnryRW/JaG2vCiJInb7WnVU/Kni7oJyW4PdJw==","signatures":[{"sig":"MEQCICuDghXALDn76I5LVYsiW6jbWfyJ6pucgNkjy7HODCINAiBypqEssc0gJbMK4eP4nZcG3bMKd2zV1k0rdNMEE7UFtA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8124,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcwXKCRA9TVsSAnZWagAA+54QAJRteZ7brlplU69DD6VQ\nVLAgUSqeuAZ7NvVXqv3WGd48bGwBXjnddz3G8fpguMLAZpciPdL1t++c8Hhr\nXC6RUPrnCHWoEjJFGeOZQdjYkYiNR0rwBDJZXT83nsZvXZJim6NmTjldMS93\n7IZ+i3Cg/OiPAmoCFCQCxiDYeZXxwZDV/MtgXSGYXeFFChsD0rAulL4K8ubU\ntKEyEKpXLSWSkV7ySW44qJHaRzOHyZjS2KNy2mERfIFt/w2wvOXclrfeXK8c\nVXnIsoBmEZSglMsj+O3/kCDKfFSi1NZJySKgpE8lR1PMngNsHKJAeNgK9xHT\nT+31XL091yjmFzc14h+VPLKJkCkjwtaPjL5KJRsDFtJb9e1uDkCYV11Y25mM\n25Wv5BcYONSjYJRPdSlbeT0XipAtqsyrHaHRuRRgS5t62gtI2gbSGoB+4yTc\nySuA9i0Hyx6JLnER3zN15pfB8y4KhtpJ5/zwiEaKkm/czUmeFFQDhshbR4Ko\nxfKoxaEWaisVnyK3aPo6/Y9F/53kkdJHpeu//XX4Qtr5DZ2utTeFZNWqoJM/\n0U5Y62Y/ECfLO/pMq4YErF8JB51Mk7wY1eINY+VYfjroq/2zIfXMGjTsttIe\n3Oc8ecRTZlTXRtrEiVu2vc5VWx01cbu96oZl/h7Bi102pJ9G6aGi5YBTLmgK\nN0ux\r\n=PgDT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"pretty-quick --staged && npm run precommit-msg && npm run lint-diff"}},"engines":{"node":">=10.0.0"},"gitHead":"248bbd54adcb6b212a193292563c79fbfa2f6941","scripts":{"lint":"eslint ./","test":"tap --lines=100 --branches=84 --functions=100","lint-fix":"npm run lint -- --fix","lint-diff":"LIST=`git diff-index --name-only HEAD | grep '.*\\.js$';`; if [ \"$LIST\" ]; then eslint $LIST; fi","precommit-msg":"echo 'Running pre-commit checks... (skip using --no-verify)'","semantic-release":"semantic-release"},"_npmUser":{"name":"5app-bot","email":"bot@5app.com"},"commitlint":{"rules":{"subject-case":[2,"never",["start-case","pascal-case"]]},"extends":["@commitlint/config-conventional"]},"repository":{"url":"git+https://github.com/5app/region-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Utilities for syncing data between regions","directories":{},"_nodeVersion":"12.18.4","dependencies":{"aws-sdk":"^2.756.0","@5app/logger":"^2.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tap":"^14.10.8","nock":"^13.0.4","husky":"^4.3.0","eslint":"^7.9.0","prettier":"^2.1.2","pretty-quick":"^3.0.2","@commitlint/cli":"^11.0.0","semantic-release":"^17.1.2","eslint-config-5app":"^0.12.3","eslint-plugin-node":"^11.1.0","@semantic-release/git":"^9.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","@semantic-release/changelog":"^5.0.1","@commitlint/config-conventional":"^11.0.0"},"_npmOperationalInternal":{"tmp":"tmp/region-sync_1.0.0_1601373642117_0.5808241683840585","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@5app/region-sync","version":"1.0.1","keywords":["sns","sqs","pub-sub","pub","sub","region","aws","sync","queues","topics"],"author":{"name":"Sam Adams"},"license":"ISC","_id":"@5app/region-sync@1.0.1","maintainers":[{"name":"5app-bot","email":"bot@5app.com"},{"name":"charles5app","email":"charles@5app.com"},{"name":"ikhemissi","email":"iheb.khemissi@gmail.com"},{"name":"diondiondion","email":"diondiondion@gmail.com"},{"name":"adodson","email":"andrewjdodson@gmail.com"}],"homepage":"https://github.com/5app/region-sync#readme","bugs":{"url":"https://github.com/5app/region-sync/issues"},"dist":{"shasum":"a91d8a21a6da2153be63a3b27c3d4a9127b49d63","tarball":"https://registry.npmjs.org/@5app/region-sync/-/region-sync-1.0.1.tgz","fileCount":6,"integrity":"sha512-QK/qTUxDbo0+O+YIchpt/qPmNEVVkyVlWenuCFsiU7m1Vg6CDKwJmWUn4T0wXsEJEs5+7yNhbenMOC7ZNFMguQ==","signatures":[{"sig":"MEQCIH8xp/Q3MZ/Vsw+kd56jVOMpxyt/uPhqgybVRAYxSiusAiBcH4X/Sdqc4r9DBrRhK3M2IOmcoGu+sqaC871p2sQiPg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8461,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfczyTCRA9TVsSAnZWagAAJjQP/jBP1akaA4Vu6EoNITmu\nZwBLsqCymMWx21JAt44L/yF55eHe91FBbMLrneXM/ZVlBcfvc6BtqZLd7rr7\nXgeLO6ZiQGCvdSHv0PaPdc6IzwbuVQZfAjUbpA6f70FTcLXG62Kj5PEet4QB\neXOEM/oiHADBd4F8CFXY+9EESsWorw+zP3/guozKcT3c/ziYIxR44m1iaDJr\nX80iB9vYlBVB+pDjldLsaZkN78wOkF86omyANLE1YDojQZmzxVTR/ekDX8g6\nk80gy2J27wcF3UTthpxwblmRTlMEvNouL52oyCaBmy0ornc0VQzJmc30qLlq\nY0l+lOSJ1RqLnoz/j2YR2Mh6pZ60kALVt4LxVVW6GONWyEAaa7Z4Ob1iHx3H\nT+ed8tZmMiOVxeq/ov5j5GSJgLVF26mpDjqAxrM1tmcDd1lWOM7fF/nXrA/P\ny4DpJwjLskfY0fPexpk89/YAaRDvMO/WmlUQ/Xvgc8fl/YxPSzYf1SCD/r//\nVCbDRTB8Bz58SJ+6zGWkRwImtHb1+kedD+EUkBot8JEpgg4FI/z8WlpevbV3\n71U5a/QNcncxCM0L7OWB/QQ3KPPt6tJi0ia+6P8KPSXJipnsBANAe3Apdwls\nevF7KFpVSUtavKb9Ja8D9G+ys/OzNiplwgToqJjt3Io9hiQvAf61rANH1d0L\ndtM8\r\n=RGnS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"pretty-quick --staged && npm run precommit-msg && npm run lint-diff"}},"engines":{"node":">=10.0.0"},"gitHead":"b581d416a48423612fc6bdb56f2cb879ea7ac059","scripts":{"lint":"eslint ./","test":"tap --lines=100 --branches=84 --functions=100","lint-fix":"npm run lint -- --fix","lint-diff":"LIST=`git diff-index --name-only HEAD | grep '.*\\.js$';`; if [ \"$LIST\" ]; then eslint $LIST; fi","precommit-msg":"echo 'Running pre-commit checks... (skip using --no-verify)'","semantic-release":"semantic-release"},"_npmUser":{"name":"5app-bot","email":"bot@5app.com"},"commitlint":{"rules":{"subject-case":[2,"never",["start-case","pascal-case"]]},"extends":["@commitlint/config-conventional"]},"repository":{"url":"git+https://github.com/5app/region-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Utilities for syncing data between regions","directories":{},"_nodeVersion":"12.18.4","dependencies":{"aws-sdk":"^2.756.0","@5app/logger":"^2.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tap":"^14.10.8","nock":"^13.0.4","husky":"^4.3.0","eslint":"^7.9.0","prettier":"^2.1.2","pretty-quick":"^3.0.2","@commitlint/cli":"^11.0.0","semantic-release":"^17.1.2","eslint-config-5app":"^0.12.3","eslint-plugin-node":"^11.1.0","@semantic-release/git":"^9.0.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","@semantic-release/changelog":"^5.0.1","@commitlint/config-conventional":"^11.0.0"},"_npmOperationalInternal":{"tmp":"tmp/region-sync_1.0.1_1601387666886_0.003831669660429027","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@5app/region-sync","version":"1.0.2","keywords":["sns","sqs","pub-sub","pub","sub","region","aws","sync","queues","topics"],"author":{"name":"Sam Adams"},"license":"ISC","_id":"@5app/region-sync@1.0.2","maintainers":[{"name":"5app-bot","email":"bot@5app.com"},{"name":"charles5app","email":"charles@5app.com"},{"name":"ikhemissi","email":"iheb.khemissi@gmail.com"},{"name":"diondiondion","email":"diondiondion@gmail.com"},{"name":"adodson","email":"andrewjdodson@gmail.com"}],"homepage":"https://github.com/5app/region-sync#readme","bugs":{"url":"https://github.com/5app/region-sync/issues"},"dist":{"shasum":"6111f477d4ec5be39b902093933409c9406c12e7","tarball":"https://registry.npmjs.org/@5app/region-sync/-/region-sync-1.0.2.tgz","fileCount":6,"integrity":"sha512-R+G5oXEEwC3Aag3Fj4635pWuzDwbOzyAim7o8cRdRnWuQhuM71gbGLsvTuHcxIstnPiu60cOe1kgslUbyb4iew==","signatures":[{"sig":"MEUCIQC+/3SoodUqdcmc5IRVXTO+YBVOi4jTBgCVrnbVPA14IgIgbM7bzgwgQuozquZdc2K5ed+onSgDvFyc7Va2euoFm10=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8763,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft/E2CRA9TVsSAnZWagAA65gQAJqWJ9x1yPVAGER7rBz3\noItOmI73OSIE/nFrv4cSqhztLyrGjCMphz1Gua5KlUOuCT2X1+tzgnQjk+7z\nshsIg3n301TPyxMmR0pTd3H6Tge21lz9IPTagFLR+fieCdm7UvrOeIrqANrj\n5laIP0263u5YnMyaFkPWNj4k319BiazEOP9AqpY00enlm05YqYgE7gzxkBNv\n9udEAtjiQw5CzWjNQQDrblJI65XUwS2kO1turbKS9J5y4AM94g2hTIqce7vz\nz/OsVDow1iVZfL9SPRkvF//hTDQBTs6KcAdsen9bo0kxwqUKhlSbtPu6huyC\nJ/r4B/AIFtlhIFbKHnCTrhUVxy3wUecn7o0mWDDlAoOvGDTwVtej5PvOiXl9\nPvk5MHssHnJ4FnvV2o2fJzdW4mSPP2HmNkiG43nik7WzBHvqYIGYgu/3NZM8\nySbc1okZJhxaEEKf/+SmbthONamg/EW0cHgt5GkBfC45FIWFuMfs6I+yhk8w\n1DfZUVhGbE7uD13Ju5ZPQddEuDKx3uYVtzXrNRLHUXTCtP3PDxqUMGUJVwU6\nkdbr1o/tdtVWNDJ/zAaX9QcRo5H6nCREH+ADd2EhANVFFgyxSOPe+iOlMiZJ\n7qXOjCzMzU/zOCC9C2D4SnrxvEsrY7caqCOTnWvYUPSVSc2h+LSWuDax6x+l\nln30\r\n=2CzS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS","pre-commit":"npm run precommit"}},"engines":{"node":">=10.0.0"},"gitHead":"a992342d7ab864a413ca1e49d0db4335cb82ac30","scripts":{"lint":"eslint ./","test":"tap --lines=100 --branches=84 --functions=100","lint-fix":"npm run lint -- --fix","lint-diff":"LIST=`git diff-index --name-only HEAD | grep '.*\\.js$';`; if [ \"$LIST\" ]; then eslint $LIST; fi","precommit":"pretty-quick --staged && npm run precommit-msg && npm run lint-diff","precommit-msg":"echo 'Running pre-commit checks... (skip using --no-verify)'","semantic-release":"semantic-release"},"_npmUser":{"name":"5app-bot","email":"bot@5app.com"},"commitlint":{"rules":{"subject-case":[2,"never",["start-case","pascal-case"]]},"extends":["@commitlint/config-conventional"]},"repository":{"url":"git+https://github.com/5app/region-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Utilities for syncing data between regions","directories":{},"_nodeVersion":"14.15.1","dependencies":{"aws-sdk":"^2.796.0","@5app/logger":"^2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tap":"^14.11.0","nock":"^13.0.5","husky":"^4.3.0","eslint":"^7.13.0","prettier":"^2.2.0","pretty-quick":"^3.1.0","@commitlint/cli":"^11.0.0","semantic-release":"^17.2.4","eslint-config-5app":"^0.12.3","eslint-plugin-node":"^11.1.0","@semantic-release/git":"^9.0.0","eslint-config-prettier":"^6.15.0","eslint-plugin-prettier":"^3.1.4","@semantic-release/changelog":"^5.0.1","@commitlint/config-conventional":"^11.0.0"},"_npmOperationalInternal":{"tmp":"tmp/region-sync_1.0.2_1605890358233_0.18963831537731513","host":"s3://npm-registry-packages"}}},"time":{"created":"2020-09-29T10:00:41.897Z","modified":"2026-03-09T12:25:24.926Z","1.0.0":"2020-09-29T10:00:42.213Z","1.0.1":"2020-09-29T13:54:27.016Z","1.0.2":"2020-11-20T16:39:18.347Z"},"bugs":{"url":"https://github.com/5app/region-sync/issues"},"author":{"name":"Sam Adams"},"license":"ISC","homepage":"https://github.com/5app/region-sync#readme","keywords":["sns","sqs","pub-sub","pub","sub","region","aws","sync","queues","topics"],"repository":{"url":"git+https://github.com/5app/region-sync.git","type":"git"},"description":"Utilities for syncing data between regions","maintainers":[{"email":"andrewjdodson@gmail.com","name":"adodson"},{"email":"bot@5app.com","name":"5app-bot"},{"email":"sarah@5app.com","name":"shoub"},{"email":"webmaster@5app.com","name":"5app-webmaster"},{"email":"robert.dexter@5app.com","name":"robert.dexter"},{"email":"rob@5app.com","name":"rob-mackenzie"}],"readme":"# region sync\n\n[![Known Vulnerabilities](https://snyk.io/test/github/5app/region-sync/badge.svg)](https://snyk.io/test/github/5app/region-sync)\n[![CircleCI](https://circleci.com/gh/5app/region-sync.svg?style=shield)](https://circleci.com/gh/5app/region-sync)\n\nWraps SNS/SQS with some boilerplate logic we use for syncing data between regions:\n\nSNS+SQS:\n\n1. structure all messages with `date`, `fromRegion` and JSON encoded `payload`.\n\nSQS:\n\n1. prevents handlers being called if source + dest regions are the same\n1. deletes messages after handler has handled (if successful)\n1. sets up the continuous long poll\n\n## SQS usage:\n\n```javascript\nconst {createHandler} = require('@5app/region-sync');\nconst queueUrl = 'http://localhost:4576/000000000000/fooq';\nconst handler = createHandler({\n\tbackoffSeconds: 4,\n\tlongPollSeconds: 1,\n\tcurrentRegion: 'us-east-1',\n});\n\nhandler.addQueueHandler(queueUrl, async function (msg) {\n\t// handle it, but if promise rejects, the message wont be removed.\n});\n```\n\n## SNS usage:\n\n```javascript\nconst {createPublisher} = require('@5app/region-sync');\nconst payload = {foo: 'bar'};\nconst publisher = createPublisher({\n\tcurrentRegion: 'us-east-1',\n\tsnsRegion: 'us-east-1',\n});\nawait publisher.publish(topicArn, payload);\n```\n\n## testing\n\n```\nLOGS_LEVEL=info npm test\n```\n","readmeFilename":"README.md"}